Docker Compose Yaml(Yml)

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

Docker Hub 镜像

一、docker-compose.yaml(yml)模板

Docker Hub mysql 镜像

version: "3.9"        # compose版本号
services:
  db:                            # 单个服务标识(名字)
    container_name: mysql        # 启动后的容器名称 相当于 --name 指定的名称
    image: mysql:8               # 镜像
    ports:                       # 端口映射,前者是宿主机端口,后者是容器端口
      - 10000:3306
    environment:                 # 指定启动的环境
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: realworld   #自动创建名为realworld的数据库
    #  env_file:					# 使用文件进行代替
    #  - ./mysql.env				# mysql.env文件内容就是MYSQL_ROOT_PASSWORD=root
    volumes:                        # 表示目录映射关系(前者是宿主机目录,后者是dockker的db容器内的目录)
      - ./data:/var/lib/mysql       # 容器内的数据持久化到主机当前目录(当前yaml文件所在目录)的data目录下
    depends_on:
      - redis
    restart:
      - on-failure    # no:是默认的重启策略,在任何情况下都不会重启容器。
                      # always:容器总是重新启动。
                      # on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
                      # unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    command: [
      '--character-set-server=utf8',
      '--collation-server=utf8_unicode_ci'
    ]
    healthcheck:            # 健康检查
      test: ["CMD", "mysqladmin" ,"ping", "--protocol=tcp"]
      timeout: 20s
      interval: 1s
      retries: 20
  
  redis:
    image: redis:latest
    ports:
      - 10010:6379
    healthcheck:
      test: ["CMD", "redis-cli","ping"]
      interval: 20s
      timeout: 1s
      retries: 20
  
  memcached:
    image: memcached
    ports:
      - 10086:11211
    healthcheck:
      test: ["CMD", "echo", "stats", "|",  "nc", "127.0.0.1", "11211"]
      interval: 20s
      timeout: 1s
      retries: 20

Mongo镜像

mongo默认是没有用户的,可以进行配置

首先创建宿主机挂载目录(选择性进行配置)

#mongo数据目录
mkdir /opt/dockerstore/mongo/data
#mongo日志目录
mkdir /opt/dockerstore/mongo/logs
# 创建 mongodb 的配置文件,用于映射 docker 镜像内的配置文件
mkdir /opt/dockerstore/mongo/mongod.conf
1、docker启动
 1)、使用docker启动
# 拉取MongoDB最新版本的镜像
docker pull mongo   #执行不执行此条命令,docker run 都会自动拉取镜像
# 由于命令太长,为了方便阅读,采用反斜线(\)换行
docker run --name mymongo -p 27017:27017 \
	-v /app/mongo/data:/data/db \
	-v /app/mongo/logs:/var/log/mongodb \
	-v /app/mongo/mongod.conf:/etc/mongod.conf \
	-d mongo --auth
2)、使用docker compose启动 
version: '3.9'

services:
  mongodb:                                # 服务名称为 mongodb,该名称主要用于容器之间服务的 dns 解析
    image: mongo:latest                    # 使用的镜像名称
    restart: always                        # 当 docker 服务启动后,自动启动 mongodb 容器
    container_name: mongodb                # 容器的名称为 mymongo
    ports:
      - "27017:27017"
    environment:
      TZ=Asia/Shanghai                     #将时区设置为Asia/Shanghai
      MONGO_INITDB_DATABASE=demo           #将数据库名设置为demo
      MONGO_INITDB_ROOT_USERNAME: demo     #将用户名设置为demo  
      MONGO_INITDB_ROOT_PASSWORD: 111111   #将密码设置为111111

    volumes:                                # 宿主机硬盘目录映射容器内的路径
      - /opt/dockerstore/mongo/data:/data/db
      #- /opt/dockerstore/mongo/logs:/var/log/mongodb
      #- /root/mongo/mongod.conf:/etc/mongod.conf
    
    # 增加启动参数,--auth,表示连接 mongodb 需要用户名和密码
    #command:
      #- "--auth"
    
2、创建用户和库

首先了解mongo角色权限

role 作用
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限

注意:clusterAdmin、readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、root角色只能用于admin数据库
否则报以下错误(demo是非admin数据库):

uncaught exception: Error: couldn’t add user: Could not find roles: userAdminAnyDatabase@rad_app, readWriteAnyDatabase@rad_app

执行命令进入mongo容器

docker exec -it mongodb /bin/bash

进入容器后连接mongo客户端 

mongo admin

进入客户端后创建用户 

#使用demo库,如果不存在会创建
use demo;
#创建用户并赋予角色权限
db.createUser({user:'demo_user',pwd:'123',roles:[{role:'userAdmin',db:'demo'},"readWrite"]});

解决方案

  1. 第一次启动容器,配置文件去除–auth命令
  2. 执行创建用户命令,创建用户和库
  3. 修改配置文件,加上–auth命令
  4. 重新启动容器,执行授权命令后就可操作数据库

至此,mongoDB安装并配置完成

