docker之旅 2.在docker里面安装第一个镜像,docker里面卸载镜像
刚安装好docker ,兴匆匆的去安装 nginx 的时候,遇到了坑。
大概意思就是说我的centos7 SSL/TLS证书过期或者不可用。
[henry@192 ~]$ docker pull nginx Using default tag: latest latest: Pulling from library/nginx b0a0cf830b12: Retrying in 10 seconds 8ddb1e6cdf34: Retrying in 10 seconds 5252b206aac2: Retrying in 10 seconds 988b92d96970: Waiting 7102627a7a6e: Waiting 93295add984d: Waiting ebde0aa1d1aa: Waiting error pulling image configuration: download failed after attempts=6: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2024-04-25T06:16:37+08:00 is after 2021-09-30T14:01:15Z
一、更新系统的 SSL/TLS 证书:
1.安装最新的 CA 证书包:
这将安装最新版本的 CA 证书包,其中包含了根证书等重要的 SSL/TLS 证书。
sudo yum install ca-certificates
2.更新证书存储库:
sudo update-ca-trust force-enable
这将强制更新证书存储库。
3.导入新的 CA 证书:
如果您有其他的 CA 证书需要添加到系统中,可以将它们放置在 /etc/pki/ca-trust/source/anchors/
目录下,并运行以下命令:
sudo update-ca-trust extract
验证更新:
您可以使用以下命令验证证书存储库是否已成功更新:
sudo update-ca-trust check
二、禁用 TLS 验证(不推荐):
如果以上方法都无法解决问题,您可以考虑暂时禁用 TLS 验证。但这不是一个推荐的解决方案,因为会降低安全性。
您可以通过编辑(管理员模式) Docker 配置文件来禁用 TLS 验证。打开 Docker 配置文件(一般位于 /etc/docker/daemon.json
),添加以下内容:
{ "insecure-registries": ["docker.io"] }
后来通过对比,以及查阅其他人的解决方案。解决这个问题有2个方法。
1.chatgpt推荐的 禁用 TLS 。通过配置 "insecure-registries": ["docker.io"]来实现。
2.通过修改注册源的方式。通过配置 "registry-mirrors" 来实现。
2种方法任何1种都可以。下面是 /etc/docker/daemon.json 的配置内容。
{ "insecure-registries": ["docker.io"], "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://dockerhub.azk8s.cn", "https://registry.docker-cn.com" ] }
保存并关闭文件
重启docker服务使更改生效
sudo systemctl restart docker
踩坑结束! 开始我们真正要做的事情。
要在 CentOS 7 上的 Docker 中安装 Nginx 并验证安装成功,您可以按照以下步骤进行操作:
-
在 Docker 中安装 Nginx:
在 Docker 中安装 Nginx 非常简单,您可以使用 Docker Hub 上的官方 Nginx 镜像。执行以下命令:
docker pull nginx
这将从 Docker Hub 下载官方的 Nginx 镜像到您的本地 Docker 环境中。
-
启动 Nginx 容器:
使用以下命令启动 Nginx 容器:
docker run --name myNginx -d -p 80:80 nginx
--name my-nginx
:指定容器的名称为myNginx
。-d
:以后台方式运行容器。-p 80:80
:将容器的 80 端口映射到主机的 80 端口,这样您就可以通过主机的 IP 地址访问 Nginx 服务了。
-
验证 Nginx 是否运行:
您可以使用
docker ps
命令来查看正在运行的 Docker 容器:docker ps
如果 Nginx 容器正在运行,您应该会在输出中看到类似以下的内容:
[henry@192 docker]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a31d8355ec5c nginx "/docker-entrypoint.…" 21 minutes ago Up 21 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp myNginx
现在,Nginx 已经在 Docker 容器中运行,并且通过主机的 80 端口进行访问。
-
验证 Nginx 是否可访问:
打开 Web 浏览器,输入您的 CentOS 7 主机的 IP 地址(如果是本地测试,可以输入
localhost
或127.0.0.1
),然后访问http://localhost
或http://<您的IP地址>
。如果一切正常,您应该能够看到 Nginx 的欢迎页面,这意味着 Nginx 安装成功并正在运行。
通过以上步骤,您就成功在 CentOS 7 的 Docker 中安装并验证了 Nginx。
docker 下面如何删除一个 已经正在运行的nginx?
要卸载 Docker 中的已安装且正在运行的 Nginx 容器,您需要执行以下步骤:
-
停止 Nginx 容器: 首先,您需要停止正在运行的 Nginx 容器。您可以使用
docker ps
命令列出正在运行的容器,并找到 Nginx 容器的 ID 或名称。然后使用docker stop
命令停止该容器。例如:docker stop <container_id_or_name>
-
删除 Nginx 容器: 一旦停止了 Nginx 容器,您就可以使用
docker rm
命令将其从系统中删除。例如:docker rm <container_id_or_name>
-
卸载 Nginx 镜像: 安装 Nginx 时可能已经下载了 Nginx 镜像到您的系统中。如果您想要彻底清除 Nginx 镜像,可以使用
docker rmi
命令。首先,您需要查找已安装的 Nginx 镜像的 ID 或名称,然后使用docker rmi
命令删除它。例如:
docker rmi <image_id_or_name>
下面是我本机操作的记录:
[henry@192 docker]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a31d8355ec5c nginx "/docker-entrypoint.…" 21 minutes ago Up 21 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp myNginx [henry@192 docker]$ [henry@192 docker]$ [henry@192 docker]$ [henry@192 docker]$ docker stop a31d8355ec5c a31d8355ec5c [henry@192 docker]$ docker rm a31d8355ec5c a31d8355ec5c [henry@192 docker]$ docker rmi myNginx Error response from daemon: invalid reference format: repository name (library/myNginx) must be lowercase [henry@192 docker]$ docker rmi a31d8355ec5c Error response from daemon: No such image: a31d8355ec5c:latest [henry@192 docker]$ docker rmi nginx