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

news2024/11/17 3:32:53

一、概念

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

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

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

相关文章

【AI服饰】孔雀背景服装_AIGC服饰订制设计咨询产业

服饰系列 AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;服饰图是指通过人工智能生成的服装设计图案。随着人工智能技术的不断进步&#xff0c;AIGC服饰图在未来有着广阔的发展空间。 首先&#xff0c;AIGC服饰图可以提供更多的设计可能性。传统的服…

LazyForEach常见使用问题

目录 1、渲染结果非预期 2、重新渲染时图片闪烁 3、ObjectLink属性变化UI未更新 上篇文章中我们介绍了LazyForEach的基本使用&#xff0c;展示了如何使用LazyForEach构造一个列表&#xff0c;并演示数据的添加、删除、修改如何与LazyForEach配合并正确的更新UI。本篇将介绍使…

VMware16 pro 安装openEuler-23.09-x86_64,详细操作流程+详图。

1.环境&#xff1a; win11, vmware16 pro, openEuler-23.09-x86_64-dvd.iso 社区版openEuler 23.09官方下载地址&#xff1a; openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、…

【头歌实训】PySpark Streaming 入门

文章目录 第1关&#xff1a;SparkStreaming 基础 与 套接字流任务描述相关知识Spark Streaming 简介Python 与 Spark StreamingPython Spark Streaming APISpark Streaming 初体验&#xff08;套接字流&#xff09; 编程要求测试说明答案代码 第2关&#xff1a;文件流任务描述相…

基于采样的自动驾驶规划算法 - PRM,RRT,RRT*,CL-RRT

本文将讲解PRM&#xff0c;RRT&#xff0c;RRT*自动驾驶规划算法原理&#xff0c;不正之处望读者指正 0 前言 机器人运动规划的基本任务&#xff1a;从开始位置到目标位置的运动 &#xff08;1&#xff09;如何躲避构型空间出现的障碍物 &#xff08;2&#xff09;如何满足机器…

【回溯】0-1背包Python实现

文章目录 [toc]问题描述形式化描述 回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 给定 n n n种物品和一背包&#xff0c;物品 i i i的重量是 w i w_{i} wi​&#xff0c;其价值为 v i v_{i} vi​&#xff0c;背包的容量为 c …

第27关 在K8s集群上使用Helm3部署最新版本v2.10.0的私有镜像仓库Harbor

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 在前面的几十关里面&#xff0c;博哥在k8s上部署服务一直都是用的docker hub上的公有镜像&#xff0c;对于企业服务来说&#xff0c;有些我们是不想把服务镜像放在公网上面的&#xff1b; 同时…

记一次史诗级灾难的恢复方法:笨蛋edge把我收藏夹清空了

先在文件管理器中打开隐藏文件和文件扩展名的按钮 这一点可以去网上搜搜&#xff0c;教程非常多。 打开edge&#xff0c;关闭收藏夹的同步按钮 根据下图所示路径找到文件 Bookmarks 15060是我的用户名&#xff0c;各位要找到以自己的用户名命令的文件夹哈。 按顺序执行&…

金三银四,软件测试面试题总结,offer稳稳的。。。

前言 前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些…

【AI】计算机视觉VIT文章(Transformer)源码解析

论文&#xff1a;Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020 源码的Pytorch版&#xff1a;https://github.com/lucidrains/vit-pytorch 0.前言 …

绝缘电阻测试仪的测量范围有多少?它的测量方法是什么?

绝缘电阻测试仪广泛应用于设备检测和故障排除。它广泛应用于电力检测行业。甚至可以说&#xff0c;电力设备离不开绝缘电阻测试仪设备。对于许多经验丰富的电力测试工人来说&#xff0c;绝缘电阻测试仪的常规测量范围和方法应该非常清楚。在本文中&#xff0c;我们将向一些新的…

分享免费视频素材网站,第三弹

今天继续给大家分享免费视频素材网站&#xff0c;整理不易&#xff0c;觉得内容不错的话&#xff0c;可以点赞收藏一下哦&#xff5e; 1.livelybg 一个免费视频素材小站&#xff0c;资源很少很少&#xff0c;但均为很少见的科幻、超现实、赛博朋克风格素材&#xff01;&#xf…

Linux账号和权限管理

目录 前言 一、管理用户账号 1、Linux系统中用户账号类型 2、用户标识UID的分类 3、用户账号文件 4、用户账号的初始配置文件 5、用户账号的管理命令 5.1 useradd 5.2 usermod 5.3 passwd 5.4 userdel 二、管理组账号 1、Linux系统中组账号类型 2、组标识号GID的…

blackbox黑盒监控部署(k8s内)tensuns专用

一、前言 部署在k8s中需要用到deployment、configmap、service服务 二、部署 创建存放yaml的目录 mkdir /opt/blackbox-exporter && cd /opt/blackbox-exporter 编辑blackbox配置文件&#xff0c;使用configmap挂在这 vi configmap.yaml apiVersion: v1 kind: Confi…

移动app软件开发50个创意

那些需要努力工作才能赚钱的日子已经一去不复返了。现在&#xff0c;可以通过软件app赚钱。好吧&#xff0c;人类完全依赖智能手机这并不是谎言&#xff0c;无论是订购项目还是呼叫某人提供各种服务。因此&#xff0c;投资移动软件app开发是一个好主意。然而&#xff0c;移动软…

【51单片机系列】DS1302时钟模块

本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流…

【教程】使用ipagurd打包与混淆Cocos2d-x的Lua脚本

文章目录 摘要引言正文1. 准备工作2. 使用ipaguard处理Lua文件3. 运行ipagurd进行混淆代码加密具体步骤测试和配置阶段IPA 重签名操作步骤4. IPA重签名与发布 总结 摘要 本文将介绍如何使用ipagurd工具对Cocos2d-x中的Lua脚本进行打包与混淆&#xff0c;以及在iOS应用开发中的…

IDEA2023创建web项目

一、新建项目 点击File->New->Project...&#xff0c;如果是第一次创建项目则单击New Project 二、添加Web Application 建好的样子 把web移动到main目录下同时改名为webapp 三、不存在Add Framework Support添加Web Application 如何存在Add Framework Support&#…

React快速入门之交互性

响应事件 创建事件处理函数 处理函数名常以handle事件名命名 function handlePlayClick() {alert(Playing);}传递事件处理函数 函数名、匿名两种方式&#xff01; function PlayButton() {function handlePlayClick() {alert(Playing);}return (<Button handleClick{handl…

信息科技成“新课标”重点,家长必须要懂!

日新月异的当下&#xff0c;人工智能无疑是与生活最为密切相关的核心词语。或许在不远的将来&#xff0c;技术含量低的重复性工作将会被机器取代。甚至有人认为&#xff0c;现在的小学生&#xff0c;大概多数会在未来从事目前尚未发明出来的工作。 近年来&#xff0c;我国的教…