当前位置:   article > 正文

docker compose详细使用教程_docker-compose volumes 文件映射

docker-compose volumes 文件映射

目录

Compose介绍

安装插件

docker-compose常用命令

Docker-Compose模板文件

实践操作


Compose介绍

docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

安装插件

  1. yum update
  2. yum install docker-compose-plugin
  3. # 安装完成后查看版本号
  4. docker compose version

docker-compose常用命令

  1. # 查看配置命令
  2. $ docker compose config
  3. # 构建并后台启动
  4. $ docker compose up -d
  5. # 将会停止UP命令启动的容器,并删除容器
  6. $ docker compose down
  7. #重新启动nginx容器
  8. $ docker compose restart
  9. # 启动已存在的容器命令
  10. $ docker compose start
  11. # 停止正在运行的容器命令
  12. $ docker compose stop
  13. #暂停容器
  14. $ docker compose pause
  15. # 恢复容器
  16. $ docker compose unpause
  17. # 构建镜像
  18. $ docker compose bulid
  19. # 下载镜像
  20. $ docker compose pull
  21. # 删除容器
  22. $ docker compose rm
  23. # 查看运行的镜像
  24. $ docker compose ps
  25. # 查看进程
  26. $ docker compose top
  27. # 查看服务日志输出
  28. $ docker compose logs

Docker-Compose模板文件

Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。 Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

image
image是指定服务的镜像名称或镜像ID

  1. services:
  2. web:
  3. image: hello-world

build
利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。

  1. build:
  2. context: ../
  3. dockerfile: path/of/Dockerfile

command
使用command可以覆盖容器启动后默认执行的命令。

command: bundle exec thin -p 3000

container_name
指定自定义容器名称

container_name: app

depends_on
表示服务之间的依赖关系。

  1. version: "3"
  2. services:
  3. web:
  4. build: .
  5. depends_on:
  6. - redis
  7. redis:
  8. image: redis
  9. #docker compose up:按依赖顺序启动服务,redis在web之前启动。
  10. #docker-compose stop:按依赖顺序停止服务,web在redis之前停止。

pid
将PID模式设置为主机PID模式,跟主机系统共享进程命名空间。

pid: "host"

ports
映射端口

  1. ports:
  2. - "8000"
  3. - "49022:22"
  4. - "127.0.0.1:8001:8001"

extra_hosts
添加主机名映射。使用与docker客户端–add-host类似

  1. extra_hosts:
  2. - "somehost:162.242.195.82"
  3. - "otherhost:50.31.209.229"

volumes
目录映射,可以直接使用 [主机:容器]格式,或者使用[主机:容器:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。

  1. volumes:
  2. # 只指定一个路径,Docker会自动在创建一个目录。
  3. - /var/lib/mysql
  4. # 主机使用绝对路径和容器目录映射
  5. - /opt/data:/var/lib/mysql
  6. # 以Compose配置文件的目录为中心的相对路径和容器目录映射
  7. - ./cache:/tmp/cache
  8. # 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
  9. - ~/configs:/etc/configs/:ro

dns
自定义DNS服务器。

  1. dns:8.8.8.8
  2. dns:
  3. - 8.8.8.8
  4. - 9.9.9.9

dns_search
配置DNS搜索域。

  1. dns_search:example.com
  2. dns_search
  3. - domain1.example.com
  4. - domain2.example.com

entrypoint
设置入口命令

  1. entrypoint: /code/entrypoint.sh
  2. entrypoint: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"]
  3. entrypoint: java -jar penngo_test.jar

env_file
从文件添加环境变量

  1. env_file: .env
  2. env_file:
  3. - ./common.env
  4. - ./apps/web.env
  5. - /opt/runtime_opts.env

environment
添加环境变量。

  1. environment:
  2. RACK_ENV: development
  3. SHOW: 'true'
  4. SESSION_SECRET:
  5. environment:
  6. - RACK_ENV=development
  7. - SHOW=true
  8. - SESSION_SECRET

external_links
链接到docker-compose.yml外部的容器

  1. external_links:
  2. - redis_1
  3. - project_db_1:mysql
  4. - project_db_1:postgresql

cap_add
增加指定容器的内核能力(capacity)。

  1. cap_add:
  2. - ALL

cap_drop
去掉指定容器的内核能力(capacity)。

  1. cap_drop:
  2. - NET_ADMIN

cgroup_parent
创建了一个cgroup组名称为cgroups_1:

cgroup_parent: cgroups_1

devices
指定设备映射关系

  1. devices:
  2. - "/dev/ttyUSB1:/dev/ttyUSB0"

expose
暴露端口,但不映射到宿主机,只允许能被连接的服务访问。

  1. expose:
  2. - "3000"
  3. - "8000"

labels
为容器添加Docker元数据(metadata)信息。

  1. labels:
  2. - "com.example.description=Accounting webapp"
  3. - "com.example.department=Finance"
  4. - "com.example.label-with-empty-value"

links
链接到其它服务中的容器

  1. links:
  2. - db
  3. - db:database
  4. - redis

log_driver
指定日志驱动类型。目前支持三种日志驱动类型:

  1. log_driver: "json-file"
  2. log_driver: "syslog"
  3. log_driver: "none"

log_opt
日志驱动的相关参数。

net
设置网络模式。

  1. net: "bridge"
  2. net: "none"
  3. net: "host"

实践操作

  • docker-compose.yml文件
  1. version: "3"
  2. services:
  3. mysql:
  4. image: mysql:latest
  5. container_name: mysql_slaver11
  6. restart: always
  7. privileged: true
  8. ports:
  9. - 3307:3306
  10. environment:
  11. MYSQL_ROOT_PASSWORD: 123456
  12. TZ: Asia/Shanghai
  13. volumes:
  14. - /wuming/mysql/slaver11/data:/var/lib/mysql
  15. - /wuming/mysql/slaver11/log:/var/log/mysql
  16. - /wuming/mysql/slaver11/conf/my.cnf:/etc/mysql/my.cnf
  17. mycat:
  18. image: manondidi/mycat:latest
  19. container_name: mycat
  20. restart: always
  21. ports:
  22. - 8066:8066
  23. volumes:
  24. - /wuming/mycat/conf:/usr/local/mycat/conf
  25. - /wuming/mycat/logs:/usr/local/mycat/logs
  26. redis:
  27. image: redis:latest
  28. container_name: redis_master
  • 端口测试
  1. netstat -npl | grep 3306
  2. netstat -npl | grep 3307
  3. netstat -npl | grep 8066
  • 构建并后台启动

进入docker-compose对应的文件目录下,执行以下命令

  1. # 对应目录下运行docker-compose文件
  2. docker compose up -d

  • 测试端口是否可以访问以及容器是否启动
  1. # 安装telnet
  2. yum -y install telnet
  3. # 查看对方端口是否开
  4. telnet 192.168.10.143 3307
  5. docker ps

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/74184
推荐阅读
相关标签
  

闽ICP备14008679号