docker-compose命令
1.Docker Compose安装
推荐使用pip安装docker-compose,因为速度快,pip可以为你自动对应版本问题!!!
pip安装链接
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.yml文件位置
find / -name "docker-compose.yml*"
如果要启动docker-compose的话,需要cd到docker-compose.yml的目录下。
我的路径是:
/var/lib/docker/overlay2/455590d0d7c2edc205fcc0463772c7acabc3998f808915fde99a2afa23343f97/merged/app/docker-compose.yml
cd到app下
启动docker-compose:docker-compose up
-f: 标识用于指定Compose的配置文件,可以指定多个,当没有使用-f标识时,默认在项目跟目录及其子目录下寻找docker-compose.yml和docker-compose.override.yml文件,至少需要存在docker-compose.yml文件
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