Docker-compose是什么?
之前运行一个镜像,需要添加大量的参数
可以通过Docker-compose编写这些参数。
Docker-compose可以帮助我们批量的管理容器。
只需要通过一个docker-compose.yml文件去维护即可。
如何在linux中使用docker-compose
去github官网搜索docker-compose,下载1.24.1版本的docker-compose
将下载好的docker-compose文件,拖拽到Linux操作系统中
需要将docker-compose文件名称修改一下,方便使用,然后将docker-compose文件设置为一个可执行的权限
mv docker-compose-Linux-x86_64 docker-compose //通过这种方式可以直接改名
chmod 777 docker-compose //将docker-compose修改为可读可写可执行的文件
- 方便后期操作,配置一个环境变量
将docker-compose文件移动到/usr/local/bin下,修改/etc/profile文件,
给/usr/local/bin配置到了PATH中
mv docker-compose /usr/local/bin
vi /ect/profile
(修改profile中,将/usr/local/bin配置到PATH中:export PATH=$PATH:/usr/local/bin)
再执行source /etc/profile (重新执行刚修改的初始化文件)
- 测试一下
在任意目录执行docker-compose version
,如出现正确响应,则成功
如何写docker-compose.yml文件
yml文件以key: value形式来指定配置信息(注意,冒号:后面一定有一个空格)
多个配置信息以换行+缩进(不是tab键,而是两个空格键)的方式来区分
在docker-compose.yml文件中,不要使用制表符(tab键)
举个例子:以mysql+tomcat为例
version: '3.1'
services:
mysql: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: daocloud.io/library/mysql:5.7.4 # 指定镜像路径
container_name: mysql # 指定容器名称(与服务名称不是一定要一样,两个东西)
ports:
- 3306:3306 # 指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: root # 指定Mysql的ROOT用户登录密码
TZ: Asia/Shanghai # 指定东八时区
volumes:
- opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql # 映射数据卷到宿主机上
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- opt/docker_mysql_tomcat/tomcat_logs::/usr/local/tomcat/logs
使用docker-compose启动nginx
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:1.13.0-alpine
container_name: my_nginx
ports:
- 80:80
使用docker-compose命令管理器
在使用docker-compose命令时,默认会在当前目录下找docker-compose.yml文件
- 基于docker-compose.yml启动管理的容器
docker-compose up -d (-d是在后台运行容器)
- 关闭并删除容器
docker-compose down
- 开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
- 查看由docker-compose管理的容器
docker-compose ps
- 查看日志
docker-compose logs -f
如何使用docker-compose.yml自定义构建镜像
version: '3.1'
services:
ssm: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
build:
context: ../ #指定dockerfile文件所在路径
dockerfile:Dockerfile #指定dockerfile的文件名称
image: ssm:1.0.1 # 因为是自定义镜像,所以直接指定镜像名称和版本即可
container_name: ssm # 指定容器名称(与服务名称不是一定要一样,两个东西)
ports:
- 8081:8080 # 指定端口号的映射
environment:
TZ: Asia/Shanghai # 指定东八时区
注意:可以直接启动基于docker-compose.yml
以及dockerfile
文件构建的自定义镜像
docker-compose up -d
如果自定义镜像不存在时,会帮助我们构建出自定义镜像,但是如果自定义镜像已经存在,
会直接运行这个自定义镜像,如果不想运营这个自定义镜像,而是想重新构建,需要执行
docker-compose up -d --build
命令