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.