Docker Hub Portainer镜像

使用portainer_data 卷时,必须先创建才能使用

# 创建卷portainer_data(卷名自己定)
$ docker volume create portainer_data
portainer_data
# 查询portainer_data卷的详细信息
$ docker volume inspect portainer_data
[
    {
        "CreatedAt": "2022-11-09T15:39:45+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/portainer_data/_data",  # 创建portainer_data卷默认所在位置
        "Name": "portainer_data",
        "Options": {},
        "Scope": "local"
    }
]
version: "3.9"    # compose版本
services: # 加入服务
  portainer:     # 单个服务标识(名字)
    container_name: portainer      # 启动后的容器名称 相当于 --name 指定的名称
    image: portainer/portainer-ce:latest   # 镜像
    ports:
      - 8000:8000    # 端口映射,前者是宿主机端口,后者是容器端口
      - 9443:9443
    volumes:         # 指定对应的数据卷  前者是宿主机目录,后者是容器目录
      - /var/run/docker.sock:/var/run/docker.sock    # 数据文件挂载
      - /var/lib/docker/volumes/portainer_data:/data     # Portainer Server用于存储其数据库的卷
    restart: always
      

Docker compose常用命令解释如下:

Docker compose常用命令
指令     说明
up

          docker compose up -f yml文件名 -d

                                                                      #  启动所有的docker compose服务
                                                                      #  -f :表示指定启动的文件名

                                                                      #  -d:表示后台启动

down

           docker compose down                       # 停止服务

exec

           docker compose exec 服务id bash                  # 进入容器

ps

           docker compose ps                            # 查看所有运行的服务

restart

           docker compose restart 服务id     

                                                                      #  重启所有服务 

                                                                      #  加上服务id 表示重启单个服务

rm

           docker compose rm -fv 服务id

                                                                      #  删除服务
                                                                      #  加服务id 删除单个服务
                                                                      #  -fv 强制删除(v 包括数据卷)

start

           docker compose start 服务id                      # 启动服务

stop

           docker compose stop 服务id                      # 停止服务

top

           docker compose top 服务id             # 查看容器内运行的进程

pause

           docker compose pause 服务id                   # 暂停服务

unpuase

           docker-compose unpause 服务id              #  开启服务

logs

           docker-compose logs 服务id                     #  查看日志

可以通过 docker compose --help 从命令行运行来查看命令信息。

Define and run multi-container applications with Docker.

#使用示例
Usage:
  docker compose [-f <arg>...] [--profile <name>...] [options] [COMMAND] [ARGS...]
  docker compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --profile NAME              Specify a profile to enable
  --verbose                   Show more output
  --log-level LEVEL           DEPRECATED and not working from 2.0 - Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --no-ansi                   Do not print ANSI control characters
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert deploy
                              keys in v3 files to their non-Swarm equivalent

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker Compose version information

使用 Docker Compose 二进制文件 ,

docker compose [-f <arg>...] [options] [COMMAND] [ARGS...]

来构建和管理 Docker 容器中的多个服务。

示例:

docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
模板完成后,可运行以下命令
docker compose up -d  #后台启动

使用use mysql;命令选择数据库后,使用以下命令的其中之一查看用户消息情况

$select host,user from user;
$select Host,User,plugin from user;
$select host,user,authentication_string from user\G

eg:
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select Host,User,plugin from user;
+-----------+------------------+-----------------------+
| Host      | User             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

注:docker-compose yaml文件配置时配置了密码则启动mysql之后,Navicat或beekeeper studio 社区版直接用密码就可以进行远程连接,不需要更改加密方式。如果是从挂起的虚拟机中恢复过来的,则用Navicat远程连接不上,会出现10061或10060错误,解决办法:重启虚拟机即可连接成功!!!

以下命令参考使用文章来源地址https://www.toymoban.com/news/detail-489811.html

1、docker exec -it 容器ID/容器名 bash    #进入mysql的docker容器中
2、mysql -uroot -p      #输入密码进入mysql
3、use mysql;
4、ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';    #将验证方法从auth_socket修改成mysql_native_password,并设置密码,123456 就是密码
5、update user set host = '%' where user = 'root';  #若不允许从远程连接,只能在本地连接。登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%" 
6、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; #这里表示赋予该用户所有数据库所有表权限(*.*表示所有表,%表示所有IP地址)
7、FLUSH PRIVILEGES;    #刷新权限

二、docker容器命令

docker exec -it 容器名/容器ID /bin/bash        #进入容器
# 从容器内 退出到自己服务器中 需注意 两个退出命令的区别
#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

 
docker start 容器ID/容器名          # 启动容器
docker stop 容器名/容器ID           # 停止之前运行的容器
docker restart 容器ID/容器名        # 重启容器        
docker kill 容器ID/容器名


docker rm -f 容器名/容器ID        # 删除一个容器
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID       # 删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f $(docker ps -aq)        # 删除全部容器

