【Docker 系列】docker 學習 三

小魔童哪吒發表於2021-11-06

【Docker 系列】docker 學習 三

使用 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 --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 設定容器中的工作目錄

參考資料:

docker docs

歡迎點贊,關注,收藏

朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這裡

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

我是小魔童哪吒,歡迎點贊關注收藏,下次見~

相關文章