PowerShell + docker-compose +.net core 釋出阿里雲映象庫 學習筆記(前言)
1、掌握docker-compose命令
2、掌握compose模板檔案
3、編寫docker-compose.yml檔案
4、利用PowerShell釋出映象
Compose 簡介
Compose
專案是 Docker 官方的開源專案,負責實現對 Docker 容器叢集的快速編排。從功能上看,跟 OpenStack
中的 Heat
十分類似。
Compose
定位是 「定義和執行多個 Docker 容器的應用(Defining and running multi-container Docker applications)」,其前身是開源專案 Fig。
通過第一部分中的介紹,我們知道使用一個 Dockerfile
Compose
恰好滿足了這樣的需求。它允許使用者通過一個單獨的 docker-compose.yml
模板檔案(YAML 格式)來定義一組相關聯的應用容器為一個專案(project)。
Compose
中有兩個重要的概念:
-
服務 (
service
):一個應用的容器,實際上可以包括若干執行相同映象的容器例項。 -
專案 (
project
docker-compose.yml
檔案中定義。
Compose
的預設管理物件是專案,通過子命令對專案中的一組容器進行便捷地生命週期管理。
Compose
專案由 Python 編寫,實現上呼叫了 Docker 服務提供的 API 來對容器進行管理。因此,只要所操作的平臺支援 Docker API,就可以在其上利用 Compose
來進行編排管理。
安裝與解除安裝
Compose
支援 Linux、macOS、Windows 10 三大平臺。
Compose
可以通過 Python 的包管理工具 pip
進行安裝,也可以直接下載編譯好的二進位制檔案使用,甚至能夠直接在 Docker 容器中執行。
前兩種方式是傳統方式,適合本地環境下安裝使用;最後一種方式則不破壞系統環境,更適合雲端計算場景。
Docker for Mac
、Docker for Windows
自帶 docker-compose
二進位制檔案,安裝 Docker 之後可以直接使用。
$ docker-compose --version
docker-compose version 1.17.1, build 6d101fb
Linux 系統請使用以下介紹的方法安裝。
在 Linux 上的也安裝十分簡單,從 官方 GitHub Release 處直接下載編譯好的二進位制檔案即可。
例如,在 Linux 64 位系統上直接下載對應的二進位制包。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
PIP 安裝
注: x86_64
架構的 Linux 建議按照上邊的方法下載二進位制包進行安裝,如果您計算機的架構是 ARM
(例如,樹莓派),再使用 pip
安裝。
這種方式是將 Compose 當作一個 Python 應用來從 pip 源中安裝。
執行安裝命令:
$ sudo pip install -U docker-compose
可以看到類似如下輸出,說明安裝成功。
Collecting docker-compose
Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded
...
Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress
bash 補全命令
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
容器中執行
Compose 既然是一個 Python 應用,自然也可以直接用容器來執行它。
$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
實際上,檢視下載的 run.sh
指令碼內容,如下
set -e
VERSION="1.8.0"
IMAGE="docker/compose:$VERSION"
# Setup options for connecting to docker host
if [ -z "$DOCKER_HOST" ]; then
DOCKER_HOST="/var/run/docker.sock"
fi
if [ -S "$DOCKER_HOST" ]; then
DOCKER_ADDR="-v $DOCKER_HOST:$DOCKER_HOST -e DOCKER_HOST"
else
DOCKER_ADDR="-e DOCKER_HOST -e DOCKER_TLS_VERIFY -e DOCKER_CERT_PATH"
fi
# Setup volume mounts for compose config and context
if [ "$(pwd)" != '/' ]; then
VOLUMES="-v $(pwd):$(pwd)"
fi
if [ -n "$COMPOSE_FILE" ]; then
compose_dir=$(dirname $COMPOSE_FILE)
fi
# TODO: also check --file argument
if [ -n "$compose_dir" ]; then
VOLUMES="$VOLUMES -v $compose_dir:$compose_dir"
fi
if [ -n "$HOME" ]; then
VOLUMES="$VOLUMES -v $HOME:$HOME -v $HOME:/root" # mount $HOME in /root to share docker.config
fi
# Only allocate tty if we detect one
if [ -t 1 ]; then
DOCKER_RUN_OPTIONS="-t"
fi
if [ -t 0 ]; then
DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -i"
fi
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "[email protected]"
可以看到,它其實是下載了 docker/compose
映象並執行。
解除安裝
如果是二進位制包方式安裝的,刪除二進位制檔案即可。
$ sudo rm /usr/local/bin/docker-compose
如果是通過 pip
安裝的,則執行如下命令即可刪除。
$ sudo pip uninstall docker-compose