1,创建容器 

  • 新建容器 docker create

docker create -ti redis

使用 docker create创建的容器处于create状态,需要执行docker start命令启动。

  • 新建并启动容器 docker run

等价于执行完docker create之后执行docker start。docker run创建容器的后台标准操作包括:

  1. 检测本地是否存在对应的镜像,没有的话存公有仓库下载
  2. 利用镜像创建并启动一个容器
  3. 分配文件系统,在只读的镜像层挂在一层可读写层
  4. 从宿主机配置的网桥接口中桥接一个虚拟接口到容器
  5. 从地址池配置一个ip给容器
  6. 执行用户指定的应用程序
  7. 执行之后容器被终止

docker run -it ubuntu /bin/bash 开启一个终端,用户可以进行交互,-t选项让docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。在交互模式下,可以通过创建的终端来输入命令。在容器终端运行ps命令,发现只有一个bash一个进程,并没有启动其他不需要的进程。按

Ctrl+D或者运行 exit命令退出容器。对于所创建的bash容器,当运行exit命令退出之后,容器就自动处于终止状态了。因为对于docker容器来说,当运行当程序(bash)结束之后,容器也没有必要运行下去了。


  • 守护态运行 docker run -d

更多的时候,需要让docker容器在守护态运行:

docker run -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done"

要查看容器的输出信息,可以运行docker logs查看。

2,终止容器 docker stop --time[=10]

首先向容器发送SIGTERM信号,等一段时间后(默认10s)向容器发送SIGLKILL信号终止容器:docker stop --time=1 96 ,使用docker ps -a -q命令查看已终止的容器id,对于已终止的容器可以运行docker start 命令来重新启动,可以使用docker restart使启动状态的容器终止,然后重新启动。


3,进入容器 docker attach 、docker exec、nsenter工具等

  • docker attach 96,但是这种方式有时候不是很方便,当多个窗口同时attach进同一个容器时,所有窗口都会同步显示,当某个窗口阻塞时,所有其他窗口也无法操作了。
  • docker exec -it 96 /bin/bash,docker自1.3版本起,提供了这个更方便到工具,可以直接在容器内运行命令。
  • nsenter是系统操作系统自带到命令,不推荐使用。

4,删除容器 docker rm [options] container [container...]

  • -f,--force=true 强行删除一个正在运行的容器
  • -l,--link=false 删除容器的网络连接,但不删除容器
  • -v,--volumes=false 删除容器挂载的数据卷

5,导入导出容器

  • 导出容器:docker export container

docker export c4 >test.tar,将id为c4的容器导出到test.tar。


  • 导入容器:docker import

cat test.tar | docker import - redis-test,查看镜像列表


docker与测试 docker实验总结_docker与测试

用docker import可以导入一个容器快照到本地镜像库,用docker load也可以导入一个镜像存储文件到本地镜像库,区别在于容器快照文件将丢失所有的历史记录和元数据(仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,并且体积较大。此外,从容器快照导入时可以重新指定标签等元数据信息。