您的位置:首页 > 运维架构 > Docker

docker-compose安装和使用

2017-12-06 09:27 531 查看
1、安装(直接安装网络太慢,使用python安装)
yum -y install epel-release    安装python pip依赖

vi /etc/yum.repos.d/epel.repo    修改依赖repo,使用base的地址

yum -y install python-pip    安装python pip

pip install docker-compose    安装docker-compose

pip install --upgrade backports.ssl_match_hostname    pip更新

docker-compose -version 完成
2、使用

使用Compose只需要简单的三个步骤:

第一步,使用Dockerfile来定义你的应用环境:

1
2
3
4

FROM python:2.7

ADD ./code

WORKDIR /code

RUN pip install -r requirements.txt

第二步,用一个docker-compose.yml来定义你的应用服务,他们可以把不同的服务生成不同的容器中组成你的应用。

1
2
3
4
5
6
7
8
9
10
11

web:

  build:.

  command: python app.py

  ports:

         - "5000:5000"

  volumes:

         - .:/code

  links:

         - redis

redis:

  image: redis

第三步,执行
docker-compose up
来启动你的应用,它会根据docker-compose.yml的设置来pull/run这俩个容器,然后再启动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Creating myapp_redis_1...

Creating myapp_web_1...

Building web...

Step 0 : FROM python:2.7

2.7: Pulling from python

...

Status: Downloaded newer image for python:2.7

---> d833e0b23482

Step 1 : ADD . /code

---> 1c04b1b15808

Removing intermediate container 9dab91b4410d

Step 2 : WORKDIR /code

---> Running in f495a62feac9

---> ffea89a7b090

Attaching to myapp_redis_1, myapp_web_1

......

redis_1 | [1] 17 May 10:42:38.147 * The server is now ready to accept connections on port 6379

web_1   |  * Running on http://0.0.0.0:5000/
(Press CTRL+C to quit)

web_1   |  * Restarting with stat

来源: http://debugo.com/docker-compose/

3、yml文件参考(要注意有2个版本,推荐使用version2)
在上面的yml文件中,我们可以看到compose文件的基本结构。首先是定义一个服务名,下面是yml服务中的一些选项条目:
image
:镜像的ID
build
:直接从pwd的Dockerfile来build,而非通过image选项来pull
links
:连接到那些容器。每个占一行,格式为SERVICE[:ALIAS],例如 – db[:database]
external_links
:连接到该compose.yaml文件之外的容器中,比如是提供共享或者通用服务的容器服务。格式同links
command
:替换默认的command命令
ports
: 导出端口。格式可以是:

1

ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"

expose
:导出端口,但不映射到宿主机的端口上。它仅对links的容器开放。格式直接指定端口号即可。
volumes
:加载路径作为卷,可以指定只读模式:

1
2
3

volumes:-/var/lib/mysql

- cache/:/tmp/cache

-~/configs:/etc/configs/:ro

volumes_from
:加载其他容器或者服务的所有卷

1
2

environment:- RACK_ENV=development

  - SESSION_SECRET

env_file
:从一个文件中导入环境变量,文件的格式为RACK_ENV=development
extends
:扩展另一个服务,可以覆盖其中的一些选项。一个sample如下:

1
2
3
4
5
6
7
8
9
10
11
12
13

common.yml

webapp:

  build:./webapp

  environment:- DEBUG=false- SEND_EMAILS=false

development.yml

web:extends:

    file: common.yml

    service: webapp

  ports:-"8000:8000"

  links:- db

  environment:- DEBUG=true

db:

  image: postgres

net
:容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个。
dns
:可以设置一个或多个自定义的DNS地址。
dns_search
:可以设置一个或多个DNS的扫描域。

其他的
working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares
,和
docker run
命令是一样的,这些命令都是单行的命令。例如:

1
2
3
4
5
6
7
8
9
10
11

cpu_shares:73

working_dir:/code

entrypoint: /code/entrypoint.sh

user: postgresql

