Docker容器技术详解(四)

本文章将介绍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相关的内容,欢迎各位评论教导,如果觉得文章还不错或者有什么地方不懂的,欢迎留言提问点赞🧡🤞🤞🤞🧡

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值