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.rhkb.cn/news/227819.html

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

相关文章

第二部分 离散型随机变量

目录 求分布律里的未知数 例1 例2 根据X的分布律写Y的分布律 例3 根据(X,Y)的分布律写Z的分布律 例4 根据(X,Y)的分布律写边缘分布律 例5 X与Y相互独立时的联合分布律 例6 根据分布律求期望、方差 例7 求分布律里的未知数 例1 已知X的分布律为 X-202P0.40.3k ,试求k 解 0.40…

javaEE -18(11000字 JavaScript入门 - 3)

一&#xff1a;事件 &#xff08;高级&#xff09; 1.1 注册事件&#xff08;绑定事件&#xff09; 给元素添加事件&#xff0c;称为注册事件或者绑定事件&#xff0c;注册事件有两种方式&#xff1a;传统方式和方法监听注册方式 传统注册方式 &#xff1a; 利用 on 开头的…

Rust开发⼲货集(1)--迭代器与消费器

本内容是对 Rust开发干货集[1] 的实践与扩展. iter() 不转移所有权 先简单解释下什么叫"转移所有权": 在 Rust 中&#xff0c;"转移所有权"&#xff08;Ownership Transfer&#xff09;是一种核心概念&#xff0c;它涉及变量和数据的所有权从一个实体转移…

CentOS7安装部署Zookeeper

文章目录 CentOS7安装部署Zookeeper一、前言1.简介2.架构3.集群角色4.特点5.环境 二、正文1.部署服务器2.基础环境1&#xff09;主机名2&#xff09;Hosts文件3&#xff09;关闭防火墙4&#xff09;JDK 安装部署 3.单机部署1&#xff09;下载和解压2&#xff09;配置文件3&…

【docker】—— Docker 简介

目录 &#xff08;一&#xff09;容器技术发展史 1、Jail 时代 2、云时代 3、云原生时代 &#xff08;二&#xff09;编排与容器的技术演进之路 1、DockerClient 2、RUNC&Shim 3、CRI-Containerd 4、CRI-O 5、Containerd &#xff08;三&#xff09;Docker 简介…

C练习——判断三角形并求面积

题目&#xff1a;从健盘任意输入三角形的三边长为a,b,c,编程判断a,b,c的值能否构成一个三角形&#xff0c;若能构成三角形&#xff0c;则计算并输出三角形的面积&#xff0c;否则提示不能构成三角形。 已知构成三角形的条件是&#xff1a;任意两边之和大于第三边。 解析&#…

《深入理解JAVA虚拟机笔记》垃圾回收器

JVM 判定 Java 对象是否为垃圾的方法 引用计数算法 很多教科书判断对象是否存活的算法是这样的: 在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器值就加一&#xff1b;当引用失效时&#xff0c;计数器值就减一&#xff1b;任何时刻计数器为…

想要学会JVM调优,先掌握JVM内存模型和JVM运行原理

1、前言 今天将和你一起探讨Java虚拟机&#xff08;JVM&#xff09;的性能调优。 JVM算是面试中的高频问题了&#xff0c;通常情况下总会有人问到&#xff1a;请你讲解下 JVM 的内存模型&#xff0c;JVM 的 性能调优做过&#xff1f; 2、为什么 JVM 在 Java 中如此重要 首…

使用electron属性实现保存图片并获取图片的磁盘路径

在普通的网页开发中&#xff0c;JavaScript由于安全性的考虑&#xff0c;通常是无法直接获取到客户端的磁盘路径的。浏览器出于隐私和安全原因对此类信息进行了限制。 在浏览器环境下&#xff0c;JavaScript主要通过Web APIs来与浏览器进行交互&#xff0c;而这些API通常受到浏…

C语言实现将不同数字组成无重复的三位数【一题一策】第一期

问题&#xff1a;有1、2、3、4共4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;都是多少&#xff1f; 一、题目分析 1123124132134142143221321423124123424333123143213413243424412413421423431432 我们经过排列组合&#xff0c;判断共能组成2…

