iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >docker-compose常见的参数命令详解
  • 361
分享到

docker-compose常见的参数命令详解

2024-04-02 19:04:59 361人浏览 泡泡鱼
摘要

目录1. Docker Compose 产生背景2. Docker Compose模板文件1.environment2.volumes3.build4.depends_on5.env

1. Docker Compose 产生背景

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 WEB 项目,除了 Web 服务容器本身,往往还需要再加上后端的多种数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

中文文档:https://yeasy.gitbook.io/docker_practice/compose

2. Docker Compose模板文件

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。下面主要列出几个常见&重要的模板指令,其他指令大家可以自行百度。

默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。

1.environment

设置环境变量,主要是用来配置容器中程序所需要配置的一些参数。你可以使用数组或字典两种格式。

services:
  Mysql:
    image: mysql:latest
    ports:
      - 3307:3306
	environment:	# 使用字典格式,类似于 docker run -e MYsql_ROOT_PASSWord=root
	  MYSQL_ROOT_PASSWORD: root

也可以使用数组格式:

services:
  mysql:
    image: mysql:latest
    ports:
      - 3307:3306
    environment:	# 使用数组格式
      - MYSQL_ROOT_PASSWORD=root

2.volumes

数据卷所挂载路径设置,挂载数据卷的默认权限是读写(rw)。

你可以在主机上挂载绝对路径,或者挂载相对路径,相对路径是相对于当前正在使用的compose配置文件的目录进行扩展。 相对路径应始终以 . 或者 … 开始。

services:
  mysql:
    image: mysql:latest
    ports:
      - 3307:3306
	environment:	# 使用字典格式,类似于 docker run -e MYSQL_ROOT_PASSWORD=root
	  MYSQL_ROOT_PASSWORD: root
    volumes:	
   	  # 挂载绝对路径映射,没有这个路径的话会自动创建
      - /root/docker/composetest/Tomcat/app_data:/var/lib/mysql

      # 或者使用相对路径映射,也会自动创建
      - ./app_data:/var/lib/mysql

你还可以使用别名的方式挂载容器数据卷(可以跨多个服务并重用挂载卷,当然使挂载绝对路径或相对路径也可以重用挂载卷),但要注意一点,使用别名的方式挂载需要在顶级volumes关键字中声明挂在卷,否则启动会报错。

services:
  mysql:
    image: mysql:latest
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - my_app_data:/var/lib/mysql
  web1:
    volumes:	# 重用my_app_data
      - my_app_data:/var/lib/mysql
  web2:
    volumes:	# 重用my_app_data
      - my_app_data:/var/lib/mysql

volumes:
  my_app_data:

3.build

指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。

services:

  webapp:
    build: ./		# 从当前目录下寻找Dockerfile文件

你也可以使用 context 指令指定 Dockerfile 所在文件夹的路径,使用 dockerfile 指令指定 Dockerfile 文件名,可以使用 args 指令指定构建镜像时往Dockerfile中传入的变量。

services:

  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile_flask
      args:
        buildno: 1

4.depends_on

解决容器的依赖、启动先后的问题。以下例子中会先启动 Redis db 再启动 web。

注意:web 服务不会等待 redis、db 完全启动之后才启动。

services:
  webapp:
    build: .
    depends_on:
      - db
      - redis

  redis:
    image: redis:latest

  db:
    image: mysql:latest

5.env_file

从文件中获取环境变量,可以为单独的文件路径或列表。

services:
  mysql:
    image: mysql:latest
    ports:
      - 3307:3306
	env_file: .env		# 仅使用单个env文件
	
	env_file:		# 通过数组来使用多个env文件
	  - ./common.env
	  - ./apps/web.env
	  - /opt/secrets.env

环境变量文件中每一行必须符合格式,支持 # 开头的注释行。

# common.env: Set development environment
MYSQL_ROOT_PASSWORD=root

6.networks

配置容器连接的网络

services:
  webapp:
    networks:
      - flask-net

networks:	# 在顶级networks关键字中需要声明,才会在启动时自动创建该网络,否则报错。
  flask-net:

7.ports

暴露端口信息。使用宿主端口:容器端口 (HOST:CONTaiNER) 格式。

ports:
 2. "80:80" # 绑定容器的80端口到主机的80端口
 3. "9000:8080" # 绑定容器的8080端口到主机的9000端口
 4. "443" # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号

8.expose

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

和ports的区别是,expose暴露容器给link到当前容器的容器,不会将端口暴露给主机。

9.restart

指定docker容器(服务)总是运行。

services:
  webapp:
    networks:
      - flask-net
	restart: always

3. docker-compose指令

中文文档: https://yeasy.gitbook.io/docker_practice/compose/commands

1.up -d(后台启动)

该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

docker-compose up -d · # 不写服务名,默认启动docker-compose.yml所有服务
docker-compose up -d 服务名 # 启动docker-compose.yml的对应服务

     默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。但是不会更新已经打好的镜像,如果镜像错误,不能通过 docker-compose up 更新镜像,只能先删除镜像。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。

2.down

此命令将会停止 up 命令所启动的容器,并移除网络,但是不会移除已经打好的镜像。

docker-compose down · # 不写服务名,默认停止docker-compose.yml所有服务
docker-compose down 服务名 # 停止docker-compose.yml的对应服务

3.exec

进入指定的容器。和docker的exec命令一样。

docker-compose exec 服务名 bash

4.ps

列出项目中目前的所有容器。

docker-compose ps # 列出所有运行的服务
docker-compose ps -q # 只列出容器的ID信息
选项:
-q 只打印容器的 ID 信息。

5.top

查看所有服务容器内运行的进程,或者查看指定服务名的容器内运行的进程。

docker-compose top
docker-compose top 服务名

