PowerShell + docker-compose +.net core 发布阿里云镜像库 学习笔记(前言)
2018-11-14 14:17
886 查看
1、掌握docker-compose命令
2、掌握compose模板文件
3、编写docker-compose.yml文件
4、利用PowerShell发布镜像
Compose 简介
Compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟
OpenStack中的
Heat十分类似。
其代码目前在 https://github.com/docker/compose 上开源。
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 之后可以直接使用。
[code]$ docker-compose --version docker-compose version 1.17.1, build 6d101fb
Linux 系统请使用以下介绍的方法安装。
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
[code]$ 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 源中安装。
执行安装命令:
[code]$ sudo pip install -U docker-compose
可以看到类似如下输出,说明安装成功。
[code]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 补全命令
[code]$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
容器中执行
Compose 既然是一个 Python 应用,自然也可以直接用容器来执行它。
[code]$ 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脚本内容,如下
[code]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 "$@"
可以看到,它其实是下载了
docker/compose镜像并运行。
卸载
如果是二进制包方式安装的,删除二进制文件即可。
[code]$ sudo rm /usr/local/bin/docker-compose
如果是通过
pip安装的,则执行如下命令即可删除。
[code]$ sudo pip uninstall docker-compose
阅读更多
相关文章推荐
- Docker学习笔记1-从0创建并发布一个docker镜像
- docker学习笔记04:Centos7使用阿里云镜像加速
- docker学习笔记7:发布镜像到docker hub上
- Docker学习笔记3:CentOS7下安装Docker-Compose
- docker学习笔记2—创建一个nginx的镜像,并使用浏览器访问
- docker学习笔记4:利用docker hub上的mysql镜像创建mysql容器
- Docker学习笔记——构建镜像
- Docker学习笔记(2)-docker镜像操作
- Docker学习笔记 - Docker的镜像
- Docker学习笔记 — Compose简介、安装与简单使用
- docker学习笔记之dockerfile创建镜像
- Docker学习笔记四 镜像
- Docker学习笔记 - Docker Compose
- net core 程序docker打包镜像并发布到官方store
- Docker学习笔记(1)——Dockerfile创建镜像
- Docker学习笔记(一)------制作镜像
- docker学习笔记之镜像探析
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- docker学习笔记之创建本地镜像(三)docker build的结果
- Docker学习笔记-- 如何使用Dockerfile构建镜像