什么是Docker和Docker-Compose?

Docker的构成

  1. Docker仓库:https://hub.docker.com

  2. Docker自身组件

    Docker Client:Docker的客户端
    Docker Server:Docker daemon的主要组成部分,接受用户通过Docker Client发出的请求,并按照相应的路由规则实现路由分发
    Docker镜像:Docker镜像运行之后变成容器(docker run)

Docker的基本组成

  • 镜像
    Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
  • 容器
    Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库
    仓库(Repository)是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
    最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。
    docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

镜像的特性

在这里插入图片描述
在这里插入图片描述
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

docker基础命令

systemctl start docker启动docker
systemctl stop docker停止docker
systemctl restart docker重启docker
systemctl status docker查看docker状态
systemctl enable docker开机启动
docker info守护进程的系统资源设置
docker search 镜像名称docker仓库的查询
docker pull 镜像名称下载docker仓库
docker imagesdocker镜像的查询
docker rmi 镜像名称iddocker镜像的删除
docker ps容器的查询
docker run 镜像名称+版本号(docker run mysql:8.0.29)容器的创建启动
docker start/stop容器启动停止

systemctl 是管理 Linux 的 systemd 服务的工具,systemctl 只能用于linux系统。

run命令扩展

在这里插入图片描述

单一容器管理

每个容器被创建后,都会分配一个CONTAINER ID作为容器的唯一标示,后续对容器的启动、停止、修改、删除等所有操作,都是通过CONTAINER ID来完成偏向于数据库概念中的主键。

docker ps --no-trunc查看
docker start/stop CONTAINER ID启动/停止
docker start/stop wordPress通过容器别名启动/停止
docker kill 容器id或容器名强制停止容器
docker rm 容器id删除已停止的容器
docker inspect wordPress查看容器所有基本信息
docker logs wordPress查看容器日志
docker stats wordPress查看容器所占用的系统资源
docker exec 容器名 容器内执行的命令容器执行命令
docker exec -it 容器名 /bin/bash登入容器的bash(我们可以使用该命令来创建mysql数据库,如下所示)

在这里插入图片描述

docker-compose编排

compose是docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。需要定义一个yaml格式的配置文件docker-compose.yaml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器

compse的核心概念

  • 一个文件:docker-compose.yaml
  • 两个要素:
    • 服务:一个个应用容器实例,比如订单微服务,redis容器,mysql容器。
    • 工程:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yaml文件中定义。

三个步骤

  • 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
  • 使用docker-compose.yml定义一个完整的业务单元,按照先后顺序安排好整体应用中的各个容器服务
  • 最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

compse常用命令

docker-compse -h查看帮助
docker-compse up启动所有docker-compose服务
docker-compse up -d启动所有docker-compose服务并后台运行
docker-compse down停止并删除容器、网络、卷、镜像
docker-compse start启动服务
docker-compse pause暂停服务
docker-compse unpause恢复暂停
docker-compse rm删除容器
docker-compse stop停止服务
docker-compse restart重启服务
docker-compse config检查配置
docker-compse config -q检查配置,有问题才有输出
docker-compse logs yml里面的服务id查看容器输出日志
docker-compse top展示当前docker-compose编排过的容器进程
docker-compse ps展示当前docker-compose编排过的运行的所有容器
docker-compse exec yml里面的服务id /bin/bash进入容器实例内部

如何编写docker-compose

官网:https://docs.docker.com/compose/compose-file/03-compose-file/。自然就是参考官网了,如果忘记了相关的语法看官网就行了,这个东西没必要深究,会使用就可以了。而且,如果使用了GoLand编译器安装了Docker插件之后编写docker-compose的时候都会有提示的。

  • 案例如下:
version: '3.0'
services:mysql8:image: mysql:8.0.29command: --default-authentication-plugin=mysql_native_password #解决外部无法访问restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: rootvolumes:
#      设置初始化脚本- ./script/mysql/:/docker-entrypoint-initdb.d/ports:
#      - 映射为13316端口- "13316:3306"redis:image: 'bitnami/redis:latest'environment:- ALLOW_EMPTY_PASSWORD=yesports:- '6379:6379'

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

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

