1. 程式人生 > >PowerShell + docker-compose +.net core 釋出阿里雲映象庫 學習筆記(前言)

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

 模板檔案,可以讓使用者很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 專案,除了 Web 服務容器本身,往往還需要再加上後端的資料庫服務容器,甚至還包括負載均衡容器等。

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