#容器文件拷贝 —无论容器是否开启 都可以进行拷贝
# docker cp 容器ID/名称:文件路径  要拷贝到外部的路径   |     要拷贝到外部的路径  容器ID/名称:文件路径
# 从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
# 从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径

docker load -i 镜像保存文件位置


#可将以下命令写成脚本运行
sudo docker rm -f $(sudo docker ps -aq)
sudo docker network prune
sudo docker volume prune
docker rmi --force `docker images | grep dev-peer | awk '{print $3}'`

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

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

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

相关文章

  • docker-compose.yml配置文件参数

    1. image 在 services 标签下的第二级标签是 web,这个名字是用户自己自定义,它就是服务名称。 image 则是 指定服务的镜像名称或镜像 ID 。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。 2. environment 环境变量 ,这个标签的作用是 设置镜像变量 ,它可以保存变量到镜像

    2024年02月10日
    浏览(43)
  • docker-compose.yml报错问题

    ERROR: The Compose file \\\'./docker-compose.yml\\\' is invalid because: Invalid top-level property \\\"True\\\". Valid top-level sections for this Compose file are: version, services, networks, volumes, secrets, configs, and extensions starting with \\\"x-\\\". You might be seeing this error because you\\\'re using the wrong Compose file version. Either specify a supported vers

    2024年02月14日
    浏览(49)
  • 对象存储, 开源MinIO docker-compose.yml 文件

    https://min.io/docs/minio/linux/developers/python/API.html 经过验证,可以启动。 访问http://127.0.0.1:9001/ 登录一下(用户名和密码在 docker-compose 文件中已经配置) 配置 bucket 再配置 bucket 的accessKey, secretKey, 配置完后之后,可以下载这些配置文件为 json 文件到本地这个文件很重要, 在业

    2024年01月19日
    浏览(53)
  • 【docker】 docker-compose如何更新services镜像 | docker-compose如何更新某个镜像 | docker-compose如何重启某个服务

    更新镜像: 首先,确保你已经获取了最新的镜像版本。这可以通过 docker pull 命令来实现,或者直接使用 docker-compose pull 命令更新所有服务的镜像。 拉取 指定 镜像 - 代码如下: 拉取 所有 镜像 - 代码如下: 注意:在拉取更新的镜像后,docker-compose不会自动重新启动服务。你需要

    2024年02月06日
    浏览(48)
  • 使用docker/docker-compose通过自定义的redis.conf文件启动redis 7.2.3,附上docker-compose.yml的redis配置

    目录 一.复制以及使用自定义的redis.conf文件 1.在官网拷贝对应版本的配置文件内容新建redis.conf文件进行粘贴。(推荐) 2.也可以去官网下载对应版本的redis的tar.gz包,解压后在根目录下找到redis.conf文件复制也可也可。 二.配置redis.conf文件(这里有个小坑) 1.注释掉bind 127.0.0.1

    2024年02月03日
    浏览(59)
  • 在docker编排文件docker-compose.yml中,指定容器的ip地址

    在docker-compose的yaml文件中,可以使用networks来指定容器的ip地址。具体来说,可以在services下面的某个service中添加networks字段,然后在该字段下面添加ipv4_address字段来指定该容器的ip地址。例如: 以上我们定义了一个名为back-tier的网络,然后在web服务中使用了该网络,并指定了

    2024年02月08日
    浏览(50)
  • ERROR: Version in “./docker-compose.yml“ is unsupported

    错误原因:------              docker-compose版本过低 解决方式: 直接改成3.3  或者你保存信息中提到的版本号 首先要查看docker-compose的路径 根据上一步的 whereis 找到了docker-compose的路径为: /usr/bin/docker-compose ,所以下面的脚本,路径也替换为这个就可以了。 下载 授权 版本号

    2024年02月16日
    浏览(47)
  • Docker --- Docker-Compose、镜像仓库

    Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!   Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下: 上面的Compose文件就描述一个项目,其中包含两个容器: mysql:一个基于 mysql:5.7.25 镜像构建

    2024年02月03日
    浏览(46)
  • docker-composeERROR:ERROR: Version in “./docker-compose.yml“ is unsupported

    常见问题 docker compose出现ERROR:ERROR: Version in \\\"./docker-compose.yml\\\" is unsupported. You might be seeing this error because you\\\'re using the wrong Compose file version. Either specify a supported version (\\\"2.0\\\", \\\"2.1\\\", \\\"3.0\\\") and place your service definitions under the `services` key, 原因:docker-compose版本不对,需要升级版本 下载地

    2024年02月11日
    浏览(45)
  • ERROR: The Compose file ‘./docker-compose.yml‘ is invalid because:Unsupported config option for ser

    使用命令: docker-compose up -d 报错: 错误:撰写文件“./docker-compose.yml”无效,因为: 不支持的服务配置选项:“web5” 解决,docker-compose.yml文件缺乏版本号,导致报错,添加版本号即可解决 错误文件:  修改后: 命令能够顺利执行  

    2024年02月11日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包