1 运行容器
指定某个镜像以容器的形式运行起来。语法为:docker run [OPTIONS] {IMAGE_NAME}
。
- {IMAGE_NAME} 指的是镜像名称;
- [OPTIONS] 指的是命令可选项。
Run的命令可选项非常多,我们在此列举出那些常用的可选项。
参数 | 说明 |
---|---|
-d | 在后台运行容器并打印出容器 ID;d 是 detach 的英文首字母。 |
-p | 映射端口号到主机。格式形如主机端口:容器端口。 |
--name | 指定容器名称。 |
--restart | 重启策略,有 no、on-failure[:max-retries]、always 与 unless-stopped 四种1。 |
-v | 绑定虚拟机工作目录到容器目录。格式形如工作目录:容器目录。如果工作目录不存在,docker 会自动新建。 |
这里的工作目录指的是虚拟机中的 CentOS目录。
2 查看容器
查看正在运行的命令为:docker ps
。
列表字段具体说明如下:
字段 | 说明 |
---|---|
CONTAINERID | 容器 ID |
IMAGE | 镜像名称 |
COMMAND | 容器启动时所运行的命令 |
CREATED | 容器创建时间,格式为距今多久 |
STATUS | 容器运行状态;常见的有:UP 表示运行中;Exited 表示已退出 |
PORTS | 需要对外暴露的端口号 |
NAMES | 容器名称 |
加上 -a 参数可以查看所有容器(不只是运行中的容器),完整命令为:docker ps -a
。
加上 -f 参数可以加入过滤条件,比如我们想过滤出镜像名称只包含 “config”的镜像。使用命令 docker ps -f "name=config"
:
3 进入容器
以下两种指令都只能进入处于运行中的容器。
3.1 查看运行日志
进入容器查看运行日志的命令格式为:docker attach {CONTAINER_ID}
。其中 {CONTAINER_ID} 表示容器 ID。进入容器之后,就可以在控制台看到容器内的输入、输出与错误日志信息。下图是 gitLab 容器的运行日志:
在此如果键入 ctrl+Z,就会停止运行中的容器。
3.2 执行 Linux 指令
在容器内执行 Linux 指令使用 docker 的 exec 指令,语法为: docker exec [OPTIONS] {CONTAINER_ID} {COMMAND}
。{CONTAINER_ID} 是容器 ID,{COMMAND} 是需要执行的指令。
可能会用到以下两个可选参数 [OPTIONS]:
参数 | 说明 |
---|---|
-i | 打开交互模式,即保持 stdin 标准输入处于开启状态;i 即 interactive。 |
-t | 分配一个伪终端;t 即 tty。 |
-w | 指定容器中的工作路径 |
比如我们想进入 /var/log/gitlab
目录,然后打印出该目录的文件列表,就可以使用这条命令:docker exec -t -i -w /var/log/gitlab {CONTAINER_ID} ls -l
。
命令执行后的输出结果形如:
4 查看容器日志
命令为:docker logs [CONTAINER_ID],其中 [CONTAINER_ID] 表示容器 ID。输出结果形如:
5 停止容器
停止某个容器,语法为:docker stop {CONTAINER_ID}
。
如果想停止所有容器,可以使用以下语法:
docker stop `docker ps -a -q`2
docker ps -a -q
会输出所有正在运行的容器 ID。
- -a 表示列出所有正在运行的容器,a 是 all 的缩写;
- -q 表示只输出容器 ID,q 是 quiet 的缩写。
6 启动容器
启动已停止的容器,语法为:docker start {CONTAINER_ID}
。
7 重启容器
启动运行中的容器,语法为:docker restart {CONTAINER_ID}
。
8 删除容器
命令为 docker rm {CONTAINER_ID}
,其中的 {CONTAINER_ID} 表示的是容器 ID。这条命令只能删除非运行状态的容器。如果需要删除正在运行的容器,可以带上 -f
命令参数,f 是 force 的单词简写形式。
命令执行成功后,控制台会返回被删除的容器 ID。
【1】Restart policies.
【2】黄勇.轻量级微服务架构(上册)[M].北京:电子工业出版社,2016:162.