基本概念
容器是镜像的运行实例,一般来说,镜像是一个只读文件,而容器运行时会带有可写的文件层。
基础命令
新建容器并运行
command: docker [container] create [options] imageName [command] [arg…]
options: docker [container] create --help
根据本地已经存在的镜像来创建容器,如果本地镜像不存在,将会自动尝试从远程仓库获取镜像。
新建的容器是处于停止状态,需要用其他命令启动:
command: docker [container] start [options] createdContainerId
合并两个操作:
command: docker run [options] createdContainerId/imageName
options: man docker-run
实际上docker run createdContainerId/imageName 可以直接创建容器并运行,在这里有两个常用的选项 -i:让容器的标准输入保持打开,-t:给容器分配一个伪终端。这两个命令一般一起使用,让用户能够与容器进行交互。
从容器创建到运行完成 系统做的步骤:
- 检查本地是否存在指定的镜像,不存在则从远程仓库拉取
- 利用指定的镜像创建一个容器并运行
- 给容器分配一个文件系统,并在只读镜像的外层挂载一个可读写的层
- 从宿主主机配置的网桥接口中桥接一个虚拟的接口到容器
- 从网桥的地址池中分配一个IP给容器
- 执行用户指定的程序
- 容器完成任务停止
查看容器输出
command: docker [container] logs [options] containerId
进入容器
运行容器时使用-d选项可使容器进入后台运行
command: docker [container] attach [options] containerId
command: docker [container] exec [options] containerId command [arg…]
第一个命令多个窗口是同步的,第二个则每个窗口独立,具体的差别用的时候在去体会。
停止容器
暂停容器
command: docker [container] pause [options] containerId
恢复执行
command: docker [container] unpause [options] containerId
终止容器
command: docker [container] stop [options] containerId
这里可以通过选项,设置在一段时间(默认10秒)后再停止容器的运行,选项嘛就看man手册。
强制终止:docker [container] kill containerId
清除所有为停止状态的容器
command: docker container prune
删除容器
command: docker [container] rm [options] containerId
默认情况下,只能删除停止状态的容器,要删除运行的容器需要加-f选项,此时会先停止容器并删除。
导出容器
command: docker [container] export [options] containerId
导出一个已经创建的容器,容器在运行状态时也能导出。用选项-o指定导出的文件名,也可以使用重定向。
导出容器和镜像的区别:
导出镜像会完整保存记录,包括历史记录,元数据等,而导出容器时这些数据都会丢失。
导入容器
command: docker [container] import [options] containerId
查看容器
- 查看容器详情:
command: docker [container] inspect [options] containerId - 查看容器内进程
command: docker [container] top [options] containerId - 查看统计信息
command: docker [container] stats [options] containerId
其他命令
- 容器和本地主机之间复制数据
command: docker [container] cp [options] containerId:src dest
command: docker [container] cp [options] dest containerId:src - 查看变更
command: docker [container] diff [options] containerId - 查看端口配置
port - 更新配置
update
命令使用细节,用到时再找资料
参考
[1] http://www.dockerinfo.net
[2] Docker技术入门技术与实战 .第三版