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-compose

4-设置权限
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  Dockerfile


2-在本目录下,构建镜像
[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
c06bd1088b383466beec95e1d0af76c9794d1fe1981a7ca4308cec281fec019a

4-查看容器 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.0
    container_name: dockertestCompose
    ports:
      - "6001:6001"
#数据卷
    volumes:
      - /app/data:/data
    networks: 
      - syf_net
    depends_on: 
      - redis
      - mysql
      
#redis服务
  redis:
    image: redis:6.2.6
    ports:
      - "63791:63791"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - syf_net
    command: redis-server /etc/redis/redis.conf
 
 #mysql服务
  mysql:
    image: mysql:5.7
    environment:
      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.d
    networks:
      - syf_net
    command: --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  Started

2-查看命令
[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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数值型字符串校验

从键盘输入一行字符串&#xff0c;编写Python代码判定字符串是python“合法”数值。 (笔记模板由python脚本于2023年12月25日 18:00:52创建&#xff0c;本篇笔记适合熟悉Python符串基本数据类型的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.py…

2023年终总结 —— 我和CSDN相遇的第一年之“技术学习和个人成长的回顾与展望”

​ ​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 &#x1f38a;对2023的总结与回顾&#x1f38a; &#x1f3c5;获奖记录 &#x1f4da;学…

1、gdb基本功能

文章目录 1、gdb1.1、运行1.1.1、程序入参 1.2、断点及观察点1.2.1、设置断点1.2.2、禁用、删除断点1.2.3、观察点 1.3、打印1.3.1、设定打印参数1.3.2、打印数据1.3.3、自动打印1.3.4、按照地址打印 linux下我现在接触到的常用调试工具如下. gbdgdbguicmake-tools gdb是最为通…

SLAM学习入门--传统图像处理

文章目录 传统图像处理颜色空间高斯滤波腐蚀和膨胀开运算和闭运算如何求一张图片的均值&#xff1f;线性插值双线性插值仿射变换透视变换常见的边缘检测算子Sobel 算法Canny 算法Hough 变换原理&#xff08;直线和圆检测&#xff09;找轮廓&#xff08;findCountours&#xff0…

【网络安全 | Misc】Aesop_secret(ISCC)

正文 动态gif&#xff0c;使用工具进行分解&#xff1a; https://tu.sioe.cn/gj/fenjie/ 得到ISCC字样 由Winhex看到密文&#xff1a; U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sRDec2w6xsY/ux53Vuj/AMZBDJ87qyZL5kAf1fmAH4Oe13Iu435bfRBuZgHpnRjTBn5xsDHONiR3t0Oa8yG/tOKJMN…

故障诊断模型 | Maltab实现PSO-BP粒子群算法优化BP神经网络的故障诊断

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现PSO-BP粒子群算法优化BP神经网络的故障诊断 模型描述 在机器学习领域,我们常常需要通过训练数据来学习一个函数模型,以便在未知的数据上进行预测或分类。传统的神经网络模型需…

【大模型的前世今生】从自然语言处理说起

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;被誉为人工智能皇冠上的明珠&#xff0c;是计算机科学和人工智能领域的一个重要方向。它主要研究人与计算机之间&#xff0c;使用自然语言进行有效通信的各种理论和方法。简单来说&#xf…

基于 CefSharp 实现一个文件小工具

I’m not saying you can’t be financially successful I’m saying have a greater purpose in life well beyond the pursuit of financial success Your soul is screaming for you to answer your true calling You can change today if you redefine what success is to …

网络安全—认证技术

文章目录 加密认证对称密钥体制公钥密码体制公钥的加密公钥身份认证和加密 鉴别码认证MAC鉴别码 报文摘要认证认证 加密只认证数字签名 通过了解以前前辈们使用的消息认证慢慢渐进到现代的完整的认证体系。所以在学习的时候也很蒙圈&#xff0c;因为前期的很多技术都是有很严重…

matplotlib单变量和双变量可视化

使用seaborn 库的tips数据集&#xff0c;其中包含了某餐厅服务员收集的顾客付小费的相关数据&#xff08;评论区&#xff09; 单变量可视化 直方图 直方图是观察单个变量最常用的方法。这些值是经过"装箱"&#xff08;bin&#xff09;处理的 直方图会将数据分组后绘…

Vlan的封装模式和端口讲解(Access、Trunk、Hypbrid端口)

目录 Vlan的封装模式 ISL协议 802.1Q协议 二层接口类型 Access接口 Trunk接口 Hybrid接口 不同Vlan之间的通信 Vlan的作用&#xff08;Vlan工作于OSI参考模型的第二层&#xff09; Vlan&#xff08;Virtual Local Area Network&#xff09;虚拟局域网&#xff0c;将一个…

格密码基础:子格,q-ary垂直格与线性代数

目录 一.写在前面 二.子空间垂直 2.1 理论解释 2.2 举例分析 三. 零空间 3.1 零空间与q-ary垂直格 3.2 零空间与行/列空间 四. 格密码相关 一.写在前面 格密码中的很多基础原语都来自于线性代数的基本概念&#xff0c;比如举几个例子&#xff1a; 格密码中的非满秩格…

年底离职了?2024普通人失业怎么创业?2024创业风口!

有多少人会在12月份离职&#xff1f;这是近期热门的话题&#xff0c;年底了&#xff0c;离职潮也来了。是工作压力大?是跟同事相处不好&#xff1f;是公司发展没前景&#xff1f;不&#xff0c;统统都不是。离职无外乎一个原因&#xff1a;工资低&#xff01; 我们除了打工还…

Mybatis 事务接口

当我们从数据源中得到一个可用的数据库连接之后&#xff0c;就可以开启一个数据库事务了&#xff0c;事务成功开启之后&#xff0c;我们才能修改数据库中的数据。 在修改完成之后&#xff0c;我们需要提交事务&#xff0c;完成整个事务内的全部修改操作&#xff0c;如果修改过…

分库分表之Mycat应用学习二

3 Mycat 概念与配置 官网 http://www.mycat.io/ Mycat 概要介绍 https://github.com/MyCATApache/Mycat-Server 入门指南 https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%973.1 Mycat 介绍与核心概念 3.1.1 基本介绍 历史&#x…

Tomcat和Servlet

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Tomcat是什么&#xff1f;1.1下载&#xff1a;1.2 tomcat是什么1.3启动服务器&#xff1a; 二.部署三、Servlet3.1创建项目3.2引入依赖pom.xml的所有代码 3…

一文讲清数据资产化之确权和估值

《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》已发布一年&#xff0c;数据资产化和入表已成为2023年的热门话题&#xff0c;随着2023年底国家数据局吹风《"数据要素x"三年行动计划&#xff08;2024-2026年&#xff09;》即将发布&#xff0c;这…

磁盘管理-------RAID卡

目录 一、RAID概述 二、常见类型 &#xff08;一&#xff09;RAID 0 &#xff08;二&#xff09;RAID 1 &#xff08;三&#xff09;RAID 5 &#xff08;四&#xff09;RAID 6 &#xff08;五&#xff09;RAID 10 &#xff08;六&#xff09;总结 三、创建RAID &…

lambda函数

文章目录 定义捕捉列表的形式一些更复杂的捕捉列表组合代码演示演示一演示二演示三演示四演示五演示六 lambda 函数&#xff0c;是C11中新引入的函数式编程语法&#xff0c;lambda函数可以被定义在类中成员函数内部&#xff0c;全局函数的内部。它是一个局部函数&#xff08;即…