最近頻繁在使用 docker,特別把 image、container 和 Dockerfile 之間的轉換抓出來記一下。

A. image -> container

這條路我們常常走,從已有的 image (不論是我們自己創還是拉別人的) 創建 container。

(舉例)

1
docker run <container>

B. Dockerfile -> image

Dockerfile 的寫法 這裡先略過。

主要就下面的指令,. 表示使用當前目錄下的 Dockerfile,當然也可以指定其他資料夾下的。

1
docker build .

但通常會幫他加上 name (<Docker Hub 帳號>/image_name)

可以在 build 時就指定,

1
docker build -t <name> .

也可以事後給。

1
docker tag <image id> <image name>

創建完成後 docker images 應該就能看到剛剛建立的 image

C. container -> image

我們可能在 container 內做了一些更改,想要把這個做了更動的 container 轉成 image。

(例如用 docker exec 進去改了一些檔案)

1
docker exec -it <container> /bin/sh

透過以下指令,把這個執行中的 container 轉成 image。

1
docker commit <container id> <new image name>

把 docker image 推上 Dockerhub

  1. docker login

輸入帳號密碼後,若成功會顯示 Login Succeeded

1
docker login
  1. 在 Dockerhub 網站創建一個 repo

https://hub.docker.com/repositories

點選 Create Respository

創一個 Repo

  1. 將 image 上傳至指定 repo
1
docker commit <image name>

這樣之後在其他地方也可以用 docker pull 把之前打包好的 image 拉下來了