本文章将介绍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中,然后运行.文章来源:https://www.toymoban.com/news/detail-475072.html
以上就是docker-compose相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡文章来源地址https://www.toymoban.com/news/detail-475072.html
到了这里,关于Docker容器技术详解(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!