Docker常用相關指令
本文最後更新於:2024年10月18日 11:30
Docker
Docker 常用指令
1 |
|
容器相關
1
2
3
4
5
6
7docker ps # 查看狀態
docker ps -a # 查看所有狀態
docker run -it --name <name> <image> <command> # 新建、啟動並執行指令
docker start <container> # 啟動
docker stop <container> # 停止
docker restart <container> # 重啟
docker rm <container> # 移除映像檔相關
1
2
3
4docker build -t <image>[:tag] <path> # 從dockerfile建立
docker images # 列出
docker image ls # 列出
docker image rm # 移除
因Docker可能裝在root權限底下,如沒有root使用Docker的權限,請在各指令前加sudo!
查看容器使用狀態
1 |
|
Container的使用狀態會列出Container ID、所使用的IMAGE(映像檔)位置、啟動容器之後會執行的COMMAND(指令)、哪時候被CREATED、目前的STATUS、對應到的PORTS(連接埠),以及Container的NAMES(名稱)。
若後面不加任何options僅會列出正在運行的Container。
查看各Container的CPU、記憶體及網路使用
1 |
|
在外部向容器內執行指令
1 |
|
表示進入Container後第一個執行的是bash介面。
列出Docker服務並查詢服務狀態
列出Docker服務
1 |
|
將會列出各個服務的ID、NAME(名稱)、MODE(模式)、REPLICAS(複本)、所使用到的IMAGE(映像檔),以及所對應到的PORTS(連接埠)。
查詢服務狀態
1 |
|
查看Swarm Nodes
1 |
|
再利用查到的ID或名稱去查詢該服務狀態。
移除多餘容器(container)、網路(network)、映像(image)、數據卷(volume)
1 |
|
[OPTIONS]有-a
及-f
。
其他指令
1 |
|
DOCKER RUN
功能:從映像檔啟動容器。
-d
- 在背景運行容器,並列出容器ID-i
- 保持stdin-t
- 分配pseudo-TTY-p <host_port>:<container_port>
- 本機的通訊埠對應到容器的通訊埠-v, --volume <host_dir>:<container_dir>
- 掛載本機目錄至容器(自動建立)--mount <type=bind,source=host_dir,target=container_dir>
- 掛載本機目錄至容器-w, --workdir <container_dir>
- 指定工作目錄--name <name>
- 指定容器名稱
1 |
|
DOCKERFILE
若現有的image儲存庫無法滿足功能需求,可以透過dockerfile,在現有的image儲存庫上,構建自己的image。
Dockerfile關鍵字使用說明
1
2
3
4
5
6
7
8
9
10
11
12FROM <image>[:<tag>] # 映像檔:版號
ADD [--chown=<user>:<group>] <src>... <dest> # 從<src>複製至image的<dest>處(支援從遠端下載,tar.gz檔自動解壓縮)
COPY [--chown=<user>:<group>] <src>... <dest> # 從<src>複製至image的<dest>處(僅支援本地複製)
WORKDIR <path> # 設定工作目錄
VOLUME <path>... # 設定要開放對接的目錄
RUN <command> # 在當前image上再執行指令並提交結果
RUN ["executable", "param1", "param2"] # 在當前image上再執行指令並提交結果
CMD <command> # 執行中容器提供初始指令
CMD ["executable", "param1", "param2"] # 2個以上CMD指令只會運行最後1個
EXPOSE <port>... # 開通容器的port
USER <user>[:<group>] # 設定使用者及群組
USER <uid>[:<gid>] # 設定使用者及群組Dockerfile其他說明
1
2FROM <base_image> AS <stage_name> # 命名提高可讀性
COPY --from=<stage_name> # 可複製image
寫完dockerfile之後,再利用docker build
建立自己的映像檔。
1 |
|
1 |
|
Docker Compose
docker-compose.yaml 格式
該檔案應放置在專案目錄內,可命名為docker-compose.yml、docker-compose.yaml、compose.yml或compose.yaml。
以建立一個api-service為範例:
1 |
|
當中LOG_PATH及DEBUG_MODE的環境變數,預設會讀取專案目錄的 .env
檔案裡的環境變數:
1 |
|
搭配的Dockerfile格式說明:
1 |
|
Docker Compose 常用指令
必須在有compose yaml file的目錄下才能使用以下指令:
1 |
|
對應Docker指令:
docker compose down --rmi all
1
2docker stop <container>
docker rmi <image>以上述範例說明
docker compose up -d
1
2
3
4
5
6docker build -t api-image https://github.com/user/api.git
docker run --rm -itd \
--name api-service \
--restart always \
-v $LOG_PATH:/logs \
-p 5000:5000 api-image如有多個volume可以增加tag
-v
,同理有多個port也可以增加tag-p
。