Giter Site home page Giter Site logo

docker-cheatsheet's Introduction

docker-cheatsheet

cheat sheet for docker

Docker基础概念

1.镜像(image)

镜像是面向Docker引擎的、能够为应用提供创建运行时环境只读模板, 主要包括文件系统和一些参数

官方文档解释:An image is a filesystem and parameters to use at runtime. It doesn’t have state and never changes.

镜像为应用运行时环境的创建和分享,提供了一种便捷的手段。

2.容器(container)

容器是从镜像创建的运行时实例,可以将其启动、开始、停止、删除,容器之间相互隔离、互不可见。

镜像是只读的,但在容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身仍将保持不变。 就像用ISO装系统之后,ISO文件本身并没有什么变化一样。

3.仓库(repository)

像Github这样的代码仓库是用来保存代码的,Docker仓库则是用来集中存放镜像的。

Docker仓库保存在注册服务器(registry)上。

一个注册服务器上可保存多个镜像仓库,通常一个镜像仓库保存某一类的多个镜像, 多个镜像用不同的标签(tag)来区分。

例如:存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。

根据存储的镜像公开分享与否,Docker仓库分为如下两种:

  • 公开仓库(Public)
    • 最大的公开仓库是Docker Hub
    • 国内的公开仓库包括Docker Pool等,可以提供稳定的国内访问
  • 私有仓库(Private):
    • Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。

镜像常用操作

  • 从仓库获取镜像
docker pull 镜像名称:镜像标签

如:docker pull docker/whalesay、docker pull centos:latest

  • 查看镜像
docker images
docker images -a 或 docker images --all(列出全部)
docker images -q 或 docker images --quiet(只显示数字格式的IMAGE ID)
当然也可以混合参数使用:docker iamges -qa
docker images --tree 查看所有层
  • 创建镜像
方法一:通过Dockerfile创建镜像
docker build <Dockerfile所在路径 或 URL 或 -(即从标准输入读入)>
例如:docker build -t docker-whale . (其中,-t 用于设置仓库名和标签名)
方法二:基于已有镜像创建
docker commit
方法三:从镜像导出的文件恢复
docker import
  • 搜索镜像
docker search 镜像名称

删除镜像

docker rmi 镜像名称或镜像ID
docker rmi -f 镜像名称或镜像ID
  • 启动镜像
docker run 镜像名称

容器常用操作

  • 查看容器
docker ps -a
docker ps -l 只查看最后一个容器 
docker login

docker push

 

打印容器的标准输出

docker logs

docker stop

docker version

docker run -P 容器内外使用相同的端口

docker run -i 交互式执行

docker run -t 分配一个伪终端

docker run -p port_host:port_container

docke run --name web 指定容器名

docker run -v /container-dir 添加一个data volume(容器内的路径/inside_path)

docker run -v host-dir:/container-dir 以mount方式添加一个data volume container-dir必须绝对路径


docker run -v host-dir:/container-dir:ro 只读方式挂载data volume


docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash 只挂在一个文件而非目录

docker run --rm -v /foo -v awesome:/bar busybox top 默认情况下data volume是持久的,删除容器也不会删掉data volume,这里通过--rm指定了data volum在删除容器时也跟随着一起被删除

查看映射到宿主机的端口

docker port CONTAINER_NAME | CONTAINER_ID  CONTAINER_PORT

查看标准输出(-f类似于tail -f)

docker logs -f CONTAINER_NAME

docker top CONTAINER_NAME 查看进程

docker inspect CONTAINER_NAME 查看容器配置和状态信息(JSON格式)

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER_NAME 


docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER_NAME 


docker start CONTAINER_NAME

docker rm CONTAINER_NAME

在容器中执行命令

docker attach attach到一个已经运行的容器的stdin,然后进行命令执行的动作。 
但是需要注意的是:如果从这个stdin中exit,会导致容器的停止

docker exec -i -t CONTAINER_NAME CMD

docker exec -d CONTAINER_NAME CMD 在后台执行CMD

持久化

  • 镜像持久化
docker images
docker save image-name > /home/image-saved.tar
docker load < /home/image-saved.tar 
  • 容器持久化
docker ps -a
docker export <CONTAINTER_ID> /home/container-exported.tar
cat /home/container-exported.tar | sudo docker import - new-container-name:version

注意: 通过docker image --tree可查看出区别:

导出后再导入(exported-imported)的镜像会丢失所有的历史, 而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。

这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer), 同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚 (可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

参考链接

docker-cheatsheet's People

Contributors

unkown571 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.