1. 程式人生 > >docker三劍客之一docker compose

docker三劍客之一docker compose

http 定義 mpat com dir 服務 stopped start 包括

compose有兩個重要的概念:

服務(service):一個應用的容器,實際上可以包括若幹運行相同鏡像的容器實例

項目(project):由一組關聯的應用容器組成的一個完整業務單元,在docker-compose.yml文件中定義

compose默認管理對象是項目,通過子命令對項目中的一組容器進行便捷地生命周期管理

安裝

pip安裝,下載編譯好的二進制文件,直接運行在docker容器中三種方案:

pip安裝:

apt-get install python-pip -y

pip install -U docker-compose

安裝後,可以添加bash補全命令:

curl -L https://raw.githubusercontent.com/docker/compose/1.1.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

卸載:

pip uninstall docker-compose

Compose命令說明

大多數Compose命令都是運行於一個或多個服務的,如果服務沒有指定,該命令將會作用到項目,即應用到所有服務

技術分享

build
Usage: build [options] [SERVICE...]

Options:
--force-rm  Always remove intermediate containers.
--no-cache  Do not use cache when building the image.
--pull      Always attempt to pull a newer version of the image.
當修改dockerfile或者docker
-compose時,運行docker-compose build 重建鏡像。 生成鏡像後,可使用docker-compose up啟動
kill 
通過發送SIGKILL的信號強制停止運行的容器,這個信號可以選擇性的通過,比如: 
docker-compose kill -s SIGKINT
logs
Usage: logs [options] [SERVICE...]

Options:
--no-color          單色輸出,不顯示其他顏.
-f, --follow        跟蹤日誌輸出,就是可以實時查看日誌
-t, --timestamps    顯示時間戳
--tail 從日誌的結尾顯示,--tail=200 顯示日誌輸出.
pause
Usage: pause [SERVICE...]
暫停容器服務. docker-compose pause  暫停所有服務. docker-compose pause web,之後暫停web服務的容器。
port
Usage: port [options] SERVICE PRIVATE_PORT

Options:
--protocol=proto  tcp or udp [default: tcp]
--index=index     index of the container if there are multiple
                  instances of a service [default: 1]
輸出服務的共有端口.
# docker-compose port web 8080   -- 8080為容器內部端口
0.0.0.0:8884
ps
Usage: ps [options] [SERVICE...]

Options:
-q    只顯示ID
顯示容器. 默認顯示name、command、state、ports
pull
Usage: pull [options] [SERVICE...]

Options:
--ignore-pull-failures  忽略pull失敗的鏡像,繼續pull其他鏡像.
pull compose文件中所指明的鏡像.
restart
Usage: restart [options] [SERVICE...]

Options:
-t, --timeout TIMEOUT      Specify a shutdown timeout in seconds. (default: 10)
Restarts services.
rm
Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Dont ask to confirm removal
    -v            期初加載到容器的任何匿名卷
    -a, --all     Also remove one-off containers created by
                  docker-compose run
Removes stopped service containers. 如果服務在運行,需要先docker-compose stop 停止容器
run
Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

Options:
 -d                   後臺運行,輸出容器名.
-e KEY=VAL            設置環境變量參數,可以使用多次
-u, --user=""         指定運行的用戶
--no-deps             不啟動link服務,只啟動run的服務.
--rm                  運行後刪除容器,後臺運行模式除外(-d).
-p, --publish=[]      開放端口
--service-ports       compose文件中配置什麽端口,就映射什麽端口.
-T                    禁用TTY.
-w, --workdir=""      設置工作目錄
啟動web服務器,並執行bash命令.

$ docker-compose run web bash
根據compose配置文件制定的端口,映射到主機:
$ docker-compose run --service-ports web python manage.py shell
指定端口映射到主機:
$ docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
scale
Usage: scale [SERVICE=NUM...]
設置服務的個數.
$ docker-compose scale web=2 worker=3
start
Usage: start [SERVICE...]
啟動服務.
stop
Usage: stop [options] [SERVICE...]

Options:
-t, --timeout TIMEOUT     關閉超時時間 (default: 10).
停止容器.
unpause
Usage: unpause [SERVICE...]
恢復容器服務. docker-compose unpause  恢復所有服務. docker-compose unpause web,之後恢復web服務的容器。
up
Usage: up [options] [SERVICE...]

Options:
    -d                         後臺運行,輸出容器的名字.
                               Incompatible with --abort-on-container-exit.
    --no-color                  單色輸出.
    --no-deps                  不啟動link服務.
    --force-recreate           強制重新創建compose服務,即使沒有任何改變。重新創建後啟動容器
                               Incompatible with --no-recreate.
    --no-recreate               如果容器已經存在,不重新創建.
                               Incompatible with --force-recreate.
    --no-build                 不創建重啟,即使鏡像不存在.
    --build                    重新創建鏡像,然後生成容器.
    --abort-on-container-exit  任何容器停止,自動停止所有容器.
                               Incompatible with -d.
    -t, --timeout TIMEOUT      超時時間. (default: 10)
    --remove-orphans           移除compose文件中未定義服務的容器
改命令十分強大,它將嘗試自動完成包括鏡像創建,(重新)

docker三劍客之一docker compose