1.1 创建容器
1.可以使用docker create 命令来创建容器,例如:
使用docker create 命令新建的容器处于停止状态,可以使用docker start 命令来启动它。
create 命令与容器运行模式相关的选项有如下几个:
--expose=[ ] ,指定容器会暴露出来的端口或端口范围;
-p,--publish=[ ],指定如何映射到本地主机端口;
--restart="no",容器的重启策略,包括no,on-failure[:max-retry],always,unless-stoppped等;
--rm=true/false,容器退出后是否自动删除,不能和-d参数同时使用;
-t,--tty=true/false,是否分配一个伪终端,默认为false。
2.可以使用docker start + 容器id 命令来启动一个已经创建的容器, docker run 命令等价与先执行docker create 命令,再执行docker start命令。
某些时候,执行docker run 命令因为命令无法正常执行容器会出错直接退出,此时可以查看退出的错误代码。默认情况下,常见的错误代码包括:
125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;
126:所指定命令无法执行,例如权限出错;
127:容器内命令无法找到。
更多时候,需要Docker容器在后台以守护态形式运行,可以通过添加-d参数来实现。
1.2 停止容器
1. 暂停容器可以使用docker pause 命令,处于paused状态的容器可以使用docker unpause 命令来恢复到运行状态。
2.终止容器可以使用docker stop命令,它可以终止一个运行中的容器。docker kill 命令是直接发送SIGKILL信号来强行终止容器。当容器中指定的应用终结时,容器也会自动终止。可以用docker ps -qa 命令来查看所有容器的记录。还可以执行docker container prune 命令,会自动清除掉所有处于停止状态的容器。处于终止状态的容器,可以通过docker start 命令来重新启动。
1.3 进入容器
Docker提供了一个方便的工具exec 命令,可以在运行中容器内直接执行任意命令。
该命令所带比较重要的参数有:
-d,--detach:在容器中后台执行命令;
--detach-keys=" ":指定将容器切回后台的按键;
-e,--env=[ ]:指定环境变量列表;
-i,--interactive=true/false:打开标准输入接受用户输入命令,默认值为false;
-t,--tty=true/false:分配伪终端,默认值为false;
-u,--user=" ":执行命令的用户名或ID。
1.4 删除容器
可以使用docker rm 命令来删除处于终止或退出的容器,命令格式为 docker [container] rm [-f] [-l] [-v] ,主要支持的选项包括:
-f,--force=false:是否强行终止并删除一个运行中的容器;
-l,--link=false:删除容器的连接,但保留容器;
-v,--volume=false:删除容器挂载的数据卷。
默认情况下,docker rm 命令只能删除已经处于终止或退出状态的容器,并不能删除还处于正在运行状态的容器,如果非要直接删除,可以添加-f参数,docker会终止其中的应用强行删除该容器。
1.5 导入和导出容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。可以使用docker export 命令,该命令格式为 docker export [-o|--output [=" "]] container-id,其中-o选项用来指定导出的tar文件名,也可以直接通过重定向来实现。
之后可将导出的tar文件传输到其他机器上,然后再通过导入命令导入到系统中,实现容器的迁移。
导入容器可以docker import命令,导入之后变成镜像,该命令格式为:docker import [-c] [-m] file|URL|-[REPOSITORY[:TAG]],用户可以通过-c,--change=[]选项在导入的同时执行对容器进行修改的Dockerfile指令。
实际上,既可以用docker load 命令来导入镜像存储文件到本地镜像库,也可以使用docker import 命令来导入一个容器快照到本地镜像库。两者的区别是容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
1.6 查看容器
1.查看容器详情可以用docker inspect + container-id,结果会以json格式返回,包括容器ID,创建时间,路径,状态,镜像,配置等在内的各项信息。
2.查看容器内进程命令,docker top container-id,此命令会打印容器内的进程信息,包括PID,用户,时间,命令等。
3.查看统计信息可用docker stats container-id命令,结果会显示CPU,内存,存储,网络等使用情况的统计信息。支持的选项包括:
-a,-all:输出所有容器统计信息,默认仅在运行中;
-format string:格式化输出信息;
-no-stream:不持续输出,默认会自动更新持续实时结果;
-no-trunc:不截断输出信息。
4.要获取容器的输出信息,可以通过docker logs + 容器id 命令实现。该命令支持的选项包括:
-details:打印详细信息;
-f,-follow:持续保持输出;
-t,-timestamps:显示时间戳信息;
-since string:输出从某个时间开始的日志;
-tail string:输出最近的若干日志;
-until string:输出某个时间之前的日志。
1.7 其他容器命令
docker cp 命令支持在容器和主机之间复制文件。
docker diff 命令查看容器内文件系统的变更。
docker port 命令查看容器的端口映射情况。
docker update 命令可以更新容器的一些运行时配置,主要是一些资源限制份额。