6.logs -f(实时)

查看所有服务容器,或指定服务容器的日志输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 --no-color 来关闭颜色。该命令在调试问题的时候十分有用。

docker-compose logs # 输出所有服务容器的日志
docker-compose logs 服务名 # 输出对应服务的日志
docker-compose logs -f 服务名 # 实时输出对应服务的日志

其他命令参考中文文档手册。

总结

到此这篇关于docker-compose常见的参数命令详解的文章就介绍到这了,更多相关docker-compose参数命令内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: docker-compose常见的参数命令详解

本文链接: https://www.lsjlt.com/news/165233.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • docker-compose常见的参数命令详解
    目录1. Docker Compose 产生背景2. Docker Compose模板文件1.environment2.volumes3.build4.depends_on5.env...
    99+
    2024-04-02
  • Docker Compose常用命令有哪些
    今天小编给大家分享一下Docker Compose常用命令有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2024-04-02
  • cp命令常用参数详解
    cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能。 1.查看命令用法 在命令行键入: cp --help 可以看到cp 命令...
    99+
    2023-09-07
    linux 服务器 windows
  • docker的常用命令详解
    目录前言docker常用命令1 启停类/帮助 命令2镜像命令3 容器命令结语前言 本篇文章不仅仅是生硬的命令大全,也是我个人对docker学习使用的一步步总结,通过一个个示例来加深各...
    99+
    2023-05-15
    Docker的常用命令 docker常用命令
  • Docker常见命令介绍
    目录一、Docker容器信息1、查看docker容器版本2、查看docker容器信息3、查看docker容器帮助二、镜像操作命令1、查看镜像2、搜索镜像3、镜像下载4、删除镜像5、生...
    99+
    2024-04-02
  • 详解Python中命令行参数argparse的常用命令
    目录1、参数个数控制2、参数互斥3、子命令1、参数个数控制 parser.add_argument('-i', '--integers', nargs='', const=100, ...
    99+
    2023-01-29
    Python argparse常用命令 Python argparse命令 Python argparse
  • Docker基础和常用命令详解
    目录一,Docker 简介1.1,什么是 Docker1.2,Docker 与虚拟机的区别1.3,Docker 架构1.4,为什么用 Docker二,Docker 基本概念2.1,镜...
    99+
    2022-11-13
    docker基础 docker常用命令 docker使用教程
  • linux中find命令的12个常用参数详解
    这篇文章主要介绍“linux中find命令的12个常用参数详解”,在日常操作中,相信很多人在linux中find命令的12个常用参数详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中find命令的...
    99+
    2023-06-13
  • python命令行参数详解
    在Python中,可以通过命令行传递参数给脚本。这些参数可以在脚本内部使用,以便根据不同的输入执行不同的操作。Python命令行参数的详解:1、位置参数:在命令行中按照顺序传递给脚本的参数,它们可以在脚本内部通过位置来访问;2、命令行选项:...
    99+
    2023-12-18
    python 命令行
  • Python实现解析命令行参数的常见方法总结
    目录简介基本形式3种常见的获取和解析命令行参数的方法sys.argv案例案例源码1案例源码2案例1案例2案例3案例4简介 除ide的执行方式外,命令行的方式执行Python脚本是参数...
    99+
    2024-04-02
  • docker search 命令详解
    【原文链接】docker search 命令详解 文章目录 一、docker search 命令选项二、docker search 使用实例2.1 通过指定镜像名搜索2.2 搜索结果不进行截断显示2.3 设置搜索结果只显示10个2....
    99+
    2023-08-18
    docker linux 服务器
  • 详解idea maven nexus 常见命令配置
    maven 常见命令配置 maven常用命令 #创建项目 -D设置参数 mvn archetype:generate -DgroupId=cn.dwcode -Dartifact...
    99+
    2024-04-02
  • docker images命令的参数有哪些
    docker images命令的参数有: -a, --all:显示所有镜像,包括中间层映像 --digests:显示镜像的摘要信息...
    99+
    2023-10-26
    docker
  • 解密AJAX参数:详解常见参数及其功能
    AJAX参数大揭秘:详解常用参数及其作用,需要具体代码示例 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)已经成为了不可或缺的一部分。它通过JavaScript和XML(现在通常是...
    99+
    2024-01-26
    作用 常用
  • 构建 Python 命令行参数的 4 种常见方式
    目录前言    1. sys.argv2. argparse3. getopt4. click总结前言     大家好,在...
    99+
    2024-04-02
  • 详解docker-compose.yml文件常用模版命令
    注:在编写docker-compose.yml文件时,所有的冒号(:)、短横线(-)后面都需要加一个空格。 1、command 覆盖容器启动后默认执行的命令 command: ec...
    99+
    2024-04-02
  • 常见的linux命令
    这篇文章主要讲解了“常见的linux命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常见的linux命令”吧!命令cpcp [参数] [源文件或目录] [目标...
    99+
    2023-06-05
  • Python的命令行参数实例详解
    目录0. 命令行参数1. sys.argv2. getopt2.1 getopt.getopt 方法2.2 Exception getopt.GetoptError3. argpar...
    99+
    2024-04-02
  • linux的ln命令使用参数详解
    本篇内容主要讲解“linux的ln命令使用参数详解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux的ln命令使用参数详解”吧!这是linux中一个非常重要命令,请大家一定要熟悉。它的功能...
    99+
    2023-06-13
  • node.js读取命令行参数详解
    命令行参数(CLI)是在应用程序通过操作系统的命令行界面运行时用于向程序传递附加信息的文本字符串。 我们可以很容易地通过node中的全局对象(即process对象)读取这些参数。 下...
    99+
    2022-11-13
    node.js读取命令行参数 node.js读取命令行参数 node.js args模块读取命令行参数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作