(四)运行第一个容器

简介:

设置Docker镜像仓库

我这里为了下载镜像速度更快,使用了阿里的云加速,你只需注册即可使用。如下图:

wKiom1jXIATg6DrKAAMRv6U_Cqg557.png

wKiom1jWasDRshILAALxsYWvVjw840.png

修改配置文件/lib/systemd/system/docker.service

1
sed  -i  "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=https://qxx96o44.mirror.aliyuncs.com|g"  /etc/systemd/system/docker .service

也可以直接添加,建议在daemon.json文件中添加。

wKioL1jWay2z_zz0AAIb6Al2OQQ648.png

重启服务

wKiom1jWavrRkNQpAACSyLGGMqA072.png


创建第一个容器:

创建一个容器很容易,我们使用docker run命令就可以完成,如下图:

1
2
3
docker run -i -t centos:6.6  /bin/bash
#可以写成如下形式,多个参数可以合并
docker run -it centos:6.6  /bin/bash

wKioL1jWa4ChQDAzAACZ8g2iCzI489.png

run命令是docker命令中的一个子命令,作用是运行一个容器

参数 说明
-i 即使不连接到容器,也保持容器中的STDIN是打开的,也就是标准输入
-t 为容器开启一个伪TTY终端

--name

(两个短横线)

为容器设定一个名称

--restart=

(两个短横线)

这个参数的含义是,如果容器意外关闭,是否自动重启,只要容器退出代码为非0,才会执行重启动作
always:总是自动重启
none:不重启
on-failure:# 重启,但最多重启#次
centos:6.6

这个是镜像名称,这里适用的是官方镜像,centos是仓库名称,6.6是标签。一个仓库可能有多个镜像,如果不指定具体标签(TAG),则默认会适用latest的,也就是仓库中最新的。

如果是适用非官方镜像他人或者你自己构建的镜像,这里的各式是 用户名/仓库名

如果第一次你不知道镜像仓库名称和标签,请访问 https://hub.docker.com/

/bin/bash
容器启动后运行的程序,不是必须的

命令执行完毕后会自动进入容器中,正向上图显示的那样的命令提示符号是 root@3d55c5bf0886 ,这一串字符是你建立容器的ID,同时也是默认的容器主机名称,如下图:

wKiom1jWbBGhB0CZAABMZ0ux674765.png

如果使用 --name 参数可以设置容器的名字,但是容器ID和系统主机名还是随机生成的。

wKiom1jWbCqBDPHBAACsTDaHUeI219.png

docker run命令运行的过程是这样的

1
docker run -it --name test1 centos:6.6  /bin/bash

首先docker会检查本地的镜像是否包含centos:6.6,如果有就使用本地镜像,如果没有就连接官方的Docker Hub Registry去下载,如果找到就会下载然后保存到本机中,然后尝试使用该镜像创建一个容器,最后运行指定的命令。这个容器拥有自己的独立的文件系统、网络(默认为桥接网络)。最后我们告诉新容器要运行什么命令,这里我们写的是/bin/bash,也就是在容器中运行一个Bash shell终端。


查看网络:

wKiom1jWbPSDF9o5AALwixaFVu4062.png

可以看到你会像使用普通Linux系统那样使用容器,同时默认使用了桥接网络。另外我们还可以安装软件

wKioL1jWbQiihWX-AAEmmojRO-Y061.png

使用exit命令退出容器

一旦我们执行了exit命令,/bin/bash命令也就结束了,同时容器也停止了。但是容器还是存在的,可以通过下面的命令查看:

1
2
3
4
#查看所有容器,包括运行和退出的
docker  ps  -a
#仅查看当前运行的容器
docker pa

wKiom1jWbSeD-Jo5AACaOBTFpNo739.png

如何重启启动或停止一个容器:

使用下面的命令重新启动一个容器

1
2
docker start 容器名称或者容器ID
docker  stop   容器名称或者容器ID

