Docker (compose、安装、常用命令整理、compose编排) -day06

一、概念

Docker-Compose就是容器编排,负责实现对Docker容器集群的快速编排

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题

例如:

        要实部署一个Web微服务项目,除了Web服务自身,还需要再加上后端的数据库mysql服务容器、redis服务器、注册中心eureka/ nacos 、redis

二、安装 

官网:Docker Compose 概述 |Docker 文档

可以参考官网安装步骤 (用浏览器翻一下) :

安装 Compose 独立版 |Docker 文档

1-指定docker的路径为 home
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} 2- 以上面环境变量 DOCKER_CONFIG ,在其下面创建文件夹
mkdir -p $DOCKER_CONFIG/cli-plugins 3-安装compose
curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose4-设置权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

验证

1-查看版本号
[root@syf /]# docker -compose --version
Docker version 24.0.7, build afdd53b

卸载命令 : 

rm /usr/local/bin/docker-compose

 三、常用命令整理

  1. docker compose up:启动容器。可以通过添加 -d 参数在后台运行。

  2. docker compose stop:停止容器。

  3. docker compose restart:重启容器。

  4. docker compose start:启动已经停止的容器。

  5. docker compose down:停止并删除容器、网络、镜像等。

  6. docker compose ps:查看正在运行的容器。

  7. docker compose logs:查看容器的日志。可以添加 -f 参数跟踪日志,或使用 --tail 参数查看最后几条日志。

  8. docker compose rm:删除容器。可以通过添加 -f 或 --force 参数强制删除。

  9. docker compose run:运行容器,并可以指定服务的命令、环境变量等。

  10. docker compose scale:设置容器的数量。

  11. docker compose pull:拉取镜像。

  12. docker compose push:推送镜像。

  13. docker compose exec:在运行的容器中执行命令。

  14. docker compose config:验证配置文件。

  15. docker compose env:显示环境变量。

更多命令可以通过 docker-compose --help 查看帮助文档。

四、compse编排(案例) 

1- 使用的资源 可以到我的资源中下载

2- 首先,运行我们资源中的springboot的jar包:(docker 运行jar过程如下文章)

Docker (Dockerfile运行jar) -day 05-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/javaxueba/article/details/134974104

 以下是Dockerfile方式运行容器

1-上传jar到如下目录
[root@syf mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar  Dockerfile2-在本目录下,构建镜像
[root@syf mydocker]# docker build -t dockertest:1.0 .
[+] Building 17.7s (8/8) FINISHED                                                                                                                                                                  docker:default=> [internal] load build definition from Dockerfile                                                                                                                                                         0.0s=> => transferring dockerfile: 471B                                                                                                                                                                         0.0s=> [internal] load .dockerignore                                                                                                                                                                            0.0s=> => transferring context: 2B                                                                                                                                                                              0.0s=> [internal] load metadata for docker.io/library/java:8                                                                                                                                                   15.2s=> [internal] load build context                                                                                                                                                                            0.4s=> => transferring context: 58.23MB                                                                                                                                                                         0.4s=> CACHED [1/3] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d                                                                                       0.0s=> [2/3] ADD docker_boot-0.0.1-SNAPSHOT.jar dockertest.jar                                                                                                                                                  1.1s=> [3/3] RUN bash -c 'touch /dockertest.jar'                                                                                                                                                                0.3s=> exporting to image                                                                                                                                                                                       0.6s=> => exporting layers                                                                                                                                                                                      0.6s=> => writing image sha256:ae9b75acc22422d1b2dd2b14070c6dd79f03e3caa145f70813532a888d8fd4c8                                                                                                                 0.0s=> => naming to docker.io/library/dockertest:1.0  3-在8089端口,运行镜像
[root@syf mydocker]# docker run -d --name=dockertest -p 6001:6001 ae9b75acc224
c06bd1088b383466beec95e1d0af76c9794d1fe1981a7ca4308cec281fec019a4-查看容器 dockertest 
[root@syf mydocker]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS          PORTS                                                  NAMES
c06bd1088b38   ae9b75acc224   "java -jar /dockerte…"   4 seconds ago   Up 3 seconds    0.0.0.0:6001->6001/tcp, :::8090->8090/tcp              dockertest
a34aff536643   redis:6.2.6    "docker-entrypoint.s…"   2 weeks ago     Up 23 minutes   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7 5-查看日志 ,查看倒数25行
[root@syf mydocker]# docker logs dockertest|tail -n 25
java.sql.SQLException: Access denied for user 'root'@'192.168.1' (using password: YES)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.47.jar!/:5.1.47]at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source) ~[na:na]at [root@syf mydocker]# 

重点如下:使用docker compose来对比上面方式

五、使用compose编排(重点)

5.1首先,写配置文件 docker-compose.yml

vim  docker-compose.yml

