Docker使用示例(1) – 创建容器

容器运行后自动删除



一般情况下,退出一个Docker容器后它仍然会存在。这允许你再次运行容器,查看其文件系统等。不过,有时候你可能想运行容器后马上自动删除。例如想执行一个命令或者查看一个文件。Docker为此提供了一个–rm命令行参数来实现它。

  1. docker run --rm ubuntu cat /etc/hosts

这会从ubuntu镜像创建一个容器,显示/etc/hosts的内容,然后退出后立即销毁容器。
这避免了你只是想做下实验后再清理容器的麻烦。
注意:–rm选项在与-d(–detach)选项时失效。
当使用–rm选项时,Docker被删除后也会删除与之关系的volumes。这与执行docker rm -v my-container类似。只删除未命名的volumes。
例如,运行docker run -it –rm -v /etc -v logs:/var/log centos /bin/produce_some_logs,/etc数据卷会被删除,/var/log则不会。

容器重启策略


  1. docker run --restart=always -d <container>

默认情况下,当Docker守护进程重启时(如主机系统重启),容器不会跟着重启。Docker为容器提供了一个重启策略,选项为–restart=always。使用此选项一旦Docker守护里程重启后,容器也会重启。
不过,如果是手动停止的容器(如docker stop ),重启策略则不会生效。

设置容器名称



默认下,使用docker run创建容器时会分配一个随机的名称,如small_roentgen或modest_dubinsky。这种名称对识别容器不会有任何帮助。我们可以通过–name选项来指定一个有意义的名称。

  1. docker run --name my-ubuntu ubuntu:14.04

名称必须是唯一的。如果指定了一个与正在运行容器的名称一样,docker会报错并且不会创建任何容器。

后台运行容器



为了让容器在后台运行,我们可以在生成容器时使用-d选项。

  1. docker run -d busybox top

给容器分配数据卷



Docker 数据卷(volume)其实是一个文件或者目录,它在容器生命周期结束后还会保留。我们可以挂载宿主机的一个文件或目录作为Docker的数据卷。
使用-v选项添加一个数据卷:

  1. docker run -d -v "/data" awesome/app bootstrap.sh

这会创建一个数据卷并把它挂载到容器的/data目录。

挂载宿主目录

挂载宿主文件或目录到容器:

  1. docker run -d -v "/home/foo/data:/data" awesome/app bootstrap.sh

这会把宿主的/home/foo/data目录挂载到容器里的/data目录。这个操作就会Linux的mount命令。因此这个挂载只存在于容器的生命周期。更改宿主/home/foo/data的文件会立即影响到容器的/data对应的文件里,因为它们是指向硬盘上的同一个文件。

命名数据卷

可以在创建数据卷时指定一个名称,而不只是主机目录路径。

  1. docker run -d -v "my-volume:/data" awesome/app bootstrap.sh

命名的数据卷创建后,可以通过此名称来与其它容器共享。

交互方式运行容器



使用-it选项来以交互方式运行容器。

  1. $ docker run -it ubuntu:14.04 bash
  2. root@8ef2356d919a:/# echo hi
  3. hi
  4. root@8ef2356d919a:/#

-i选项保持STDIN打开,而-t则分配一个伪TTY。

登录正在运行的容器



我们可以使用如下命令来登录正在运行的容器

  1. docker exec -it jovial_morse bash
标签:容器Docker 发布于:2019-11-21 05:18:45