Read: Docker專業養成
https://ithelp.ithome.com.tw/articles/10191016
Install 安裝
-
Mac OS
- Docker 官網下載Docker for Mac壓縮檔(Docker.dmg),直接解壓放到application資料夾,啟動應用程式即可。
- Mac版本的Docker只要安裝好就包含了docker-compose,不用另外安裝》
-
Ubuntu
- 直接參考官方安裝方式,照做即可。
- 要注意的是,Ubuntu的Docker,docker-engine和docker-compose是要分開安裝的。
Image 映像檔
-
映像檔名稱:
組成有三個部分: “Namespace/Repository:Tag:”
- Namespace: 印象檔的命名空間,通常會有建制印象的單位或人的名稱代號在裡面。
- Repository: 印象檔的名稱,通常會和裡面包含的應用程式有關。
- Tag:用以區分版本。
-
取得映像檔
-
下載docker映像檔:docker pull
- 未給予映像的命名空間時,會是下載Docker官方管理的映像。
- 未給予印象的tag時,會下載最新版本latest
$ sudo docker pull imageName # example: $ sudo docker pull ubuntu # example 有映像空間和tag $ sudo docker pull registry.hub.docker.com/ubuntu:latest-
搜尋docker映像檔:docker search
- 透過搜尋官方的映像倉庫Docker hub
$ docker search imageName # example: $ docker search php- 搜尋的結果會包含幾項資訊:
- Name: 映像檔名稱。
- Description: 描述。
- Stars: 映像檔受歡迎程度。
- Official: 是否為官方Docker維護的映像檔。
- Automated: 映像檔是否自動建構。
-
-
常用指令:
1. 檢視已存在的映象檔
$ sudo docker images
* Repository: 名稱 * Tag: 標籤 * Image ID: id * Created: 建立時間 * Size: 大小2. 刪除映像檔:
$ sudo docker rmi id_or_name- 若是此映像檔正有container在執行,則可用強制刪除的方式:
$ sudo docker rmi -f id_or_name,但一般來說不建議用此方式。
- 若是此映像檔正有container在執行,則可用強制刪除的方式:
Repository
use dockerhub( to be continue…)
Container
-
建立container並運行
1. 前台運行,可在終端機上觀察到
$ sudo docker run -it image_name2. 後台運行
$ sudo docker run -d image_name3. 為container命名
$ sudo docker run -d --name container_name image_name -
停止container
$ sudo docker stop id_or_name
-
啟動container
$ sudo docker start id_or_name
-
重啟container = docker stop + docker start
$ sudo docker restart id_or_name
-
刪除container
- 刪除已停止的container
$ sudo docker rm id_or_name- 強制刪除運行中的container
$ sudo docker rm -f id_or_name -
常用指令
1. 檢視container

- 檢視所有運行中的container
$ sudo docker ps- 檢視所有container
$ sudo docker ps -a- 檢視最後一個建立的container
$ sudo docker ps -l- 檢視最後x個建立的container
$ sudo docker ps -n x
Data Volume 資料卷
因為docker container本身並非永久存在,一旦刪除裡面的資料和log會消失,但有時候會有需要保存的資料,就會需要透過volumn將container裡面的資料夾和外面連動,即便container掛掉或刪掉,該保留的資料並不會受影響。
-
建立volume
1. 隨container建立 (-v folder_path)
- 使用 -v 指定掛載的資料夾
$ sudo docker create --name container_name -v folder_path image_name- 可同時掛載多個資料夾
$ sudo docker create --name container_name -v folder1 -v folder2 image_name2. 直接建立volume(之後啟動docker run 時,再指定掛載的資料夾。)
$ sudo docker volume create --name volumn_name -
掛載volumn
1. 將外部資料夾掛載到已經建立的volume
$ sudo docker volume create --name volume_name $ sudo docker run -it --name container_name -v out_folder:volume_name image name # example: $ sudo docker volume create --name html $ sudo docker run -it --name website -v /home/users/xxxx/websites/html:html ngix2. Volume container ( —volumes-from)
(to be continue…)
-
刪除volomn
1. 直接刪除volume
不建議這種方式,因為可能有其他container正在使用這個volume而導致錯誤
$ sudo docker volume rm volume_name2. 隨container一起刪除volume(-v)
建議採用此種方式!
$ sudo docker rm -v container_name
Dockerfile
用來自動化的建立image
- 建立並編輯Dockerfile
- 用dockerfile建立image
此指令會自動尋找當前目錄的dockerfile
$ sudo docker build image_name
Docker Compose
使用“docker-compose.yml”檔案啟動多個container。
Docker 實際範例
Postgresql
- 拉取image
$ docker pull postgres
- 啟動container(可搭配 -itd, —rm。)
$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
- 連進去已啟動的container
$ docker exec -it {container id} psql -U $PG_USER