1.Docker Compose 安装
推荐使用 pip 安装 docker-compose, 因为速度快, pip 可以为你自动对应版本问题!!!
pip 安装链接 https://www.jianshu.com/p/f323aa0416da
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋权: sudo chmod +x /usr/local/bin/docker-compose
查看版本: docker-compose --version
查找 docker-compose.YAML 文件位置
find / -name "docker-compose.yml*"
如果要启动 docker-compose 的话, 需要 cd 到 docker-compose.YAML 的目录下.
我的路径是:
/var/lib/docker/overlay2/455590d0d7c2edc205fcc0463772c7acabc3998f808915fde99a2afa23343f97/merged/App/docker-compose.YAML
cd 到 App 下
启动 docker-compose:docker-compose up
-f: 标识用于指定 Compose 的配置文件, 可以指定多个, 当没有使用 - f 标识时, 默认在项目跟目录及其子目录下寻找 docker-compose.YAML 和 docker-compose.override.YAML 文件, 至少需要存在 docker-compose.YAML 文件
docker-compose build 命令用来创建或重新创建服务使用的镜像, 后面指定的是服务的名称, 创建之后的镜像名为 project_service,
即项目名后跟服务名. 比如项目名称为 composeset, 其中的一个服务名称为 web, 则 docker-compose build Web 创建的镜像的名称为 composeset_web.
docker-compose logs 命令用于展示 service 的日志
docker-compose pause 暂停服务;
docker-compose unpause 恢复被暂停的服务;
docker-compose ps 只能查看当前项目的容器, 如果要显示本机上所有的容器, 请使用 docker ps -a.
docker-compose pull 用于; 拉取服务依赖的镜像;
docker-compose restart 用于重启某个服务的所有容器, 后跟服务名.
docker-compose rm 删除停止的服务 (容器)
-f 表示强制删除
-v 标识表示删除与容器相关的卷 (volumes)
docker-compose start 命令启动运行某个服务的所有容器;
docker-compose stop 命令停止运行一个服务的所有容器
docker-compose up 创建并运行作为服务的容器, 并将其输入输出重定向到控制台 (attach), 并将所有容器的输出合并到一起. 命令退出后, 所有的容器都会停止.
-d 标识指定容器后台运行;
Docker Compose 配置文件详解
一份标准配置文件应该包含 version,services,networks 三大部分, 其中最关键的就是 services 和 networks 两个部分, 下面先来看 services 的书写规则.
services:
? Web:------------------------------------- 服务名称
? ? image: hello-world--------------------- 指定服务的镜像名称或镜像 ID. 如果镜像在本地不存在, Compose 将会尝试拉取这个镜像
?? ?----image 可以替换为 build, 基于 dockfile 来构建镜像
? ? command: bundle exec thin -p 3000------ 可以覆盖容器启动后默认执行的命令
? ? depends_on:---------------------------- 解决了容器的依赖, 启动先后的问题
- ? ? ? - db
- ? ? ? - Redis
? ? dns:-----------------------------------dns 映射??
- ? ? ? - 8.8.8.8
- ? ? ? - 9.9.9.9
? ? environment:--------------------------- 会把变量保存到镜像, 容器中去
? ? ? - SHOW: 'true'
? ? expose:-------------------------------- 指定暴露的端口, 习惯上使用 port
? ? ? - "3000"
? ? external_links:------------------------ 让 Compose 项目里面的容器连接到那些项目配置外部的容器 (前提是外部容器中必须至少有一个容器是连接到与项目内的服务的同一个网络里面)
? ? ? - redis_1
? ? extra_hosts:--------------------------- 往 / etc/hosts 文件中添加一些记录, 从而添加主机映射
? ? ? - "somehost:162.242.195.82"
? ? ports:--------------------------------- 映射端口的标签. 使用 HOST:CONTAINER 格式或者只是指定容器的端口, 宿主机会随机映射端口.
- ? ? ? - "3000"
- ? ? ? - "8000:8000"
- ? ? ? - "49100:22"
- ? ? ? - "127.0.0.1:8001:8001"
? ? volumes:------------------------------- 挂载一个目录或者一个已存在的数据卷容器
- ? ? ? // 只是指定一个路径, Docker 会自动在创建一个数据卷 (这个路径是容器内部的).
- ? ? ? - /var/lib/MySQL
- ? ? ? // 使用绝对路径挂载数据卷
- ? ? ? - /opt/data:/var/lib/MySQL
- ? ? ?// 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器.
- ? ? ? - ./cache:/tmp/cache
- ? ? ?// 使用用户的相对路径 (~/ 表示的目录是 /home/< 用户目录 >/ 或者 /root/).
- ? ? ? - ~/configs:/etc/configs/:ro
- ? ? // 已经存在的命名的数据卷.
- ? ? ?- datavolume:/var/lib/MySQL
? ?volumes_from:-------------------------- 从其它容器或者服务挂载数据卷
? ? ?- service_name
? ?network_mode:------------------------- 可以指定使用服务或者容器的网络
? ?networks:-------------------------------?? 加入指定网络
? ? ?- some-network
来源: http://www.bubuko.com/infodetail-3342571.html