上一篇文章【Linux 安装卸载Docker-compose】说到Docker-compose就是将你要执行的操作写成指令的方式放在yml(类似于txt)的文本文件中,然后再执行该文件,解析其中的指令来达到你想要实现的操作.
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响
执行 docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。
docker-compose
命令的基本的使用格式是
docker-compose [-f=...] [options] [COMMAND] [ARGS...]
-f, --file FILE
指定使用的 Compose 模板文件,默认为 docker-compose.yml
,可以多次指定。-p, --project-name NAME
指定项目名称,默认将使用所在目录名称作为项目名。--x-networking
使用 Docker 的可拔插网络后端特性--x-network-driver DRIVER
指定网络后端的驱动,默认为 bridge
--verbose
输出更多调试信息。-v, --version
打印版本并退出前台运行
docker-compose up
后台运行
docker-compose up -d
启动
docker-compose start
停止
docker-compose stop
停止并移除容器
docker-compose down
模板文件是使用 Compose
的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run
相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml
,格式为 YAML 格式.
模板文件指令暂时介绍常用的,其余的请自行查阅
(1) build:
指定 Dockerfile
所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的径). Compose
将会利用它自动构建这个镜像,然后使用这个镜像
(2) ports:
暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER)
格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以
(3) image
: 指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose
将会尝试拉取这个镜像
(4) volumes
: 数据卷所挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER
) 或加上访问模式 (HOST:CONTAINER:ro
)。该指令中路径支持相对路径
(5)
restart
: 指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always
或者 unless-stopped
(6) container_name:
指定容器名称。默认将会使用 项目名称_服务名称_序号
这样的格式
(7) command:
覆盖容器启动后默认执行的命令
(8) environment:
设置环境变量。你可以使用数组或字典两种格式。只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据.。如果变量名称或者值中用到 true|false,yes|no
等表达 布尔 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义
(基于root权限)首先选择一个目录创建docker-compose.yml文件 ( 例子测试目录为/usr/local/docker/ )
$ cd /usr/local/docker //进入文件目录
$ mkdir docker.compose.yml //创建docker.compose.yml文件
$ vi docker.compose.yml //打开docker.compose.yml文件写入要操作的指令
保存文件退出,文件指令查阅上方基本指令介绍(上面文件指令加入了软连接[volumes])
在Docker-compose.yml目录下执行命令 (一定要在文件目录下执行命令)
$ docker-compose up // 可以加-d参数 表示守护态(后台)运行
等待执行文件指令结束, 访问tomcat以及mysql即可 (访问地址为虚拟机 IP:端口号).