# [Docker] 常用指令 ###### tags: `docker` [TOC] ## 一般 * 查看 docker 版本 ``` $ docker --version $ docker version $ docker -v ``` * 從 DockerHub 下載image ``` $ docker pull <imageName>:<imagesVersion> $ docker pull node:15.0 (此為版本為15.0的node image) ``` ## image 映像檔 用來建立容器的材料。 ### - docker images 查看目前擁有的 images ``` $ docker images $ docker images -q $ docker images -tree ``` * `-q` 只列出映像檔ID * `-tree` 列出映像檔之間的樹狀關係 ### - docker history 查看某個image的歷史 ``` $ docker history <imageID> ``` ### - docker rmi 移除某個 image **需先移除用此image啟動的containers** ``` $ docker rmi <imageID> $ docker rmi <imageID> -f ``` * `-f` 有使用此映像檔的容器一起移除 ### - docker build 使用Dockerfile重新建立 images,或是更新 images ``` $ docker build -f <path> -t <images name:version> . $ docker build -f webapp/Dockerfile -t mydocker:1.0 . ``` * `-f` 指定讀取的 Dockerfile * `-t` 建立的映像檔名稱 ### - docker save/load 將映像檔存入/匯出電腦檔案格式, 將映像檔存成tarball格式及匯出 ``` $ docker save -o <tarName> <imagesName:tag> $ docker save -o mydemo.tar winnie/mydemo:w12 ``` 還原成映像檔格式 ``` $ docker load --input mydemo.tar ``` ## container 容器 與本地環境隔離開的虛擬環境,可當作應用程式執行,容器間彼此互不干擾。 ### - docker ps 列出本地端所有正在運行的容器 ``` $ docker ps $ docker ps -a ``` * `-a` 表示所有容器(包含沒有運行的容器) ### - docker start 運行某個 container ``` $ docker start <containerID> $ docker restart <containerID> ``` ### - docker stop 停止某個 contaienr ``` $ docker stop <containerID> ``` ### - docker rm 移除某個 container ``` $ docker rm <containerID> ``` 移除所有停止的 containers ``` $ docker container prune -f ``` ### - docker commit 用某container建立一個image並命名 ``` $ docker commit <containerID> <for-image-name> ``` ### - docker run 用某image啟動一個container並進入 ``` $ docker run -it <imageID> /bin/bash ``` * `-d` 在背景運行 * `-p` `--publish` 設定本地端與容器對應的IP * `-e` `--env` 設定環境變數 * `--name` 設定容器的別名 * `--rm` 容器停止後自動將容器刪除 * `-t` 開啟終端機 * `-i` 可以輸入 ### - docker exec 在某container中執行 /bin/bash 這個命令,可以當作進入容器 ``` $ docker exec -it <containerID> /bin/bash $ docker exec -it <containerID> bash ``` ### - docker rename 重新命名容器 ``` $ docker rename <old_name> <new_name> ``` ### - docker cp 複製本地端的檔案至容器內,或複製容器內的檔案至本地端 ``` $ docker cp ./some_file CONTAINER:/work $ docker cp CONTAINER:/var/logs/ /tmp/app_logs ``` ### - docker inspect 查看容器內的資訊 ``` $ docker inspect <containerID> ``` 查看所有容器 IP ``` $ docker network inspect bridge ``` ### - docker network Software-Defined Networks 用於容器之間的連線 建立 network ```=$! $ docker network create <networkName> ``` 列出 network ```=$! $ docker network ls ``` 刪除 network ```=$! $ docker network rm <networkName> ``` 移除所有未使用的 network ```=$! $ docker network prune WARNING! This will remove all custom networks not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Networks: n1 n2 ``` 建立容器的連線 ```=$! $ docker network connect <networkName> <containerName> $ docker network connect --ip <ip> <networkName> <containerName> ``` 資料來源: [docker inspect](https://docs.docker.com/engine/reference/commandline/inspect/) [獲取 Docker 容器的 IP 地址](https://www.delftstack.com/zh-tw/howto/docker/getting-a-docker-container-ip-address/#%25E4%25BD%25BF%25E7%2594%25A8-docker-inspect-%25E7%258D%25B2%25E5%258F%2596-docker-%25E5%25AE%25B9%25E5%2599%25A8%25E7%259A%2584-ip-%25E5%259C%25B0%25E5%259D%2580) [映像檔指令參數總類](https://joshhu.gitbooks.io/dockercommands/content/DockerImages/CommandArgs.html) ## volumes 可以讓容器內的資料持久化在本地端,並彼此互通,因此可通過本地端變更資料。**容器關閉或刪除後,資料並不會在本地端遭到刪除** ### - docker volume 新增 volume ```=$! $ docker volume create --name <volumeName> $ docker run -v <volumeName>:<path> -it ubuntu touch /data/file ``` * `-v` 可以指定本地端要對應容器內的哪個路徑 資料來源: [Docker 實戰系列(三):使用 Volume 保存容器內的數據](https://larrylu.blog/using-volumn-to-persist-data-in-container-a3640cc92ce4)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up