操作docker容器
创建容器
·1、新建容器
docker create 新建一个容器:使用create创建的容器处于停止状态,可以使用docker start来启动它。create命令主要包括以下几大类:与容器运行模式有关,与容器和环境配置有关,与容器资源限制和安全保护相关
2、启动容器
docker start启动一个已经创建的容器
3、新建并启动容器
docker run =docker create+docker start
当利用docker run来创建并运行启动容器时,Docker在后台运行的标准操作包括:
(1)检查本地是否存在指定的镜像,不存在就从dockerhub下载
(2)利用镜像创建一个容器,并启动改容器;
(3)分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中;
(5)从网桥的地址池配置一个ip地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器自动终止
docker run -it ubuntu:latest /bin/bash
-i 让容器的标准输入保持打开
-t让docker分配一个伪终端
docker run执行时常见的错误代码包括:
125:docker daemon执行错误,例如指定了不支持的docker命令参数
126:所制定命令无法执行,如权限出错
127:容器内命令无法找到
4、守护态运行 -d的作用
docker run -d ubuntu
要获取容器的输出信息,可以使用docker logs命令
终止容器
docker stop: 首先向容器发送sigterm 信号,等待一段超时时间(默认10秒),再发送sigkill信号来终止容器
docker kill:直接发送sigkill信号来终止容器
进入容器
如果使用-d参数时,如果想进入容器操作,用下面的方法:
1.attach命令
docker attach name
使用attact命令有时候并不方便,当多个窗口同时用attach命令连接到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞时,其他窗口也就无法执行操作
2、exec命令(推荐)
在不影响容器内其他应用的前提下
3、nsenter工具
删除容器
docker rm
默认情况下,只能删除处于终止或退出状态的容器,并不能删除还处于运行状态的容器
如果要直接删除一个运行中的容器,可以添加-f参数,Docker会先发送Sigkill信号给容器,终止其中的应用,之后强行删除
导入和导出容器(迁移)
1、导出容器
导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,都可以使用docker export, -o可以制定导出的tar文件名,也可以直接通过重定向来实现
docker export -o test.tar [ID]
docker export [ID] > test.tar
2、导入容器
docker import
-c可以在导入的同时执行对容器进行修改的Dockerfile
docker save和export的区别:
导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行docker tag <LAYER ID> <IMAGE NAME>
来回滚之前的层)。
vagrant@Ubuntu-13:~$ sudo docker images --tree
├─f502877df6a1 Virtual Size: 2.489 MB Tags: busybox-1-export:latest
└─511136ea3c5a Virtual Size: 0 B
└─bf747efa0e2f Virtual Size: 0 B
└─48e5f45168b9 Virtual Size: 2.489 MB
└─769b9341d937 Virtual Size: 2.489 MB
└─227516d93162 Virtual Size: 2.489 MB Tags: busybox-1:latest
posted on 2017-08-04 22:39 Michael2397 阅读(110) 评论(0) 编辑 收藏 举报