Docker入门教程2:运行第一个容器命令

2022-05-13

66

Docker入门教程2:运行第一个容器命令教程。

Docker入门教程1:创建容器,请查看原文>


1、运行第一个容器命令

sudo docker run -i -t ubuntu /bin/bash

Docker入门教程

Docker入门教程

运行这个命令后,会根据ubuntu的镜像,创建一个ubuntu的容器

-i 表示容器的STDIN是开启的,-t表示为容器提供一个交互式的shell

ubuntu 表示根据哪个镜像去创建容器

如果本地没有ubuntu镜像,那Docker会在DockerHub的公共镜像库为你找到你所需要的镜像


2、使用容器

我们可以把这个新创建的ubuntu容器当中一个新的操作系统使用,执行一下命令

Docker入门教程

Docker入门教程

还可以为这个容器安装软件,比如安装一个vim编辑器

Docker入门教程

可以提供exit命令退出这个容器

Docker入门教程

3、查看现有的容器

使用docker ps -a

Docker入门教程


圈出来的就是刚刚我们运行的容器

docker ps -a代表查看所有容器

docker ps 查看正在运行的容器

docker ps -l 查看最后一次运行的容器

容器相当于是一个进程,可以在前台运行,也可以在后台运行,在前台运行的时候

我们看图片的第一列:

CONTAINER_ID 代表容器的唯一ID

IMAGE 代表这个容器是由哪个镜像构建的

COMMAND 代码运行容器的时候,为容器指定执行的命令,这个后面再讲,你可以先理解为这个根据容器所属的镜像不同,执行的命令也不同;

STATUS 代码容器的状态,比如运行,介绍状态

PORTS 表示容器开放的虚拟端口号

NAME 容器的名称,可以在启动的时候为容器命名,如果没有为容器命令,Docker会为容器自动生成名字


4、容器命名

刚刚说到了我们可以为容器命名,那怎么操作呢?

很简单,只需要:

sudo docker run --name deng_container -i -t ubuntu /bin/bash

使用–name 参数,在后面加上你想为容器取的名字

Docker入门教程


取名注意事项:

① 名字的字符是有限制的,只能使用a-z,A-Z,0-9,下划线,圆点、横线

用正则表达式就是这样的[a-zA-Z0-9_.-]

②在一些操作容器docker命令中,我们可以使用容器的名字代替容器的id,因为很明显容器的ID比容器的名字更好记,所以,容器的名字和容器的ID一样,不能重复;

Docker入门教程


5、重启已经停止的容器

使用:

sudo docker start [容器的id或者名字]

去启动已经关闭的容器

是不是很简单

这里要注意的是,重启启动容器的时候,没有使用-i -t 参数,所以容器是在后台运行的,所以容器启动后,我们还行进入容器的shell界面怎么办

只需要一条命令

sudo docker attach deng_container


6、创建守护式容器

我们除了创建交互式的容器以外,我们还可以创建守护式的容器,也就是后台运行的容器

docker run --name daemon_dave -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1; done”

Docker入门教程


我们可以在运行容器的时候,使用-d参数,去创建守护式的容器,由图可以看出,创建这样的容器,终端就不会进入容器的交互界面,而是之返回一个容器的id

-c命令,配置这个容器在后台活动的时候需要做些什么


7、容器内部在做什么

刚刚我们创建了一个守护式的容器,并且配置它在后台打印hello world,我们怎么知道它是否正在执行呢?

我们可以使用docker logs命令

docker logs [容器id或者名字]

Docker入门教程


看,容器控制台的输出,全部打印出来了

docker logs还能配置一些参数,比如

docker logs --tail 10 daemon_dave

获取最后x行

Docker入门教程

docker logs --tail 0 -f daemon_dave 获取某个容器最新的日志而不必读整个文件

还能使用-t参数新增时间戳

Docker入门教程


8、查看容器内的进程

我们有时候需要提供查看容器内运行的进程的方式去了解容器的情况

使用:

docker top daemon_dave

Docker入门教程


9、在容器内部运行进程

我们可以提供docker exec 命令去为一个后台正在运行的容器,执行一个命令,比如在一个后台执行的容器中,创建一个新的文件

docker exec -d daemon_dave touch /etc/new_config_file


10、停止守护式容器

在前台shell运行的容器我们可以使用exit去退出,那后台运行的容器呢?很简单,使用下面的命令

sudo docker stop daemon_dave


11、自动重启容器

容器在运行过程中,可能会因为不可预知的错误导致容器退出,我们可以提供在启动的时候,设置参数,让容器在非自然退出的时候字段重启

命令如下:

sudo docker run --restart=always --name daemon_dave -d ubuntu /bin/sh

-c “while true;do echo hello world;sleep 1; done”

–restart参数,表示的就是为容器设置重启的参数:这里restart被设置为了always,代表容器退出后总是会重启,无论退出代码是什么


我们还可以设置restart= on-failure,这样容器就只有在错误退出的时候才会重启

命令:

–restart=onfailure:5

:5退出代码为非0的时候,docker会尝试重启容器,并且最多五次


12、深入容器

除了使用docker ps命令来了解容器的信息,我们还可以使用

docker inspect [容器名字或id]

获取更多容器信息:

Docker入门教程


13、删除容器

如果你不需要哪个容器,你可以使用

docker rm [容器名字或id]

删除容器


docker没有提供删除所有容器的命令,不过我们可以使用一些小技巧来删除所有容器

docker rm docker ps -a -q


————————————————



行云创新产品合集

TITANIDE(云端开发环境,     在线IDE),社区版免费下载体验地址>

SolarMesh(微服务治理平台,服务网格),社区版免费下载体验地址>

Mathodot(一 站 式云原生在线开发平台),在线免费版本体验地址>



技术交流
我们建了一个云原生技术交流群,里面有来自Oracle、Citrix、华为、腾讯等国内外云计算专家,立即扫码,拉你进群。目前已有1000+开发者加入我们......
云原生厂商 云原生技术服务商
在云原生时代,行云创新致力于通过赋能开发者,实现企业快速迭代与交付,大幅提升创新效率。
免费试用