wKioL1jWbWjCS6GfAAF-_r7i_zg683.png

我们看到 UP 标志,但是这个容器是后台运行的,那我们如何连接到这个容器的shell呢?


重新连接到运行中的容器:

必须要先启动一个容器,才能连接

1
docker attach 容器名称或者容器ID

wKiom1jWbYOgoS3eAABslxKtpOo663.png

注意:运行命令后,会出现停滞的情况,其实不是停滞,你需要再次按一下回车才会进入到容器的命令提示符(有时可能需要)。当你再次执行exit后,容器会再次停止。


创建后台运行的容器:

如果需要长期运行容器,我们就要创建没有交互式会话的守护式容器,生产环境中基本都是这么运行运行的。我们使用下面的命令来后台运行容器:

使用-d参数来设置后台运行;--name的含义是设置一个容器名称,这样以后重启、删除就可以使用命令了。

1
2
3
4
5
docker run --name 容器名称 -d -i -t 镜像:版本 COMMAND
#或者
docer run -itd --name 容器名称 镜像标签:版本 COMMAND
#或者,不打开STDIN和TTY
docker run -d --name 容器名称 镜像标签:版本 COMMAND

wKiom1jWbbWCfMRZAACRTnRG1ZI354.png

注意:上图创建容器后列出了一长串字符,这个是长UUID,一般我们使用短UUID或者容器名称来操作容器。

看一下状态

wKioL1jWbfzBzWmkAACaOBTFpNo339.png

连接到容器

wKiom1jWbiTQg5Q8AABRfL1l2hQ406.png

注意:无论是交互式容器还是后台运行的容器,你只要连接进去再exit退出,容器都会终止运行。不过如果你的COMMAND是一个一次性命令,那么即使你使用-d参数,在容器创建成功以后,该命令会执行一次,然后该容器就会推出。


在容器内运行进程或者命令:

如果想在容器内部运行一个命令或者一个进程,可以不用连接到容器内部。使用下面的命令:

1
docker  exec  -d 容器名称或者ID COMMAND  #-d是后台运行,如果不加则会在当前控制台暑促

wKiom1joR6fRUXp7AAD2mgNAnbs316.png

如果我们想停止这个后台进程,你不能使用docker top输出的PID号,必须获取在容器中真正的PID号,然后进行KILL。

wKioL1joSDXCcVZeAAIJ9w2LAgI395.png

如果我们通过attach来附着到一个容器,然后再执行exit,那么容器也会退出,这时候如果我们进入容器执行命令,但是最后退出容器而不让容器也退出的话可以用下面的命令:

这个命令的含义是在容器中执行/bin/bash,也就是打开一个shell,由于有-it参数,就开启了STDIN和TTY,这样就进入了容器。

1
docker  exec  -it 容器名称或者ID  /bin/bash

wKiom1joSSuh4075AAEA804gXt8156.png


删除一个容器:

要想删除容器必须要先停止容器,然后再进行删除

1
2
docker stop 容器名称或者ID
docker  rm  容器名称或者ID


容器内部:

一个后台运行的容器有时我们需要知道它内部在做什么,所以我们可以通过日志功能来查看它现在正在执行任务或者通过其他命令查看它里面正在运行的进程。

我在一个容器中执行了一个PING命令

wKioL1jWbtKAVFpIAAMESK55oQM772.png

查看容器日志:

然后通过命令查看日志,它将查看整个日志

1
docker logs 容器名称或者ID

wKioL1gIGZGDbi_uAAC5oAgGODw865.jpg-wh_50

也可以通过使用参数来实现日志追踪,也就是类似于Linux命令tail -f。通过这些参数就会只显示最新更新的日子,并持续显示,而不是显示整个日志。

