Docker 容器入门
type
status
date
slug
summary
tags
category
icon
password
Docker常用命令
通用命令
操作 | 命令 | 示例 |
查看 docker 版本 | docker version | docker version |
查看 docker 信息 | docker info | docker info |
查看某命令 help 信息 | docker help [command] | docker help attach |
查看 docker help 信息 | docker --help | docker --help |
Container相关命令
操作 | 命令 | 示例 |
运行container的可选参数 | docker run -v -d -p | 可以通过docker help run查看帮助 |
创建 container | docker create | docker create chenhengjie123/xwalkdriver |
创建并运行 container | docker run | docker run chenhengjie123/xwalkdriver /bin/bash |
创建并运行 container 后进入其 bash 控制台 | docker run -t -i image /bin/bash | docker run -t -i ubuntu /bin/bash |
创建并运行 container 并让其在后台运行,并端口映射 | docker run -p [port in container]:[port in physical system] -d [image] [command | docker run -p 5000:5000 -d training/webapp python app.py |
查看正在运行的所有 container 信息 | docker ps | docker ps |
查看最后创建的 container | docker ps -l | docker ps -l |
查看所有 container ,包括正在运行和已经关闭的 | docker ps -a | docker ps -a |
输出指定 container 的 stdout 信息(用来看 log ,效果和 tail -f 类似,会实时输出。) | docker logs -f [container] | docker logs -f nostalgic_morse |
获取 container 指定端口映射关系 | docker port [container] [port] | docker port nostalgic_morse 5000 |
查看 container 进程列表 | docker top [container] | docker top nostalgic_morse |
查看 container 详细信息 | docker inspect [container] | docker inspect nostalgic_morse |
停止 continer | docker stop [container] | docker stop nostalgic_morse |
强制停止 container | docker kill [container] | docker kill nostalgic_morse |
启动一个已经停止的 container | docker start [container] | docker start nostalgic_morse |
重启 container (若 container 处于关闭状态,则直接启动) | docker restart [container] | docker restart nostalgic_morse |
删除 container | docker rm [container] | docker rm nostalgic_morse |
Image相关命令
操作 | 命令 | 示例 |
从 container 创建 image(反过来) | docker commit [container] [imageName] | docker commit nostalgic_morse ouruser/sinatra:v2 |
从 Dockerfile 创建 image | docker build -t [imageName] [pathToFolder] | docker build ouruser/sinatra:v3 . |
查看本地所有 image | docker images | docker images |
在 registry 中搜索镜像 | docker search [query] | docker search ubuntu |
从 registry 中获取镜像 (若无指定 tag 名称,则默认使用 latest 这个 tag) | docker pull [imageName] | docker pull ubuntu:14.04, docker pull training/webapp |
给 image 打 tag | docker tag [imageId] [imageName] | docker tag 5db5f8471261 ouruser/sinatra:devel |
把本地 image 上传到 registry 中 (此时会把所有 tag 都上传上去) | docker push [imageName] | docker push ouruser/sinatra |
删除本地 image | docker rmi [image] | docker rmi training/sinatra |
注意:image 中没有指定 tag 名称的话默认使用 latest 这个 tag 。然而 latest 的含义和 VCS 中的 head 不一样,不是代表最新一个镜像,仅仅是代表 tag 名称为 latest 的镜像。若不存在 tag 名称为 latest 的镜像则会报错。
Dockerfile
FROM
指明构建的新镜像是来自于哪个基础镜像,例如:
PS: FROM可以使用多个镜像,但最终只会保留最后一个,其他FROM语句一般多用于打包
MAINTAINER
指明镜像维护着及其联系方式(一般是邮箱地址),例如:指明镜像维护着及其联系方式(一般是邮箱地址),例如:
不过,MAINTAINER并不推荐使用,更推荐使用LABEL来指定镜像作者,例如:
RUN
构建镜像时运行的Shell命令,例如:
又如,我们在使用微软官方ASP.NET Core Runtime镜像时往往会加上以下RUN命令,弥补无法在默认镜像下使用Drawing相关接口的缺憾:
每一行RUN语句会生成一个镜像,所以一般情况下,多行语句推荐写成如下方式
CMD
启动容器时执行的Shell命令,例如:
EXPOSE
声明容器运行的服务端口,例如:
ENV
设置环境内环境变量,例如:
运行容器时可以通过
-e MYSQL_ROOT_PASSWORD 654321
覆盖环境变量ADD
拷贝文件或目录到镜像中,例如:
PS:如果是URL或压缩包,会自动下载或自动解压。
COPY
拷贝文件或目录到镜像中,用法同ADD,只是不支持自动下载和解压,例如:
ENTRYPOINT
启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指定指定的程序,例如:
PS:Dockerfile文件中也可以存在多个ENTRYPOINT指令,但仅有最后一个会生效。
VOLUME
指定容器挂载点到宿主机自动生成的目录或其他容器,例如:
USER
为RUN、CMD和ENTRYPOINT执行Shell命令指定运行用户,例如:
WORKDIR
为RUN、CMD、ENTRYPOINT以及COPY和AND设置工作目录,例如:
ARG
在构建镜像时,指定一些参数,例如:
这时,我们在docker build时可以带上自定义参数user了,如下所示:
文件案例
命令说明

docker-compose
1、Docker-Compose 命令格式
选项包括:-f,–file FILE 指定 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。-p,–project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。-x-network-driver 使用 Docker 的可拔插网络后端特性(需要Docker 1.9+版本)-x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge(需要Docker 1.9+版本)-verbose 输出更多调试信息-v,–version 打印版本并退出
2、Docker-Compose 启动格式
选项包括:-d 在后台运行服务容器–no-color 不使用颜色来区分不同的服务的控制输出–no-deps 不启动服务所链接的容器–force-recreate 强制重新创建容器,不能与–no-recreate同时使用–no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用–no-build 不自动构建缺失的服务镜像–build 在启动容器前构建服务镜像–abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)–remove-orphans 删除服务中没有在compose文件中定义的容器–scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数
docker-compose up
启动所有服务--这是我们最常用的命令格式docker-compose up -d
在后台所有启动服务--需要在后台使用时可以通过添加 -d 来后台启动-f 指定使用的 Compose 模板文件,默认为docker-compose.yml,可以多次指定。3、Docker-Compose 查看格式
这条命令与 Docker 中查看容器的命令基本功能和方法是一样的。一般我们使用的是
docker-compose ps
。4、Docker-Compose 终止格式
选项包括:-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)我们在执行 stop 命令之后,是需要通过
docker-compose start
来启动的,而不是刚才我们所讲的 up
命令。5、Docker-Compose 停止格式
选项包括:–rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像-v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷–remove-orphans,删除服务中没有在compose中定义的容器
docker-compose down
停用移除所有容器以及网络相关--最常用的格式6、Docker-Compose 日志格式
默认情况下使用
docker-compose logs
来查看服务容器的输出,或者我们可以通过指定 --no-color
来关闭颜色。7、Docker-Compose build
选项包括:–compress 通过gzip压缩构建上下环境–force-rm 删除构建过程中的临时容器–no-cache 构建镜像过程中不使用缓存–pull 始终尝试通过拉取操作来获取更新版本的镜像-m, –memory MEM 为构建的容器设置内存大小–build-arg key=val 为服务设置build-time变量服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务。
8、Docker-Compose pull
选项包括:–ignore-pull-failures,忽略拉取镜像过程中的错误–parallel,多个镜像同时拉取–quiet,拉取镜像过程中不打印进度信息
docker-compose pull
拉取服务依赖的镜像。9、Docker-Compose restart
选项包括:–f, –force,强制直接删除,包括非停止状态的容器-v,删除容器所挂载的数据卷
docker-compose rm
删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。10、Docker-Compose start
启动已经存在的服务容器。
11、Docker-Compose run
docker-compose run ubuntu ping www.baidu.com
在指定容器上执行一个ping命令。12、Docker-Compose scale
设置指定服务运行的容器个数。通过
service=num
的参数来设置数量。13、Docker-Compose pause
暂停一个服务容器。
14、Docker-Compose rm
选项包括:–f, –force,强制直接删除,包括非停止状态的容器-v,删除容器所挂载的数据卷
docker-compose rm
删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。15、Docker-Compose kill
支持通过
-s
参数来指定发送的信号,例如通过如下指令发送 SIGINT 信号:docker-compose kill -s SIGINT
16、Docker-Compose config
验证并查看 compose 配置文件。选项包括:–resolve-image-digests 将镜像标签标记为摘要-q, –quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息–services 打印服务名,一行一个–volumes 打印数据卷名,一行一个
17、Docker-Compose create
选项包括:–force-recreate:重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数–no-recreate:如果容器已经存在,不需要重新创建,不兼容–force-recreate参数–no-build:不创建镜像,即使缺失–build:创建容器前,生成镜像
18、Docker-Compose exec
选项包括:-d 分离模式,后台运行命令。–privileged 获取特权。–user USER 指定运行的用户。-T 禁用分配TTY,默认 docker-compose exec 分配 TTY。–index=index,当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务。例如:docker-compose exec –index=1 web /bin/bash ,web 服务中包含多个容器
19、Docker-Compose port
选项包括:–protocol=proto,指定端口协议,TCP(默认值)或者UDP–index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)
20、Docker-Compose push
选项包括:–ignore-push-failures 忽略推送镜像过程中的错误
21、Docker-Compose unpause
恢复处于暂停状态中的服务。
22、Docker-Compose version
用于打印版本信息。
Docker-Compose 怎么写?
Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。我们想要实现对其的配置,就要通过 docker-compose.yml 来实现。
Compose目前有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1将来会被弃用。
image
image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像。
build
服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径。Compose将会利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。
build: /path/to/build/dir
也可以是相对路径,只要上下文确定就可以读取到Dockerfile。build: ./dir
设定上下文根目录,然后以该目录为准指定Dockerfile。context
context 选项可以是 Dockerfile 的文件路径,也可以是到链接到 git 仓库的 url,当提供的值是相对路径时,被解析为相对于撰写文件的路径,此目录也是发送到 Docker 守护进程的 context
dockerfile
使用dockerfile文件来构建,必须指定构建路径
command
使用command可以覆盖容器启动后默认执行的命令
container_name
Compose的容器名称格式是:<项目名称><服务名称><序号>可以自定义项目名称、服务名称,但如果想完全控制容器的命名,可以使用标签指定:
depends_on
这里就是代替启动命令的执行内容,一般按照顺序来执行。例如上面这个语句,执行的就是 couchdb 和 redis 两个服务。
ports
ports用于映射端口的标签。
extra_hosts
添加主机名的标签,会在/etc/hosts文件中添加一些记录。
volumes
挂载一个目录或者一个已存在的数据卷容器
如果不使用宿主机的路径,可以指定一个volume_driver。
volume_driver: mydriver
dns
自定义一个 dns 服务器。
dns_search
配置DNS搜索域。可以是一个值,也可以是一个列表。
entrypoint
定义接入点,覆盖 Dockerfile 中的定义:
env_file
定义一个专门存放变量的文件:
如果有变量名称与 environment 指令冲突,则以后者为准。
cap_add
增加指定容器的内核能力(capacity):
cap_drop
与上面一条命令相反,去掉指定容器的内核能力(capacity):
cgroup_parent
创建一个 cgroup 组:
devices
指定设备映射关系:
expose
暴露端口,但不映射到宿主机,只允许能被连接的服务访问。仅可以指定内部端口为参数:
extends
基于其他模板文件进行扩展:
再编写一个新的
development.yml
文件,使用 common.yml
中的webapp
服务进行扩展:后者会自动继承
common.yml
中的 webapp
服务及环境变量定义。external_links
链接到
docker-compose.yml
外部的容器,可以是非Compose管理的外部容器。label
为容器添加元数据信息:
links
链接到其它服务中的容器:
log_driver
指定日志驱动类型。目前支持三种日志驱动类型:
log_opt
日志驱动的相关参数:
net
设置网络格式:
security_opt
指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如,配置标签的用户名和角色名:
扩展阅读
Loading...