本文章将介绍docker-compose技术,如果想要了解docker前置内容,可以查看以下两篇文章.

Docker容器技术详解(一)

Docker容器技术详解(二)

Docker容器技术详解(三)

安装docker-compose

[root@harbor ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

注意,要想使用docker-compose命令的话需要在有docker-compose.yml文件的目录才能使用docker-compose命令

Compose命令说明

启动docker-compose.yml文件

docker-compose up -d

#-d 后台运行

查看docker-compose的进程

docker-compose ps

 关闭docker-compose运行服务

#该命令会关闭所有使用up启动的容器

docker-compose down

按照服务名启动服务

docker-compose start 服务名

按照服务名关闭服务

docker-compose stop 服务名

按照服务名重启服务

docker-compose restart 服务名

按照服务名删除服务

docker-compose rm 服务名

查看服务日志

docker-compose logs 服务名

查看在docker-compose.yml中使用到的镜像

docker-compose images

查看所有服务进程

docker-compose top

以上就是docker-compose的常用命令,接下来我们来讲docker-compose.yml文件的写法吧

docker-compose文件书写规范

文件中不能存在Tab缩进,一切缩进都需要用空格一个个补齐文件中冒号:后面必须空一格如果看见文件中有 - xxx,这个- xxx 代表的是数组参数

接下来,让我们以一个案例来开启我们的docker-compose之旅吧!!

案例 

使用docker-compose来运行一个nginx容器,将nginx容器的80端口映射到主机的8888端口上

version: '3.0'

services:

//webapp是自定义服务名,可以自定义

webapp:

image: nginx

ports:

- "8888:80"

在写完docker-compose.yml文件后要运行

docker-compose up -d

将webapp服务运行进行停止

docker-compose stop webapp

接下来我们将对文件中出现的参数进行讲解和补充.

version

代表docker-compose的版本,建议使用3.0版本

services

从这里开始就可以写服务名了,里面每一个服务名代表一个容器

image

表示该服务容器的一个依赖镜像,他会优先在本地寻找镜像是否存在,如果不存在,docker-compose会尝试自己拉取镜像

ports

暴露端口信息,在文件中ports属于数组,可以写多个端口在内,如

注意: ports会将端口信息映射到主机上

"宿主机端口:容器内端口"

ports:

- "80:80"

- "8888"

接下来就是对docker-compose.yml的一些补充命令

networks

networks和ports一样,也是数组,可以写多个参数

networks用于配置容器连接的网络。

network:

- testnet1

- testnet2

volumes

volumes也是数组类型,可以存放多个数据

volumes用于声明数据卷挂载路径,有以下三种格式

volumes:

- 容器内需要挂载路径

- 宿主机路径:容器内需要挂载路径

- 宿主机路径:容器内需要挂载路径:ro

ro是访问模式,代表只读

environment

设置环境变量,也是数组形式

environment:

- MYSQL_ROOT_PASSWORD: 123456

该例子是配置了mysql数据库的密码.

expose

暴露端口,这里只是作为提醒,不会将端口映射到宿主机上,仅仅只是告诉使用者,我的这个端口映射容器内的哪一个端口

expose也是数组形式,可以写多个参数

expose:

- "8888"

- "7777"

labels

这里是对docker-compose.yml做解释用的,相当于注释信息

labels:

com.startupteam.description: "webapp for a startup team"

com.startupteam.department: "devops department"

com.startupteam.release: "rc3 for v1.0"

command

这里是在容器启动时要执行的命令

commands: echo 'hello'

devices

devices用于指定设备映射关系,就是将内部的文件目录与宿主机的文件目录做关联映射

宿主机目录路径:容器内目录路径

devices:

- "/test1:/test"

build

build是用来构建Dockerfile文件的,build后面要设置Dockerfile路径

如:Dockerfile路径在/test下

build: /test/

Dockerfile文件如下:

FROM openjdk:8

COPY app.jar /usr/local

ENTRYPOINT ["java","-jar","/usr/local/app.jar"]

个人总结:

docker-compose最好用的地方就在于他一个文件可以构建多个容器,只需要一个文件就可以运行起来一个服务架构,你可以将SpringBoot或者SpringCloud用到的技术(如redis,mysql,elasticsearch,rabbitmq等等)全部塞到docker-compose.yml中,然后运行.

以上就是docker-compose相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞李爛爛爛李

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。