剛安裝好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
chatgpt 有一個 不推薦的做法
禁用 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