docker入门(启用容器)

举报
i进击的攻城狮 发表于 2022/06/27 00:18:44 2022/06/27
【摘要】 1、运行第一个容器命令sudo docker run -i -t ubuntu /bin/bash运行这个命令后,会根据ubuntu的镜像,创建一个ubuntu的容器-i 表示容器的STDIN是开启的,-t表示为容器提供一个交互式的shellubuntu 表示根据哪个镜像去创建容器如果本地没有ubuntu镜像,那Docker会在DockerHub的公共镜像库为你找到你所需要的镜像 2、使用...

1、运行第一个容器命令

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

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

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

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

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

2、使用容器

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

3、查看现有的容器

使用

docker ps -a
在这里插入图片描述

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

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 参数,在后面加上你想为容器取的名字

在这里插入图片描述

取名注意事项:

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

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

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

在这里插入图片描述

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”
在这里插入图片描述

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

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

7、容器内部在做什么

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

我们可以使用docker logs命令

docker logs [容器id或者名字]
在这里插入图片描述

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

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

docker logs --tail 10 daemon_dave
获取最后x行

在这里插入图片描述

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

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

在这里插入图片描述

8、查看容器内的进程

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

使用:

docker top daemon_dave
在这里插入图片描述

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]
获取更多容器信息:

在这里插入图片描述

13、删除容器

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

docker rm [容器名字或id]
删除容器

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

docker rm docker ps -a -q

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。