【2】Docker Compose编排

这篇具有很好参考价值的文章主要介绍了【2】Docker Compose编排。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Compose 使用

Docker 帮助我们解决服务的打包安装的问题,随着而来的问题就是服务过多的带来如下问题:

  1. 多次使用 Dockerfile、Build、Image 命令或者 DockerHub 拉取 Image;
  2. 需要创建多个 Container,多次编写启动命令;
  3. Container 互相依赖的如何进行管理和编排。

Compose 是一个用于定义和运行多容器的 Docker 应用的工具。使用 Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。
【2】Docker Compose编排,docker+k8s,docker,容器,docker compose,编排

Compose 使用的三个步骤:

  1. 使用 Dockerfile 定义应用程序的环境
  2. 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行
  3. 最后,执行 docker compose up 命令来启动并运行整个应用程序

Docker Compose 管理容器的结构

Docker Compose 将所管理的容器分为三层,分别是工程( project),服务(service)以及容器(container)。Docker Compose 运行目录下的所有文件( docker-compose.yml、 extends 文件或环境变量文件等)组成一个工程(默认为 docker-compose.yml 所在目录的目录名称)。一个工程可包含多个服务,每个服务中定义了容器运行的镜像、参数和依赖,一个服务可包括多个容器实例。
同一个 docker compose 内部的容器之间可以用服务名相互访问,服务名就相当于 hostname,可以直接 ping 服务名,得到的就是服务对应容器的 ip,如果服务做了扩容,一个服务对应了多个容器,则 ping 服务名会轮询访问服务对应的每台容器 ip ,docker 底层用了 LVS 等技术帮我们实现这个负载均衡。

Docker Compose.yml 常用指令

  • image

指定镜像名称或者镜像 id,如果该镜像在本地不存在,Compose 会尝试 pull 下来。
示例:

image: java
  • build

指定 Dockerfile 文件的路径。可以是一个路径,例如:

build: ./dir

也可以是一个对象,用以指定 Dockerfile 和参数,例如:

build:
	context: ./dir
	dockerfile: Dockerfile-alternate
	args:
		buildno: 1
  • command

覆盖容器启动后默认执行的命令。
示例:

command: bundle exec thin -p 3000

也可以是一个 list,类似于 Dockerfile 中的 CMD 指令,格式如下:

command: [bundle, exec, thin, -p, 3000]
  • links

显示链接到其他服务中的容器。可以指定服务名称和链接的别名使用 SERVICE:ALIAS 的形式,或者只指定服务名称,示例:

web:
	links:
    - db
    - db:database
    - redis
  • external_links

表示链接到 docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器,特别是对于那些提供共享容器或共同服务。格式跟 links 类似,示例:

external_links:
  - redis_1
  - project_db_1:mysql
  - project_db_1:postgresql
  • ports

暴露端口信息。使用宿主端口:容器端口的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口),类似于 docker run -p ,示例:

ports:
  - "3000"
	- "3000-3005"
	- "8000:8000"
	- "9090-9091:8080-8081"
	- "49100:22"
	- "127.0.0.1:8001:8001"
	- "127.0.0.1:5000-5010:5000-5010"
  • expose

暴露端口,只将端口暴露给连接的服务,而不暴露给宿主机,示例:

expose:
	- "3000"
	- "8000"
  • volumes

卷挂载路径设置。可以设置宿主机路径(HOST:CONTAINER)或加上访问模式(HOST:CONTAINER:ro)。示例:

volumes:
	# Just specify a path and let the Engine create a volume
	- /var/lib/mysql

	# Specify an absolute path mapping
	- /opt/data:/var/lib/mysql

	# Path on the host, relative to the Compose file
	- ./cache:/tmp/cache

	# User-relative path
	- ~/configs:/etc/configs/:ro

	# Named volume
	- datavolume:/var/lib/mysql
  • volumes_from

从另一个服务或者容器挂载卷。可以指定只读或者可读写,如果访问模式没有指定,则默认是可读写。示例:

volumes_from:
	- service_name
	- service_name:ro
	- container:container_name
	- container:container_name:rw
  • environment

设置环境变量。可以使用数组或者字典两种方式。只有一个 key 的环境变量可以在运行 Compose 的机器上找到对应的值,这有助于加密的或者特殊主机的值。示例:

environment:
	RACK_ENV: development
	SHOW: 'true'
	SESSION_SECRET:

environment:
	- RACK_ENV=development
	- SHOW=true
	- SESSION_SECRET
  • env_file

从文件中获取环境变量,可以为单独的文件路径或列表。如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。如果有变量名称与 environment 指令冲突,则以 envirment 为准。示例:

env_file: .env

env_file:
	- ./common.env
	- ./apps/web.env
	- /opt/secrets.env
  • extends

继承另一个服务,基于已有的服务进行扩展。

  • net

设置网络模式。示例:

net: "bridge"
net: "host"
net: "none"
net: "container:[service name or container name/id]"
  • dns

配置 dns 服务器。可以是一个值,也可以是一个列表。示例:

dns: 8.8.8.8

dns:
	- 8.8.8.8
	- 9.9.9.9
  • dns_search

配置 DNS 的搜索域,可以是一个值,也可以是一个列表,示例:

dns_search: example.com

dns_search:
	- dc1.example.com
	- dc2.example.com
  • 其他