#compose版本
version: "3"  #微服务项目	
services:microService:
#微服务镜像  image: dockercompose:2.0container_name: dockertestComposeports:- "6001:6001"
#数据卷volumes:- /app/data:/datanetworks: - syf_netdepends_on: - redis- mysql#redis服务redis:image: redis:6.2.6ports:- "63791:63791"volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/datanetworks: - syf_netcommand: redis-server /etc/redis/redis.conf#mysql服务mysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 'root'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'db2023'MYSQL_USER: 'user1'MYSQL_PASSWORD: '1234'ports:- "33061:33061"volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- syf_netcommand: --default-authentication-plugin=mysql_native_password #解决外部无法访问#创建自定义网络 docker network create  syf_net
networks: syf_net: 

项目配置:(jar包在我的资源里面,直接下载就行)

注意 :spring.datasource.url=jdbc:mysql://mysql:33061/boot_docker  使用 mysql 服务名称访问

                        spring.redis.host=redis  reids也是使用 redis 服务名来访问(避免ip变动问题)

server.port=6001
# ========================alibaba.druid????=====================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysql:33061/boot_docker?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.druid.test-while-idle=false
# ========================redis????=====================
spring.redis.database=0
spring.redis.host=redis
spring.redis.port=63791
spring.redis.password=
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
# ========================mybatis????===================
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.wang.docker.entities
# ========================swagger=====================
spring.swagger2.enabled=true
5.2 检查docker-compsoe.yml文件是否有语法问题
docker compose config -q
[root@syf mydocker]# ls
docker_boot-0.0.1-SNAPSHOT.jar  docker-compose.yml  Dockerfile  no1-docker_boot-0.0.1-SNAPSHOT.jar
[root@syf mydocker]# docker compose config -q
5.3 启动docker-compose服务并后台运行
docker compose up -d

运行如下:

2-运行命令
[root@syf mydocker]# docker compose up -d
[+] Running 4/4⠿ Network mydocker_syf_net     Created                                                                                                                                                                      0.2s⠿ Container mydocker-redis-1   Started                                                                                                                                                                      0.6s⠿ Container mydocker-mysql-1   Started                                                                                                                                                                      0.5s⠿ Container dockertestCompose  Started2-查看命令
[root@syf mydocker]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
dockertestCompose   "java -jar /dockerte…"   microService        running             0.0.0.0:6001->6001/tcp, :::6001->6001/tcp, 8090/tcp
mydocker-mysql-1    "docker-entrypoint.s…"   mysql               running             3306/tcp, 33060/tcp, 0.0.0.0:33061->33061/tcp, :::33061->33061/tcp
mydocker-redis-1    "docker-entrypoint.s…"   redis               running             6379/tcp, 0.0.0.0:63791->63791/tcp, :::63791->63791/tcp

 访问swagger : 192.168.1.1:6001/swagger-ui.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring系列学习三、Spring的基础组件

Spring的基础组件 一、 什么是Bean及Bean的生命周期二、 什么是依赖注入(DI)与控制反转(IOC)三、 Spring的作用域与生命周期四、 Spring的配置方式(XML与基于注解的配置)五、HelloWorld示例六、结语 欢迎回来各位亲爱的小伙伴&#xff01;我们已经滑过Spring的门槛&#xff0c;…

laravel api资源的问题记录

resource 转换层 可以帮助我们转换一些字段的结果&#xff0c;类似前端的filter。 可以使用比如对象或者模型的形式来处理&#xff0c;但使用sql查询会导致n1的问题。如图&#xff1a; 层次嵌套很多&#xff0c;而且很深&#xff0c;这样虽然开发方便了&#xff0c;但是维护就…

大华NVR和IPC通过主动注册协议方式接入AS-V1000视频监控平台的步骤

最近有人经常用到有的型号的大华网路摄像机&#xff0c;不支持国标GB28181标准&#xff0c;问我们能否接入到在公网的AS-V1000平台 &#xff1f; 我们早期就开发了大华的主动注册协议SDK&#xff0c;能够支持大华的NVR和IPC接入到AS-V1000平台。 今天就直接讲解如何一步步的把局…

【ES6】Class继承-super关键字

目录 一、前言二、ES6与ES5继承机制区别三、super作为函数1、构造函数this1&#xff09;、首先要明确this指向①、普通函数②、箭头函数③、注意事项 2&#xff09;、其次要明确new操作符做了哪些事情 2、super()的用法及注意点1&#xff09;、用法2&#xff09;、注意点 四、s…

【Docker-Dev】Mac M2 搭建docker mysql

Mac M2 搭建Mysql 1、前言2、前置说明-Docker的代理访问3、前置说明-Mysql的镜像访问3.1、提取信息3.1.1、开启Mysql的实例3.1.2、Dokcer连接Mysql3.1.3、官方简易版的docker-compose3.1.4、如何登录mysql bash3.1.5、自定义my.cnf文件3.1.6、如何知道其他自定义配置项 4、M2安…

LeetCode刷题--- 有效的数独

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主…

什么是负载均衡?

负载均衡是指在计算机网络领域中&#xff0c;将客户端请求分配到多台服务器上以实现带宽资源共享、优化资源利用率和提高系统性能的技术。负载均衡可以帮助小云有效解决单个服务器容量不足或性能瓶颈的问题&#xff0c;小云通过平衡流量负载&#xff0c;使得多台服务器能够共同…

