第一章 Docker Compose


安装docker

获取包

wget -qO- https://get.docker.com/ | sh
q后面是大写字母O

1.新建用户组docker,如果用户组已经存在则跳过

  1. $sudo cat /etc/group| docker
  2. $sudo groupadd -g 999 docker  
  3. #-g 999 为组ID,也可以不指定

2 .为用户组docker增加用户
  1. ¥sudo gpasswd -a ${USER} docker


3.重启docker-daemon

4.执行docker命令,如果提示get ...... dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限

sudo chmod a+rw/var/run/docker.sock




1、Update your apt sources

2、Update package information, ensure that APT works with the https method, and that CA certificates are installed.

3、sudo apt-get install apt-transport-https ca-certificates

4、sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys58118E89F3A912897C070ADBF76221572C52609D

5、Open the /etc/apt/sources.list.d/docker.list file in your favorite editor.  If the file doesn’t exist, create it.

6、Remove any existing entries.   Add an entry for ubuntu16.04   deb https://apt.dockerproject.org/repo ubuntu-xenial main 

7、Save and close the /etc/apt/sources.list.d/docker.list file.

8、apt-get update;apt-get purge lxc-docker;apt-cache policy docker-engine

    1、sudo apt-get install linux-image-extra-$(uname -r)

5、sudo apt-get install docker-engine

6、sudo service docker start






Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。

1.1 安装 Compose

在安装 Compose之前,你需要先安装好 Docker 。然后你需要使用 curl 指令来安装 Compose

运行下边的命令来安装 Compose:

curl -L https://github.com/docker/compose/releases/download/1.8.1/run.sh >

/usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

 

查看一下compose的版本信息:

docker-compose -version

1.2 使用Compose

① 使用Compose只需要简单的三个步骤:首先,使用Dockerfile来定义应用环境

FROM centos:7.2.1511
maintainer aaa <wowo@gmail.com>

run yum install -y epel-release
run yum install -y python python-devel python-pip ipython \
    && yum install -y glibc-devel gcc-c++ gcc cpp make \
    && yum install -y openssl-devel libffi-devel libev-devel \
    && yum install -y wget git vim ctags unzip

run ["/bin/bash", "-c", "wget -O - https://bootstrap.pypa.io/get-pip.py | python"]
run pip install -U setuptools

run wget https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz
run tar -zxvf go1.7.linux-amd64.tar.gz
run chown -R root:root go
run mv go /usr/local
env GOPATH /go
env PATH $PATH:/usr/local/go/bin:$GOPATH/bin

run go get github.com/golang/lint/golint
run go get github.com/tools/godep

run go get github.com/golang/protobuf/proto
run go get github.com/golang/protobuf/protoc-gen-go
run wget https://github.com/google/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip
run unzip protoc-3.1.0-linux-x86_64.zip

run go get github.com/skelterjohn/rerun

 

② 第二步,用一个compose.yaml来定义你的应用,他们可以在下个互隔离的容器中组成你的应用。

version: '2'

services:
  api:
    build: 
./
    network_mode: host
    command: ./run.sh api
    working_dir: /go/src/aaaa
    volumes:
      
- ./:/go/src/aaaa
    ports:
      
- 0.0.0.0:9999:9999

 

 

③ 第三步,执行docker-compose up来启动你的应用,它会根据compose.yaml的设置来pull/run容器。

 

1.3 Yaml文件

首先是定义一个服务名,下面是yaml服务中的一些选项条目:

Ø image :镜像的ID

Ø build :直接从pwd的Dockerfile来build,而非通过image选项来pull

Ø links :连接到那些容器。每个占一行,格式为SERVICE[:ALIAS],例如 – db[:database]

Ø external_links :连接到该compose.yaml文件之外的容器中,比如是提供共享或者通用服务的容器服务。格式同links

Ø command :替换默认的command命令

Ø ports : 导出端口。格式是ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"

Ø expose :导出端口,但不映射到宿主机的端口上。它仅对links的容器开放。格式直接指定端口号即可。

Ø volumes :加载路径作为卷,可以指定只读模式:

Ø net :容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个。

Ø dns :可以设置一个或多个自定义的DNS地址。

Ø dns_search :可以设置一个或多个DNS的扫描域。

 

1.4 Compose命令

docker-compose up ,是在前台运行的。我们可以指定-d命令以daemon的方式启动容器

 

-f 制定一个非docker-compose.yml命名的yaml文件

-p 设置一个项目名称(默认是directory名)

docker-compose的动作包括:

build :构建服务

kill -s SIGINT :给服务发送特定的信号。

logs :输出日志

port :输出绑定的端口

ps :输出运行的容器

pull :pull服务的image

rm :删除停止的容器

run : 运行某个服务,例如docker-compose run web python manage.py shell

start :运行某个服务中存在的容器。

stop :停止某个服务中存在的容器。

up :create + run + attach容器到服务。

scale :设置服务运行的容器数量。例如:docker-compose scale web=2 worker=3

1.5 参考

http://www.widuu.com/docker/installation/ubuntu.html


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