操作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

原文地址:https://www.cnblogs.com/Michael2397/p/7287436.html