cargo(rust包管理) 常见命令、包检索 (windows+linux)

rust环境和开发环境配置&#xff1a;rust开发环境配置 winlinux Cargo是Rust的构建系统和包管理器。 如果你的能力足够强也愿意&#xff0c;可以不用cargo进行rust开发&#xff0c;即从头开始敲代码 一、cargo包相关查询 1.查找包 查找cargo包链接&#xff1a;crates.io …

RAID的介绍和选择

RAID 类型&#xff1a;什么是 RAID 以及哪种 RAID 级别适合您&#xff1f; 一、RAID 简介 在2021年6月11日&#xff0c;亚瑟迪特纳进行了一场关于RAID技术的技术讲座。RAID&#xff0c;即独立磁盘冗余阵列&#xff0c;是将多个硬盘驱动器协同工作的技术。不同的RAID类型各有优…

STM32——通用计时器

通用计时器框图 1.时钟源 1&#xff09;内部时钟(CK_INT) 2&#xff09;外部时钟模式 1&#xff1a;外部输入引脚(TIx)&#xff0c;x1&#xff0c;2&#xff08;即只能来自于通道 1 或者通道 2&#xff09; 3&#xff09;外部时钟模式 2&#xff1a;外部触发输入(ETR) 4&#…

STM32实战之IAP代码升级

目录 1 IAP介绍 2 内存分区 3 整体设计流程图 4 Boot Loader的代码编写 5 APP1代码编写 6 APP2代码编写 stm32内部flash操作相关函数 1 IAP介绍 IAP&#xff08;In Application Programming&#xff09;即在应用编程&#xff0c; IAP 是用户自己的程序在运行过程中…

解决IDEA 不能正确识别系统环境变量的问题

问题描述 本人laptop 上的是设置了GOOGLE_APPLICATION_CREDENTIALS 这个环境变量的&#xff0c; 正常java or python 的程序能基于这个环境变量使用 某个gcp service account 去访问GCP的资源 [gatemanmanjaro-x13 ~]$ env | grep -i google GOOGLE_APPLICATION_CREDENTIALS/…

vue实现H5拖拽可视化编辑器

一款专注可视化平台工具&#xff0c;功能强大&#xff0c;高可扩展的HTML5可视化编辑器&#xff0c;致力于提供一套简单易用、高效创新、无限可能的解决方案。技术栈采用vue和typescript开发, 专注研发创新工具。 <template><div:style"style":class"…

云原生机器学习平台cube-studio开源项目及代码简要介绍

1. cube-studio介绍 云原生机器学习平台cube-studio介绍&#xff1a;https://juejin.cn/column/7084516480871563272 cube-studio是开源的云原生机器学习平台&#xff0c;目前包含特征平台&#xff0c;支持在/离线特征&#xff1b;数据源管理&#xff0c;支持结构数据和媒体标…

我在 VSCode 插件里接入了 ChatGPT,解决了Bug无法定位的难题

作为一名软件开发者&#xff0c;我时常面临着代码中Bug的定位和解决问题。这个过程往往既费时又充满挑战。然而&#xff0c;最近我在我的VSCode插件中接入了ChatGPT&#xff0c;这个决定彻底改变了我处理Bug的方式。 Bug&#xff1a;开发者的噩梦 在开发过程中&#xff0c;遇…

抖音详情API:从零开始构建抖音应用

随着短视频的兴起&#xff0c;抖音已经成为了一个全球范围内的热门平台。对于开发人员而言&#xff0c;利用抖音详情API从零开始构建抖音应用具有巨大的潜力和机会。本文将为你提供从零开始构建抖音应用的指南&#xff0c;包括开发环境搭建、API请求格式、用户认证等关键环节&a…

Stable Diffusion WebUI制作光影文字效果

在huggingface上下载control_v1p_sd15_brightness模型。 将模型放在stable-diffusion-webui\extensions\sd-webui-controlnet\models目录下。 SD参数配置 正向提示词&#xff1a; city,Building,tall building,Neon Light, gentle light shines through, anime style, paint…