Docker学习--Docker容器

722 阅读3分钟

一、启动容器

1、基于镜像新建一个容器并启动

  可以使用docker run命令来新建并启动一个容器,例如:

docker run -t -i ubuntu:latest /bin/bash

  其中,

  -t:让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

  -i:让容器的标准输入保持打开

  当利用docker run来创建容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止


2、将终止状态(stopped)的容器重新启动

  可以使用docker start命令来重新启动容器,例如:

docker start <Container>


二、守护态运行

  可以通过添加-d参数来实现让Docker容器在后台以守护态(Daemonized)形式运行。

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

  若要获取容器的输出信息,可以通过docker logs命令来获取

docker logs <Container>


三、终止容器

  可以使用docker stop命令来终止一个运行中的容器。此外,当Docker容器中指定的应用终结时,容器也自动终止。

docker stop <Container>

  终止的容器可以使用docker ps -a命令查看。

  使用docker restart命令会将一个运行中的容器终止,然后再重新运行


四、进行容器

  当容器启动后进入后台后,可以使用docker attach命令或nsenter工具等进行容器进行操作。

1、使用docker attach命令进入容器

docker attach <Container>

  如果从这个stdin中exit,会导致容器停止。

2、使用nsenter命令进入容器

  找到容器的第一个进程的PID

PID=$(docker inspect --format "{{ .State.Pid}}" <Container>)

  连接到容器

nsenter --target $PID --mount --uts --ipc --net --pid

3、使用docker.exec命令进入容器

docker exec -i -t <Container> <Command>

  如果从这个stdin中exit,不会导致容器停止。


五、导出容器

  可以使用docker export命令导出容器

docker export <Container> > ubuntu.tar


六、导入容器快照

  可以使用docker import从容器快照文件中导入为镜像

cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
docker import http://example.com/exampleimage.tgz example/imagerepo

  导入镜像有两种方式:

  1、使用docker load命令导入镜像存储文件到本地镜像库

  2、使用docker import命令导入容器快照到本地镜像库

  二者的区别为:

  容器快照:丢弃所有的历史记录和元数据信息(仅保存容器当时的快照状态)

  镜像存储文件:保存完整记录,体积也要大


七、删除容器

  可以使用docker rm命令来删除一个处于终止状态的容器

docker rm <Container>

  也可以添加-f参数来删除一个正在运行的容器