安装docker-compose

方法:

 

#curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

 

补:权限问题处理

 

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

 

查看版本信息

 

# docker-compose --version

 

但是此方法会经常因为网络的原因而无法安装,网络通畅使用比较好。

待安装完成后,执行查询版本的命令,即可安装docker-compose

 

docker-compose version

 

Compose使用实例

在本例中将会实现启动nginx服务及一个数据卷容器,并将该数据卷容器作为nginx的静态文件

1.创建compose文件夹

 

sudo mkdir /usr/local/common

cd /usr/local/common

 

2.创建docker-compose.yml文件

 

sudo touch docker-compose.yml

sudo vim docker-compose.yml

 

在docker-compose.yml中输入以下内容:

 

nginx:

  restart: always

  image: jwilder/nginx-proxy:latest

  ports:

    - "80:80"

    - "443:443"

  volumes:

    - /etc/localtime:/etc/localtime:ro

    - /etc/timezone:/etc/timezone:ro

    - /var/run/docker.sock:/tmp/docker.sock:ro

    - ./certs:/etc/nginx/certs

 

logstash:

  image: logstash:latest

  command: logstash -f/config-dir/logstash.conf

  volumes:

    - ./logstash:/config-dir

    - /root/docker-data/logstash:/logstash-all

 

参考:http://blog.csdn.net/dream_broken/article/details/52314993

volumes

卷挂载路径设置。可以设置宿主机路径HOST:CONTAINER或加上访问模式HOST:CONTAINER:ro)。
volumes:
- /var/lib/mysql
- cache/:/tmp/cache
- ~/configs:/etc/configs/:ro

挂载文件,A:B  即:卷挂载路径设置   /宿主机路径:/访问模式:ro

将A的内容挂载到B,实现数据分离,B镜像在启动时,通过挂载路径读取A所存储的数据或配置文件,

注:1、如果B容器中指定的文件夹不存在,会自动生成,

2、没有:ro命令,在B中新建/生产文件,会同步到A中

3、使用:ro指定该volume为只读。注意:如果容器中指定的挂载目录存在相同的文件时,会被宿主机覆盖掉

 

ports

暴露端口信息。
使用宿主:容器HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。

ports:

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

注:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。

如10.224.225.121:8084:8084,即宿主机端口8084映射到容器的8084端口

 

links

链接到其它服务中的容器。使用服务名称(同时作为别名)或服务名称:服务别名SERVICE:ALIAS格式都可以。
links:
- db
- db:database
- redis

使用的别名将会自动在服务容器中的 /etc/hosts 里创建。例如:
172.17.2.186 db
相应的环境变量也将被创建。

external_links

链接到 docker-compose.yml 外部的容器,甚至并非Compose 管理的容器。参数格式跟 links 类似。
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql

如- common_mongo_1:mongoDb

即,将common_mongo_1 的名称设置为  mongoDB,在其他容器都挂载宿主机的时候,可直接引用mongoDB,如service项目,mongo.host=127.0.0.1:27017可改为mongo.host=mongoDB

environment

设置环境变量。你可以使用数组或字典两种格式。
只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。
environment:
- RACK_ENV=development
- SESSION_SECRET

 environment:

   VIRTUAL_HOST: www.yeamoney.cn       指定域名

NODE_ENV:production                            生产环境

serverA: 10.55.119.111                               服务器A

serverB: 10.55.110.214                              服务器B

localNetIP: 10.21.215.111                           本地服务器

JVM_ARGS:-Xmx2500m                         JVM设置

 

3.启动

 

docker-compose up -d

 

注:使用命令docker-compose ps查看运行状况

 

异常:

java.lang.IllegalStateException:Nexus work directory already in use: /sonatype-work

解决:  给对应文件目录添加权限(这不是因为重复使用造成的) :

 

chown -R 200:200 /var/lib/nexus-data/

 

 

参考: 镜像拉取地址:https://hub.docker.com

引用参数参考:https://www.cnblogs.com/freefei/p/5311294.html 

 

Logo

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

更多推荐