Docker - 第二章 | 基本指令
在開始之前建議大家還是先把 第一章 - Docker 簡介 做個初步的了解,而且對於「Docker 名詞的基本觀念」要特別注意其觀念。
然而Docker可以產生VM(OS Level),所以指令非常的多,在這邊只把初學者常用到的命令列出來,進階的就用到再去官方查詢即可或使用docker help指令。
Docker Help
- Docker提供了查看所有的指令的指令,只需要輸入下方指令即可
1 | docker help |
指令清單
1 | sage: docker COMMAND |
- 如需查看每個指令的詳細參數,如針對run查詳細參數的指令
1 | docker run --help |
參數清單
1 | Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
Docker Image 常用指令
Docker 搜尋 Image
1
2
3
4docker search image-name
docker search debian
docker search nginx
Docker 下載 Image
兩種方式,第一種直接透過指令來尋找Image,第二種 Docker Hub 中尋找,
後者網頁上會列出有關於該Image的資訊,例如如何設定、如何下載、如何執行等。1
2
3
4
5
6
7
8
9
10
11# 抓所有 ubuntu image 回來, tag 可於後面附加上去
docker pull ubuntu
# 只抓取 Ubuntu 16.04 的 Image
docker pull ubuntu:16.04
# library/debian - Docker Hub,latest 只會抓最新版 (Debain Docker 官方版)
docker pull debian:latest
# library/ubuntu - Docker Hub
docker pull ubuntu:latest列出本機 Image
1
docker images
複製 Image
1
2# 如想複製一個image`openjdk:8-jre-alpine`,同時命名為`j.j.huang/openjdk:1`
docker tag openjdk:8-jre-alpine j.j.huang/openjdk:1
刪除 Image
1
2
3
4
5
6
7
8
9
10
11
12
13
14# docker images 可以看到 image-id
docker rmi image-id
# 強置刪除
docker rmi -f image-id
# 移除所有 docker images
docker rmi $(docker images -q)
# 移除所有 docker images
docker rmi docker images -qa
# 移除所有沒有 tag 的 image
docker rmi $(docker images -f "dangling=true" -q)
Docker Container 常用指令
- 運行 Container
1
docker run redis:3.2

1 | -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR |
例如redis,指定其端口對應16379:6379,後台運行Container,並返回ContainerID
1 | docker run -p 16379:6379 -d redis:3.2 |
列出運行中 Container
1
docker ps
列出所有運行/停止 Container
1
dokcer ps -a
停止 Container
1
2# docker stop container id
docker stop ac3839486d9b
啟動已停止 Container
1
2# docker start container id
docker start ac3839486d9b
重新起動 Container
1
2# docker restart container id
docker restart ac3839486d9b
強制停止 Container
1
2# docker kill container id
docker kill ac3839486d9b
移除 Container
1
2# docker rm container id
docker rm ac3839486d9b只能刪除已經停止的Container,若需要刪除正在運行的Container,可加入-f參數

進入 Container
1
2
3
4
5
6
7# docker exec -it ContainerID 參數
docker exec -it 58954298f36e redis-cli
# 參數說明:
-d:分離模式: 在後台運行
-i:即使沒有附加也保持STDIN 打開
-t:分配一個偽終端
另存 Container
1
2
3
4
5
6
7
8# docker commit [options] Containerid name:tag
docker commit 58954298f36e jjhuang.com/redis:1
# 參數說明:
-a:提交的image作者
-c:使用Dockerfile指令來建立image
-m:提交時的說明文字
-p:在commit時,將Container暫停我們常在運行Container做很多的相關設置或是優化,但是當Container被刪除後,這些修改配置就都會消失;所以此時我們需要的就是將當前Container另外儲存成image。

Docker 其他指令
Docker 版本資訊
1
2docker version
docker info本機與Container檔案傳輸
1
2
3
4# docker cp Container名:要拷貝的文件在 Container 裡面的路徑 要拷貝到宿主機的相應路徑
# docker cp 要拷貝的文件路徑 Container名:要拷貝到 Container 裡面對應的路徑
docker cp 58954298f36e:/opt/xxx.json /opt
docker cp /opt/xxx.json 58954298f36e:/opt
以上只是列出比較基本常用的指令,還有很多好用的指令,在後面的文章有用到,會再另外做說明
註:以上參考了
Tsung 的 Docker 初學筆記 - 基本指令操作教學 文章。
Docker 的 docker docs
RUNOOB.COM 的 Docker 命令大全