docker 学习笔记——第三集(container)

docker 容器

容器是经过 image 建立的进程。程序员

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 同样,镜像是静态的定义,容器是镜像运行时的实体。容器能够被建立、启动、中止、删除、暂停等。

新建并启动容器

下面的命令的含义:经过 Ubuntu:18.04 这个 image 建立一个容器并运行 /bin/echo 'Hello world',完成后中止该容器。docker

$ docker run ubuntu:18.04 /bin/echo 'Hello world'
Hello world

使用 docker run 命令,后台实际上执行的内容为:ubuntu

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

上面的示例执行完之后会终止,可是通常咱们在使用一个提供服务的容器的时候,不想让它中止,那么可使用 -d 参数,使容器保持在后台运行。可是须要注意——容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关bash

以下命令执行完后,容器依然会中止spa

$ docker run -d ubuntu

已中止

而以下命令执行完后,容器则在后台保持运行设计

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

运行中

进入容器

attach 命令

$ docker run -dit ubuntu
ffff9516c6151ef3b436df1bccc70ba9da2d0f57bbec5afe19353fe481e12702

$ docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                      NAMES
ffff9516c615        ubuntu                  "/bin/bash"              7 seconds ago       Up 6 seconds                                                   elegant_hypatia

$ docker attach ffff9516c615
root@ffff9516c615:/#

注意: 若是从这个 stdin 中 exit,会致使容器的中止。rest

exec 命令(推荐使用,通常配合 -it 参数)

$ docker run -dit ubuntu
15fc4d97c1b4ea25d76e568fb4e695d5b48d7f13ebbb6d718a80b86a4764a005

// 只用 -i 参数时,因为没有分配伪终端,界面没有咱们熟悉的 Linux 命令提示符,但命令执行结果仍然能够返回。
$ docker exec -i 15fc4d97c1b4ea25 bash
ls
bin
boot
dev
etc
...

//当 -i -t 参数一块儿使用时,则能够看到咱们熟悉的 Linux 命令提示符。
$ docker exec -it 15fc4d97c1b4ea25 bash
root@15fc4d97c1b4:/#

注意:若是从这个 stdin 中 exit,不会致使容器的中止。code

容器经常使用命令

  1. docker container ls --all 查看当前系统中的全部(运行中、已中止的)容器
  2. docker container start XXX 把已经中止的 XXX 容器启动
  3. docker container stop XXX 把运行总的 XXX 容器中止
  4. docker container restart XXX 从新启动运行中的 XXX 容器
  5. docker container prune 删除全部处于中止状态的容器

程序员的艺术人生

相关文章
相关标签/搜索