模式识别与机器学习(十二):Stacking

原理 在本次实验中以决策树、svm和随机森林为基学习器&#xff0c;以决策树为元学习器。 Stacking的做法是首先构建多个不同类型的一级学习器&#xff0c;并使用他们来得到一级预测结果&#xff0c;然后基于这些一级预测结果&#xff0c;构建一个二级学习器&#xff0c;来得到…

基于MATLAB的泊松分布,正态分布与伽玛分布(附完整代码与例题)

目录 一. 泊松分布 1.1 理论部分 1.2 MATLAB函数模型 1.3 例题 二. 正态分布 2.1 理论部分 2.2 MATLAB函数模型 2.3 例题 三. 伽玛分布 3.1 理论部分 3.2 MATLAB函数模型 3.3 例题 一. 泊松分布 1.1 理论部分 Poisson分布是离散的&#xff0c;其x值只能取自然数。…

const和constexpr

constexpr 是 C 11 标准新添加的关键字&#xff0c;在此之前&#xff08;C 98/03标准&#xff09;只有 const 关键字&#xff0c;其在实际使用中经常会表现出两种不同的语义&#xff08;常量和只读&#xff09;。 dis_1() 函数中的“const int x”只是想强调 x 是一个只读的变量…

Neo4j 5建库

Neo4j 只有企业版可以运行多个库&#xff0c;社区版无法创建多个库&#xff0c;一个实例只能运行一个库&#xff1b; 如果业务需要使用多个库怎么办呢&#xff1f; 就是在一个机器上部署多个实例&#xff0c;每个实例单独一个库名 这个库的名字我们可以自己定义&#xff1b; …

Hadoop之HDFS 详细教程

1、HDFS概述 Hadoop 分布式系统框架中&#xff0c;首要的基础功能就是文件系统&#xff0c;在 Hadoop 中使用FileSystem 这个抽象类来表示我们的文件系统&#xff0c;这个抽象类下面有很多子实现类&#xff0c;究竟使用哪一种&#xff0c;需要看我们具体的实现类&#xff0c;在…

实战13 分配角色

目录 1、分配角色思路 2、分配角色回显接口实现 3、分配角色回显前端实现 3.1 编写前端api脚本代码 3.2 编写分配角色窗口代码 3.3 编写分配角色回显脚本代码 4、分配角色后端接口 4.1 UserRoleDTO 4.2 UserMapper 4.3 UserMapper.xml 4.4 UserService 4.5 UserServ…

ASP.Net实现新闻添加查询(三层架构,含照片)

目录 演示功能&#xff1a; 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 ​编辑 点击Button添加 步骤&#xff1a; 1、建文件 ​编辑 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper&#xff08;对数据库进行操作…

vue3+elementPlus:el-drawer新增修改弹窗复用

在el-drawer的属性里设置:title属性&#xff0c;和重置函数 //html<!-- 弹窗 --><el-drawerv-model"drawer":title"title":size"505":direction"direction":before-close"handleClose"><el-formlabel-posit…

数据挖掘(作业3

任务一 对以下数据集使用K均值聚类算法&#xff1a; 1&#xff09;观察实验结果是否符合预期&#xff1b; 2&#xff09;利用SSE标准确定K值&#xff1b; 3&#xff09;自行调参并观察对聚类结果的影响。 注意&#xff1a;需要把类别信息去掉。 “tutorial3_Data Explorat…

HTTP代理服务器:Go语言下的“网络翻译官”

开场白&#xff1a;在这个全球化的网络时代&#xff0c;有时我们需要一个“翻译官”来帮助不同系统、不同语言进行交流。今天&#xff0c;我们就来探讨如何使用Go语言&#xff0c;轻松实现这样一个角色——HTTP代理服务器&#xff0c;让我们的网络请求更加畅通无阻&#xff01;…

模式识别与机器学习-无监督学习-聚类

无监督学习-聚类 监督学习&无监督学习K-meansK-means聚类的优点&#xff1a;K-means的局限性&#xff1a;解决方案&#xff1a; 高斯混合模型&#xff08;Gaussian Mixture Models&#xff0c;GMM&#xff09;多维高斯分布的概率密度函数&#xff1a;高斯混合模型&#xff…

c语言用四种方式求解成绩之中最高分和最低分的差值

文章目录 一&#xff0c;题目二&#xff0c;方法1&#xff0c;方法一2&#xff0c;方法二3&#xff0c;方法三4&#xff0c;方法四 三&#xff0c;示例结果 一&#xff0c;题目 最高分最低分之差 输入n个成绩&#xff0c;换行输出n个成绩中最高分数和最低分数的差 输入 : 两行…

信息网络协议基础-IPv6协议

文章目录 概述为什么引入IP服务模型IPv4的可扩展性问题解决方法***CIDR(Classless Inter-Domain Routing, 无类别域间寻路)前缀汇聚***前缀最长匹配***NAT(网络地址转换)存在的问题解决方案路由表配置***局限性IPv6协议头标IPv6地址表示前缀类型单播地址链路局部地址(Link-Loca…