本文以下列情境進行說明:由 Docker Registry (Container Registry) 取得 Nginx Image、執行 Container 並添加檔案或程式、退到背景與檢查執行狀態、打包新的 Image、最後上傳至 Docker Registry。
使用 Nginx 為 Web APP 為範例
-
取得官方所提供之 nginx image
docker pull nginx
-
啟動 nginx 成為 web server
docker run -d -p 8080:80 --name webserver nginx
參數 說明 -d 同於 --detach,是將 container 以背景方式執行 -p 將本機 port 對應到 container 中的 port –name 指定容器名稱 nginx 為 docker image 名稱 執行後,在瀏覽器輸入 localhost:8080,便可以看到 Welcome to nginx! 網頁
-
停止、啟動、重啟 container
docker stop webserver docker start webserver docker restart webserver
-
進入 container shll Section
首先確定 container 在執行狀態,輸入下列指令,可以進入 shell 環境docker exec -it webserver sh
數 說明 i 同於 --interactive,保持 STDIN 互動模式 t 同於 --tty,為 pseudo-tty,進入終端機模式,通常與 -i 同時使用,可直接輸入 -it Nginx 預設首頁位於 /usr/share/nginx/html/index.html,可以使用下列指令來確認:
# cat /usr/share/nginx/html/index.html
在 bash 命令下,可以輸入 exit 離開 terminal,回到 PowerShell。
-
複製檔案取代預設網頁
簡單撰寫一個 Hello World 的 HTML<!DOCTYPE html> <html> <head> <title>Hello World Sample</title> </head> <body> Hello World! </body> </html>
透過 docker cp 將檔案覆蓋 container 的首頁
docker cp ./index.html webserver:/usr/share/nginx/html
在瀏覽器輸入 localhost:8080,便可以看到首頁已更新。
-
建立新的 image name
使用 docker commit 將 container 儲存為新的 image。docker commit webserver <docker_hub_account>/hello_world_nginx:1.0
-
停止並刪除 container
接下來停止目前執行中的 container,並刪除docker stop webserver docker rm webserver
-
測試新建立的 docker image
執行新建立的 docker image,並以瀏覽器測試 localhost:8080docker run -d -p 8080:80 \ --name webserver \ <docker_hub_account> \ /hello_world_nginx:1.0
-
登入 docker hub 並將新的 docker image 上傳
首先登入 docker hubdocker login
接下來便可以上傳至 docker hub
docker push <docker_hub_account> \ /hello_world_nginx:1.0
完成後,便可以在 docker hub 網頁中,看到新增的 docker image。
參考資料:
Docker 指令小抄
How to Create a Docker Image From a Container
沒有留言:
張貼留言