参数 说明
--details
查看详细日志
-f  日志追踪
--since <string> 表示从哪个时间戳开始显示
--tailf <stringr> 表示显示第几行,0表示显示最新行
-t 表示日志增加时间戳
1
docker logs -- tail  0 -f 容器名称或者ID

wKiom1jWb4CDMe97AADal_lVHSs628.png

另外可以增加-t参数来给日志增加一个时间戳

wKioL1jWb6WBXVvqAAF_vvfd2B8589.png


查看容器内部运行的进程:

1
2
#该命令和进入容器运行ps命令显示的结果一样
docker  top  容器名称或者ID

wKiom1jWb_WitkcQAACIgmVY_bQ500.png

查看宿容器资源使用信息:

1
2
3
4
5
#显示指定容器的资源使用情况
docker stats 容器名称1 容器名称2 ......
#显示正在运行的容器资源使用情况
docker satas
#显示所有(运行和退出的)容器的资源使用情况

wKiom1jWcG2C3WtcAACCJ426aRs490.png

注意:如果容器启动时不设置内存限制,那么上图中LIMIT则显示物理机内存大小,表示容器可以用的最大内存为多少。


查看容器详细信息:

1
docker inspect 容器名称或者容器ID

wKioL1jWcNShW1yDAAJFF8OoJdM233.png

但是如果信息太多也不利于分辨,有时我们只需要获取特定信息即可,这样就用到--format参数,比如我们想要获取容器是否在运行?

1
docker inspect -- format = '{{ .State.Running }}'  容器名称

wKiom1jWcSawD15MAABcqY25-tI493.png

这里就有一个问题,到底可以获取哪些信息,以及格式该如何写呢,其实这个很简单,我们看下图:

wKioL1jWcZqhnn7IAAG13deI21k568.png

这都是一级一级的,有一级的,有二级的

下面我们获取IP地址

wKioL1jWceugdpUbAABg56pt_tw407.png

结合起来有没有看出点规律呢?

注意:花括号里面的ITEM,是区分大小写的。






      本文转自linuxjavachen  51CTO博客,原文链接http://blog.51cto.com/littledevil/1863552:,如需转载请自行联系原作者




相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
820 280
|
10月前
|
Ubuntu PHP Docker
一个可以运行的Dockerfile_php ,用来创建php容器镜像
该简介描述了一个基于 Dragonwell 8 Ubuntu 的 Docker 镜像,用于构建包含 PHP 7.4 及常用扩展的运行环境。通过更换为阿里云源提升安装速度,配置了 PHP-FPM 并暴露 9000 端口,使用自定义 Dockerfile 构建镜像并成功运行容器。
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
1236 164
|
PHP Docker 容器
如何在宿主主机运行容器中的php守护进程
在Docker容器中同时运行多个程序(如Nginx+PHP+Ftp)时,需用`docker exec`命令启动额外服务。首先通过`php -v`查看PHP版本,再用`which php-fpm7.4`确认PHP安装路径,通常返回`/usr/sbin/php-fpm7.4`。最后直接运行该路径启动PHP-FPM服务,确保其正常工作。
427 14
|
人工智能 Prometheus 监控
容器化AI模型的监控与治理:确保模型持续稳定运行
在前几篇文章中,我们探讨了AI模型的容器化部署及构建容器化机器学习流水线。然而,将模型部署到生产环境只是第一步,更重要的是确保其持续稳定运行并保持性能。为此,必须关注容器化AI模型的监控与治理。 监控和治理至关重要,因为AI模型在生产环境中面临数据漂移、概念漂移、模型退化和安全风险等挑战。全面的监控涵盖模型性能、数据质量、解释性、安全性和版本管理等方面。使用Prometheus和Grafana可有效监控性能指标,而遵循模型治理最佳实践(如建立治理框架、定期评估、持续改进和加强安全)则能进一步提升模型的可信度和可靠性。总之,容器化AI模型的监控与治理是确保其长期稳定运行的关键。
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
351 1
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
456 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
674 5
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
429 4