使用 Dcoker 部署 nginx
搜尋 nginx 映象
- 使用 docker search nginx
# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15246 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2053 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 815 [OK]
...
- 或者在 dockerhub 上搜尋 nginx,具體的版本和詳細資訊會更加全面,一般使用官方的
拉取 nginx 映象
拉取 nginx 映象,我們這裡就拉取最新版本的 nginx
# docker pull nginx
Using default tag: latest # 最新版本
latest: Pulling from library/nginx # nginx 庫
33847f680f63: Pull complete #分層下載,後續會詳細學習分層的原理
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 # 簽名
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest # nginx真實下載路徑
建立並執行容器
- 新建一個容器命名為 nginx1
- nginx 預設埠是 80,將 docker 容器中的 80 埠對映程 主機中的 8888 埠
- 設定後臺執行 nginx 容器
# docker run -d --name nginx1 -p 8888:80 nginx
2772a40501571630fb6fc2305f41f7a409299c4d15595ba3dd654d73f2a5e7b6
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2772a4050157 nginx "/docker-entrypoint.…" 2 seconds ago Up 2 seconds 0.0.0.0:8888->80/tcp nginx1
驗證
使用 curl 命令,訪問一下 主機的 8888 埠,檢視是否訪問 OK
# curl localhost:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
我們們也可以進入到 nginx docker 容器中,直接訪問 80 埠
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2772a4050157 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 0.0.0.0:8888->80/tcp nginx1
進入 nginx1 的終端
# docker exec -it nginx1 /bin/bash
訪問 80 埠
# curl localhost:80
小結
因為我們在建立 nginx1 容器的時候,將主機的 8888 埠,對映到了 容器 nginx1 的 80 埠,因此可以訪問主機的 8888 埠來訪問到 nginx1 容器中的 80 埠
此時,可以訪問我的阿里雲伺服器的 8888 埠,實際是可以訪問到我的 nginx1 容器中的 nginx 伺服器
嘗試使用和部署 視覺化 Docker 頁面 portainer
portainer 是 Docker 圖形化頁面管理工具,他提供了一個後臺皮膚供我們操作和管理。
建立和啟動 portainer
docker run -d -p 8888:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
可選引數說明:
- –restart
當容器退出的時候,重啟策略是什麼樣的,這裡使用 always ,預設值是 “no”
- -v
繫結掛載卷
- –privileged
給予這個容器擴充套件許可權
- -p 8888:9000
將容器裡面的 9000 埠,對映到主機的 8888 埠,便於我們訪問主機 8888 埠的時候,可以訪問到 portainer 容器的 9000 埠
訪問和設定 portainer 使用者
瀏覽器訪問:IP:8888
設定密碼,點選 Create users 即可看到如下頁面
解釋一下上述畫紅線的地方:
0 stacks
Stacks就是一組一致執行的、相互關聯的services
1 container
1個容器
- 1 volume
1 個掛載卷
- 3 images
3 個映象
我們到主機上面檢視 docker 的系統資訊
docker info
進入到我們自己的 docker 服務,可以看到上述解釋的每一個項
我們們點進 images 看看效果:
我們可以在這個 web 管理頁面看到我們 docker 服務中 3 個映象的詳情,也可以對映象進行刪除,新建,匯入和匯出
感興趣的話,可以自己多熟悉和嘗試一下 portainer 的使用,以後我們做 CI/CD 的時候,會使用 Rancher
大家學習的時候,可以多多交流,多多練習,多多檢視幫助文件,或者在命令列裡面使用 –help 來檢視都有哪些引數,例如:
用法: docker run [引數] 映象 [命令] [命令的引數列表…]
Run a command in a new container
引數:
-a, –attach list Attach to STDIN, STDOUT or STDERR
-c, –cpu-shares int CPU shares (relative weight)
-d, –detach 後臺執行容器
-e, –env list 設定環境變數
-h, –hostname string Container host name
-i, –interactive Keep STDIN open even if not attached
-l, –label list Set meta data on a container
-m, –memory bytes 記憶體限制
-p, –publish list Publish a container’s port(s) to the host
-P, –publish-all Publish all exposed ports to random ports
-t, –tty Allocate a pseudo-TTY
-u, –user string 使用者名稱或者uid
-v, –volume list 掛載卷
-w, –workdir string 設定容器中的工作目錄
參考資料:
歡迎點贊,關注,收藏
朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力
好了,本次就到這裡
技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。
我是小魔童哪吒,歡迎點贊關注收藏,下次見~
本作品採用《CC 協議》,轉載必須註明作者和本文連結