02 - 入門 & Nginx 服務 & Docker 概念【合集】

jsliang發表於2022-03-03

經過前文的操作,安裝完畢後,我們就開始折騰吧:

  • 在 Docker 上部署一個 Nginx 服務,上面放一個簡單的 index.html 頁面
  • 解釋 Docker 中 Dockerfile、映象、容器等概念,並提前佈局修改映象源

那麼,Here we go~

一、指令操作

首先,我們新建個 demo-01 的資料夾,之後控制檯輸入:

  • 跳轉到該資料夾:cd demo-01

並在裡面存放 2 個檔案:

Dockerfile
# 本映象拷貝自 Nginx 映象
FROM nginx

# 將當前目錄下的 index.html 挪到 Nginx 的 html 目錄中
COPY ./index.html /usr/share/nginx/html/index.html

# 對外暴露本映象的 80 埠
EXPOSE 80
index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Hello Docker</title>
  <style>
    /* 設定頁面居中顯示 Hello Docker! */
    body {
      margin: 0 auto;
      width: 1000px;
    }
    h1 {
      text-align: center;
    }
  </style>
</head>
<body>
  <h1>Hello Docker!</h1>
</body>
</html>

然後,我們編寫指令建立映象(Image):

  • docker image build ./ -t docker-nginx:1.0.0

Docker-demo-01.png

接著,我們建立容器(Container):

  • docker container create -p 2222:80 docker-nginx:1.0.0

Docker-demo-02.png

此時控制檯返回一串字元,即 建立容器得到的結果

最後,我們執行這個容器(Container):

  • docker container start 312b8278e11373cb3211faeab53b7f0b47e996b5e84fc58

Docker-demo-03.png

這時候,如果你開啟介面:http://127.0.0.1:2222/

你就會看到:

Docker-demo-04.png

恭喜你!入手 Docker 啦~

有區域網或者 WIFI 的小夥伴,可以修改 ip 地址(http://ip 地址:2222/)看看,正常情況下是可以訪問成功的。

二、小結

那麼,經過這一系列操作,開啟了 Nginx 服務,那麼這裡面的一些內容:Dockerfile、映象以及容器等是什麼東東呢?

所以,我們有幾個概念需要理解:

  • Dockerfile 是什麼?
  • 映象(Image)是什麼?
  • 容器(Container)是什麼?

下面我們會一一講解,並且羅列下像 jsliang 這樣的新手,入門時候都應該懂哪些指令。

三、Dockerfile 是什麼?

Dockerfile 是一個用來構建映象的文字檔案,文字內容包含了一條條構建映象所需的指令和說明。

Docker 通過讀取 Dockerfile 中的指令自動生成映象。

Dockerfile 可以使用在命令列中呼叫任何命令。

Dockerfile 一般分為四部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時執行指令。

簡單來說:你可以通過 Dockerfile,告訴 Docker 編譯的時候需要注意什麼情況,就好比你通過 package.json,告訴 npm 我需要安裝的包都有哪些一樣。

參考文獻:華為雲 - 什麼是 Dockerfile

四、映象(Image)是什麼?

映象是一個檔案系統,提供了容器執行時需要用到的檔案和引數配置。

相當於平時在使用某個軟體時需要下載的安裝包,也相當於安裝作業系統時需要用到的 ISO 檔案。

簡單來說:你可以把映象(Image)看成是一張 Windows 11 的系統光碟,然後哪部電腦需要安裝新系統,就基於這張光碟安裝就可以了。

在 Docker Hub 上面有許許多多的映象,感興趣的小夥伴可以前往檢視和下載:https://hub.docker.com/

值得一提的是:

  • 國內官方源下載速度會比較慢,所以跟 npm 一樣切換個國內源地址是不錯的選擇,例如 中國科學技術大學(中科大)、阿里雲、網易、Docker 官方中國區等
映象倉庫名稱連結
Docker 官方中國區https://registry.docker-cn.com
網易 163http://hub-mirror.c.163.com
中國科學技術大學https://docker.mirrors.ustc.e...
阿里雲https://<你的ID>.mirror.aliyuncs.com

Mac 修改方式

  1. 修改 Docker 映象倉庫配置:sudo vim /etc/docker/daemon.json
  2. 修改配置檔案:
daemon.json
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
}
  1. 使配置檔案生效:sudo systemctl daemon-reload
  2. 重啟 Docker:sudo service docker restart

Windows 修改方式

Docker-demo-05.png

修改完畢後,通過指令 docker info 檢視:

Docker-demo-06.png

當然,需要注意的是:切換源重啟後,會導致當前的容器暫停掉,重啟回來就行了。

參考文獻:知乎 - 測試的能量 - Docker 入門:映象 image

五、容器(Container)是什麼?

容器(Container),就是一種輕量級的虛擬化技術,目的和虛擬機器一樣,都是為了創造 “隔離環境”。

映象(Image)和容器(Container)的關係,就像是面向程式設計中的 例項 一樣,映象是靜態的定義,容器是映象執行時的實體。

結合我們前面的小例項,我們會看到:

  • 建立映象(Image):docker image build ./ -t hello-docker:1.0.0
  • 建立容器(Container):docker container create -p 2222:80 hello-docker:1.0.0

在這裡,我們建立容器的時候,其中 hello-docker:1.0.0 就是映象的 REPOSITORY 和 TAG,我們基於這個映象,建立了一個容器,並指定了它的埠。

同時,在說到埠的時候,我們講到了 宿主機,宿主機即相對於容器來說的主機,即 jsliang 的手提筆記本的 Windows 10 系統。

敲重點!後面會有 宿主機 的出現,別漏知識點啦!

六、小結

瞭解完這些知識點後,我們是時候再操作操作,回顧下內容了!

所以下篇,我們會講解;04 - 入門 & Node 服務

敬請期待!


不折騰的前端,和鹹魚有什麼區別!

覺得文章不錯的小夥伴歡迎點贊/點 Star。

如果小夥伴需要聯絡 jsliang

個人聯絡方式存放在 Github 首頁,歡迎一起折騰~

爭取打造自己成為一個充滿探索欲,喜歡折騰,樂於擴充套件自己知識面的終身學習橫槓程式設計師。

jsliang 的文件庫由 樑峻榮 採用 知識共享 署名-非商業性使用-相同方式共享 4.0 國際 許可協議 進行許可。<br/>基於 https://github.com/LiangJunrong/document-library 上的作品創作。<br/>本許可協議授權之外的使用許可權可以從 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 處獲得。

相關文章