Docker 学习笔记(第三集:容器)

docker 容器

容器是通过 image 创建的进程。

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

新建并启动容器

下面的命令的含义:通过 Ubuntu:18.04 这个 image 创建一个容器并运行 /bin/echo ‘Hello world’,完成后停止该容器。


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

Hello world

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

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载

  2. 利用镜像创建并启动一个容器

  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层(后面会学)

  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去(后面会学)

  5. 从地址池配置一个 ip 地址给容器(后面会学)

  6. 执行用户指定的应用程序

  7. 执行完毕后容器被终止

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

如下命令执行完后,容器依然会停止


$ 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,会导致容器的停止。

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,不会导致容器的停止。

容器常用命令

  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 删除所有处于停止状态的容器

程序员的艺术人生

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!