相关文章

Qt包含文件不存在问题解决 QNetworkAccessManager

这里用到了Qt的网络模块&#xff0c;在.pro中添加了 QT network 但是添加 #include <QNetworkAccessManager> 会报错说找不到&#xff0c;可以通过在项目上右键执行qmake后&#xff0c;直接#include <QNetworkAccessManager>就不会报错了&#xff1a;

20230911 Shell指令数组以及函数值传递,值返回

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bashfunction fun() {sum0for ((i0;i<$var;i))do(( sumarr[i] ))doneecho $sum } read -p "输入该数组个数: " var for((j0;j<$var;j)) doread -p "输入数组第$j个值: " arr[j] …

【ARM CoreLink 系列 2 -- CCI-400 控制器简介】

文章目录 CCI-400 介绍DVM 机制介绍DVM 消息传输过程TOKEN 机制介绍 下篇文章&#xff1a;ARM CoreLink 系列 3 – CCI-550 控制器介绍 CCI-400 介绍 CCI&#xff08;Cache Coherent Interconnect&#xff09;是ARM 中 的Cache一致性控制器。 CCI-400 将 Interconnect 和coh…

Ubuntu下Python3与Python2相互切换

参考文章&#xff1a;https://blog.csdn.net/Nicolas_shen/article/details/124144931 设置优先级 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 200

npm版本升级报错

解决方法&#xff1a; 执行npm install --legacy-peer-deps依赖对等 npm install xxx --legacy-peer-deps命令用于绕过peerDependency里依赖的自动安装&#xff1b;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但版本不同的问题&#xff0c;以npm v4-v6的方式去继续执行…

技术解码 | GB28181/SIP/SDP 协议--EasyGBS国标GB28181平台国标视频技术SIP解析

EasyGBS国标视频云服务是基于国标GB/T28181协议的视频能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强&#xff0c;支持将接入的视频流进行全终端、全平台分发&#…

分类预测 | MATLAB实现PCA-GRU(主成分门控循环单元)分类预测

分类预测 | MATLAB实现PCA-GRU(主成分门控循环单元)分类预测 目录 分类预测 | MATLAB实现PCA-GRU(主成分门控循环单元)分类预测预测效果基本介绍程序设计参考资料致谢 预测效果 基本介绍 Matlab实现基于PCA-GRU主成分分析-门控循环单元多输入分类预测&#xff08;完整程序和数据…

正则表达式使用总结

一、字符匹配 普通字符&#xff1a;普通字符按照字面意义进行匹配&#xff0c;例如匹配字母 "a" 将匹配到文本中的 "a" 字符。 元字符&#xff1a;元字符具有特殊的含义&#xff0c;例如 \d 匹配任意数字字符&#xff0c;\w 匹配任意字母数字字符&#xf…

错误: 找不到或无法加载主类 Main

在用git回退到上个版本后发现&#xff0c;无法运行项目并提示 错误: 找不到或无法加载主类 Main 可以看到Main前面的图标也是号。 查了半天没有解决&#xff0c;问了个大佬&#xff0c;大佬一下就解决掉了&#xff0c;本文记录下解决过程。 错误原因是编辑器无法找到代码位置&…

TCP机制之连接管理(三次握手和四次挥手详解)

TCP的连接管理机制描述了连接如何创建以及如何断开! 建立连接(三次握手) 三次握手的过程 所谓建立连接就是通信双方各自要记录对方的信息,彼此之间要相互认同;这里以A B双方确立男女朋友关系为例: 从图中可以看出,通信双方各自向对方发起一个"建立连接"的请求,同时…

LabVIEW检测润滑油中的水分和铁颗粒

LabVIEW检测润滑油中的水分和铁颗粒 润滑油广泛应用于现代机械设备&#xff0c;由于工作环境日益恶劣&#xff0c;润滑油经常被水分乳化&#xff0c;加速对机械设备的腐蚀。此外&#xff0c;润滑油还受到机械零件摩擦中产生的Fe颗粒的污染&#xff0c;削弱了其机械润滑效果。润…

Java——》ThreadLocal

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…