iT邦幫忙

0

【Docker】01 安裝與入門

  • 分享至 

  • xImage
  •  

1. 基本概念

image: 映像檔。只能讀取。可以從網路下載或是自己建立。
container: 容器。建立在 image 之上,將多個 image 包裝成一個專案環境。

2. 在 Windows 啟用相關功能

啟動 Windows 程式的 HyperV 、虛擬平台、Windows Subsystem,並重啟電腦。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098I015zlHncV.png

3. 安裝 Ubuntu

到 Microsoft Store 安裝 Ubuntu
https://ithelp.ithome.com.tw/upload/images/20220412/20148098OVqWbN6v8f.png

安裝, 然後開啟。
接著會自動開啟 Ununtu 命令視窗(shell),要設定帳號密碼。設定完可以先關閉。或是按 exit 退出。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098BzZU9JbnXx.png

開啟 Windows 的 CMD 視窗,執行 wsl -l -v
https://ithelp.ithome.com.tw/upload/images/20220412/20148098UCsrLB4CbC.png

中間那個 Ubuntu 所對應的 wsl 如果是 1,請改成 2
wsl --set-version Ubuntu 2

4. 安裝 Docker

可以在 google 搜尋 docker hub,第一筆記錄應該就是官網,或是直接使用下面網址
https://hub.docker.com/editions/community/docker-ce-desktop-windows
https://ithelp.ithome.com.tw/upload/images/20220412/20148098z2CcR0Xi7B.png

下載後,檔名是 Docker Desktop Installer.exe 。只要點擊安裝就可以。安裝好後重新啟動 docker。第一次會有同意條款。選擇 Accept 就好。

可能會要求安裝更新包
https://ithelp.ithome.com.tw/upload/images/20220412/20148098tBLIfAmT5g.png

預設安裝路徑
%localappdata%\Docker\wsl
上面的連結會自動開啟 Windows 使用者資料夾底下的 wsl
像這樣
C:\Users\使用者名稱\AppData\Local\Docker\wsl
使用者名稱要改成自己的。

應該會看到兩個資料夾

C:\Users\使用者名稱\AppData\Local\Docker\wsl\
    data
        ext4.vhdx       916MB
    distro
        ext4.vhdx     106MB

進入 docker 程式
Settings / General
把這個打勾 "Use the WSL 2 based engine"
https://ithelp.ithome.com.tw/upload/images/20220412/20148098MYvGYTQlgQ.png

Settings / Resources
把這個打勾 "Enable integration with my default WSL distro"
然後再把 Ubuntu 打開
https://ithelp.ithome.com.tw/upload/images/20220412/201480986mh6eDZOaD.png

如果沒有 Ubuntu 的開關,可能是因為沒有先去 Microsoft Store 安裝 Ubuntu,或者雖然裝了,但是 wsl 版本沒有切換到 2

5. 安裝 Windows Terminal

這個不裝也可以。比較 CMD, PowerShell, Windows Terminal,可以參考這篇
https://techwiser.com/command-prompt-vs-powershell-vs-windows-terminal-comparison/
重點: Windows Terminal 可以支援 Linux 子系統,可以用 BASH 指令,例如 ls。還可以分頁。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098Bxt5yCGzab.png

6. 確認 Windows 資料夾

開啟命令視窗,然後輸入 wsl
https://ithelp.ithome.com.tw/upload/images/20220412/20148098INaYzg3mMn.png
預設會進入 C槽的使用者資料夾。可以看到 C 槽掛在 mnt 下面。

在檔案總管輸入 \\wsl$ ,應該可以看到
docker-desktop
docker-desktop-data
Ubuntu

Ubuntu 裡面的 home/[使用者名稱] 是家目錄。將來安裝 container 的時候很有可能會安裝在這裡面。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098H1wKL0iW5d.png

7. 安裝 node

在 node 官網下載安裝檔。安裝過程問到 chocolatey,這個不用勾。很簡單的安裝。裝完要重新啟動。

8. 建立專案

建立一個資料夾,可以取名為 hello-docker
在裡面建立一個檔案,取名為 app.js,內容只要寫一行
console.log("Hello Docker!");
開啟命令視窗,進到這個資料夾,執行 node app.js
D:\docker\hello-docker\node app.js
應該會看到結果
https://ithelp.ithome.com.tw/upload/images/20220412/20148098fGGnZY6syY.png

9. 建立image

建立 Dockerfile
D:\docker\hello-docker\Dockerfile

FROM node:alpine 
COPY . /app 
WORKDIR /app 
CMD node /app/app.js

執行
docker build -t hello-docker .
注意結尾有一個點

執行完畢之後,到 docker 介面可以看到剛剛建立的 image。檔案會把 node 跟其它東西打包進去,所以雖然自己的內容只有一行,仍高達168MB。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098L5FobXqSH3.png

10. 建立container

docker run -d --name hellooo hello-docker
https://ithelp.ithome.com.tw/upload/images/20220412/20148098x4D2xq0TCh.jpg

11. 從當前的container再建立成image
請使用 CMD 視窗,不要用 PowerShell。因為後者做出來的容量可能會加倍。下面的網址講到,可能是因為 PowerShell 在輸出的時候會多2個空白字元。
https://stackoverflow.com/questions/40622162/docker-load-and-save-archive-tar-invalid-tar-header

Powershell emits two byte characters to STDOUT, not one byte characters. If you look in the file you'll notice that the TAR header has nulls between what should be the correct header (and in the rest of the file). This explains why the file is twice the size.

提交 image
格式:docker commit 容器名稱 使用者名稱/映像檔名稱
docker commit hellooo newhelloo

將映像檔存成 tar 檔
docker save newhelloo > newhelloo.tar
https://ithelp.ithome.com.tw/upload/images/20220412/20148098ap5u5IXmyn.jpg

12. 匯入
把 docker 裡面的 newhello 這個 image 刪掉。
執行
docker load --input newhelloo.tar
這時候可以看到 newhello 又出現在 image 裡面了。
https://ithelp.ithome.com.tw/upload/images/20220412/20148098LzkyrLhzaP.jpg

參考
Windows 上的 Docker 引擎
https://docs.microsoft.com/zh-tw/virtualization/windowscontainers/manage-docker/configure-docker-daemon

Docker Tutorial for Beginners
https://www.youtube.com/watch?v=pTFZFxd4hOI


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言