docker-compose.yml 还有很多其他命令,这里仅挑选常用命令进行讲解,其它不作赘述。如果感兴趣的,可以参考 docker-compose.yml 文件官方文档:https://docs.docker.com/compose/compose-file/

利用Docker Compose部署nacos环境

参考:https://nacos.io/zh-cn/docs/quick-start-docker.html

1)创建一个空目录 docker-mall

2)在 docker-mall 目录下新建一个编排文件 docker-compose-env.yml,内容如下:

version: '3'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    ports:
     - 3306:3306
		restart: always
  	volumes:
			- ./mysql:/var/lib/mysql
		environment:
  		- MYSQL_ROOT_PASSWORD=root
			- MYSQL_DATABASE=nacos
			- MYSQL_USER=nacos
			- MYSQL_PASSWORD=nacos
		command: --default-authentication-plugin=mysql_native_password
	nacos:
  	image: nacos/nacos-server:v2.1.0
  	container_name: nacos
		volumes:
			- ./nacos/logs/:/home/nacos/logs
			- ./nacos/init.d/:/home/nacos/init.d
		ports:
			- "8848:8848"
			- "9848:9848"
  		- "9555:9555"
		environment:
			- PREFER_HOST_MODE=hostname
			- MODE=standalone
			- SPRING_DATASOURCE_PLATFORM=mysql
			- MYSQL_SERVICE_HOST=mysql
			- MYSQL_SERVICE_DB_NAME=nacos
			- MYSQL_SERVICE_PORT=3306
			- MYSQL_SERVICE_USER=nacos
			- MYSQL_SERVICE_PASSWORD=nacos
			- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
		depends_on:
			- mysql
		restart: always

3)启动 compose,在 docker-mall 目录执行如下命令:

docker compose -f docker-compose-env.yml up -d

执行成功后会启动 nacos 容器,可以通过[http://192.168.65.174:8848/nacos/index.html](http://192.168.65.174:8848/nacos/index.html)访问 nacos 控制台。

4)访问 nacos 控制台,并导入项目微服务相关配置。文章来源地址https://www.toymoban.com/news/detail-775949.html

到了这里,关于【2】Docker Compose编排的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 04-docker compose容器编排

    ​ Compose 是Docker公司推出的一个工具软件,可以管理多个Dokcer容器组成一个应用。你需要定义一个YAML格式的配置文件 docker-compose.yml , 写好多个容器之间的调用关系 。然后,只要一个命令,就能同时启动/关闭这些容器 简单来说,Docker Compose 是Docker官方的开源项目, 负责实

    2024年02月09日
    浏览(43)
  • Docker高级:Compose 容器编排

    Compose 是Docker公司推出的一个软件,可以管理多个Docker容器组成一个应用。我们只需要定义一个 YAML 格式的配置文件 docker-compose.yaml 配置好多个容器之间的调用关系 ,最后只需要一个命令,就可以同时控制这些容器进行启动 / 关闭。Compose 允许用户通过一个单独的 docker-compo

    2024年02月06日
    浏览(49)
  • Docker——compose单机容器集群编排

    Docker-compose是一个基于Docker的容器编排工具。它使用一个YAML文件来定义和配置多个容器的集群。通过使用Docker-compose,我们可以轻松地定义、配置和协同运行多个Docker容器,而无需手动管理它们的启动和通信。 1.为何需要Docker-compose 在现代应用程序开发中,容器化技术已经成

    2024年02月16日
    浏览(46)
  • Docker Compose容器的快速编排

    Docker Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排(使用一个模板文件定义多个应用容器的启动参数和依赖关系,并使用Docker Compose来根据这个模板文件的配置来启动容器)。 项目/工程 - 包含一个或多个服务 - 包含一个或多个容器 默认使用项目的目

    2024年02月15日
    浏览(48)
  • docker笔记9:Docker-compose容器编排

    目录 1.是什么? 2. 能干嘛? 3.去哪下? 4.安装步骤  ​编辑 5.卸载步骤   6.Compose核心概念  6.1概念 6.2 Compose常用命令   7.Compose编排微服务 7.1改造升级微服务工程docker_boot 7.2不用Compose 7.2.1 单独的mysql容器实例 7.3 swagger测试 7.4上面成功了,有哪些问题? 7.5 使用Compose  7.5.1

    2024年02月09日
    浏览(49)
  • 4.docker容器编排(docker compose 与 docker swarm)

    容器编排:就是针对容器生命周期的管理,对容器的生命周期进行更快速方便的方式进行管理。 实例:一个java程序,依赖了mysql,redis,要想把 java 程序运行起来,则必须要先启动 mysql、redis。那么这三者这件就存在了依赖关联。   容器编排存在的意义: 依赖管理,当一个容

    2024年02月03日
    浏览(56)
  • 【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署

    大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛” ,斩获多项奖项荣誉证书 🔥 各个平台, 秋意临 账号创作者 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入 云社

    2024年02月03日
    浏览(51)
  • 尚硅谷Docker-笔记12:Compose容器编排

    Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。 docker建议我们每一个容器中只运行一个服务,因为docker容

    2024年01月18日
    浏览(46)
  • Docker进阶:Docker Compose(容器编排) 管理多容器应用—实战案例演示

    💖The Begin💖点点关注,收藏不迷路💖 在开始之前,我们需要确保已经安装了 Docker 。 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如

    2024年02月08日
    浏览(46)
  • docker-compose容器编排使用详解+示例

    Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启

    2023年04月22日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包