hostname: foo

domainname: foo.com

mem_limit:1000000000

privileged:true

restart: always

stdin_open:true

tty:true

4、命令说明


大部分命令都可以运行在一个或多个服务上。如果没有特别的说明,命令则应用在项目所有的服务上。
执行 
docker-compose [COMMAND] --help
 查看具体某个命令的使用说明。
基本的使用格式是
docker-compose [options] [COMMAND] [ARGS...]


选项

--verbose
 输出更多调试信息。
--version
 打印版本并退出。
-f, --file FILE
 使用特定的 compose 模板文件,默认为 
docker-compose.yml

-p, --project-name NAME
 指定项目名称,默认使用目录名称。


命令


build

构建或重新构建服务。
服务一旦构建后,将会带上一个标记名,例如 web_db。
可以随时在项目目录下运行 
docker-compose build
 来重新构建服务。


help

获得一个命令的帮助。


kill

通过发送 
SIGKILL
 信号来强制停止服务容器。支持通过参数来指定发送的信号,例如
$ docker-compose kill -s SIGINT


logs

查看服务的输出。


port

打印绑定的公共端口。


ps

列出所有容器。


pull

拉取服务镜像。


rm

删除停止的服务容器。


run

在一个服务上执行一个命令。
例如:
$ docker-compose run ubuntu ping docker.com

将会启动一个 ubuntu 服务,执行 
ping docker.com
 命令。
默认情况下,所有关联的服务将会自动被启动,除非这些服务已经在运行中。
该命令类似启动容器后运行指定的命令,相关卷、链接等等都将会按照期望创建。
两个不同点:
给定命令将会覆盖原有的自动运行命令;
不会自动创建端口,以避免冲突。
如果不希望自动启动关联的容器,可以使用 
--no-deps
 选项,例如
$ docker-compose run --no-deps web python manage.py shell

将不会启动 web 容器所关联的其它容器。


scale

设置同一个服务运行的容器个数。
通过 
service=num
 的参数来设置数量。例如:
$ docker-compose scale web=2 worker=3


start

启动一个已经存在的服务容器。


stop

停止一个已经运行的容器,但不删除它。通过 
docker-compose start
 可以再次启动这些容器。


up

构建,(重新)创建,启动,链接一个服务相关的容器。
链接的服务都将会启动,除非他们已经运行。
默认情况, 
docker-compose up
 将会整合所有容器的输出,并且退出时,所有容器将会停止。
如果使用 
docker-compose up -d
 ,将会在后台启动并运行所有的容器。
默认情况,如果该服务的容器已经存在, 
docker-compose up
 将会停止并尝试重新创建他们(保持使用 
volumes-from
挂载的卷),以保证 
docker-compose.yml
 的修改生效。如果你不想容器被停止并重新创建,可以使用 
docker-compose
up --no-recreate
。如果需要的话,这样将会启动已经停止的容器。


环境变量

环境变量可以用来配置 Compose 的行为。
DOCKER_
开头的变量和用来配置 Docker 命令行客户端的使用一样。如果使用 boot2docker , 
$(boot2docker shellinit)
 将会设置它们为正确的值。


COMPOSE_PROJECT_NAME

设置通过 Compose 启动的每一个容器前添加的项目名称,默认是当前工作目录的名字。


COMPOSE_FILE

设置要使用的 
docker-compose.yml
 的路径。默认路径是当前工作目录。


DOCKER_HOST

设置 Docker daemon 的地址。默认使用 
unix:///var/run/docker.sock
,与 Docker 客户端采用的默认值一致。


DOCKER_TLS_VERIFY

如果设置不为空,则与 Docker daemon 交互通过 TLS 进行。


DOCKER_CERT_PATH

配置 TLS 通信所需要的验证(
ca.pem
cert.pem
 和 
key.pem
)文件的路径,默认是 
~/.docker
 。

来源: http://wiki.jikexueyuan.com/project/docker-technology-and-combat/commands.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: