##【 Docker 】

關閉 Docker

docker-compose down

【 Container 】

建立container

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

OPTION:

-d 表示在背景( Detached )執行,Docker 預設前景( foreground )執行

-p 表示將本機 8080 port 的來源轉發到 container 的 80 port

–name 表示為 container 的名稱

–rm 表示當 exit container 時,會移除 container( incompatible with -d )

ex.

docker run -d -p 80:80 --name my_image nginx

//exit container 時,會自動移除 containe
docker run -it --rm busybox

檢查 container 運行狀況

目前運行的 container

docker ps

檢查目前所有container (包括未運行的)

docker ps -a

停止 container

docker stop [OPTIONS] CONTAINER [CONTAINER...]

重新啟動 container

docker restart [OPTIONS] CONTAINER [CONTAINER...]

刪除container

–volumes , -v 參數,可以於刪除 container 同時移除掉連接到 container 的 volume。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

刪除所有正在運行的 container

docker stop $(docker ps -q)

##【 管理container 】

進入 container

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec -it <Container ID> bash

查看container 中的linux版本

cat /etc/os-release

查看 log

–follow , -f , Follow log output

docker logs [OPTIONS] CONTAINER

查看container process CPU/IO..

docker stats [OPTIONS] [CONTAINER...]

停用 container 中的 process

docker pause CONTAINER [CONTAINER...]

檢查 container 列表

docker container ls

##【 鏡像 Images 】

安裝鏡像

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

檢查已安裝的鏡像

Check installed Images

docker images

刪除鏡像

docker rmi [OPTIONS] IMAGE [IMAGE...]

打包鏡像檔

docker save [OPTIONS] IMAGE [IMAGE...]

//ex
docker save nginx > mynginximages.tar

載入鏡像檔

docker load [OPTIONS]

//ex
docker load < mynginximages.tar

檢查鏡像檔歷史紀錄

docker history [OPTIONS] IMAGE

刪除 deling Images

docker rmi $(docker images -q -f dangling=true)
docker rmi $(docker images  --quiet --filter dangling=true)

【 Volume 】

Volume 是 Docker 推薦存放數據的方式

查看 volume

docker volume ls [OPTIONS]

建立 volume

docker volume create [OPTIONS] [VOLUME]

刪除 volume

docker volume rm [OPTIONS] VOLUME [VOLUME...]

查看 volume 說明

docker volume inspect [OPTIONS] VOLUME [VOLUME...]

移除未使用的 volume

docker volume prune [OPTIONS]

##【 network 】

查看當下網路狀況

Docker 網路模式有: Bridge(預設)、Host、None

docker network ls [OPTIONS]

//ex.
docker run -it --name mydocbox --rm --network=host mydocbox

建立 network

docker network create [OPTIONS] NETWORK

移除 network

docker network rm NETWORK [NETWORK...]

移除未使用的network

docker network prune [OPTIONS]

查看 network

docker network inspect [OPTIONS] NETWORK [NETWORK...]

container 連結 network

docker network connect [OPTIONS] NETWORK CONTAINER 

container 中斷network連線

docker network disconnect [OPTIONS] NETWORK CONTAINER

User Bridge Network

User bridge network 可以經由內建的 DNS 伺服器,讓容器跟容器之間可以直接用名稱溝通 只要透過名稱,就可以直接解析出IP

這部分推薦仔細研究

https://docs.docker.com/network/bridge/#connect-a-container-to-a-user-defined-bridge

##【 Compose 】

Conpose 主要透過 docker-compose.yml 來管理多個 container

並且多數指令與 Docker 一致

查看目前 container

docker-compose ps

//只顯示ID
docker-compose ps -q

啟動

https://docs.docker.com/compose/reference/up/

//背景啟動(正式環境使用)
docker-compose up -d

關閉

https://docs.docker.com/compose/reference/down/

docker-compose down [options]

ex. 關閉且同時移除 docker-compose.yml 設定的 volume 
docker-compose down -v

啟動 service

docker-compose start  [SERVICE...]

//Builds, (re)creates, starts, and attaches to containers for a service
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

停止 service

docker-compose stop [options] [SERVICE...]

重啟 service

docker-compose restart [options] [SERVICE...]

於 service 執行指令

在指定的service執行指令

docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
[ARGS...]

ex.
docker-compose run web bash

查看service log

docker-compose logs [options] [SERVICE...]

檢查docker-compose.yml

docker-compose config

等同於

docker-compose exec

查看 Images

docker-compose images

移除 service

docker-compose rm

Publish Images to docker hub

docker-compose push