容器docker 架构命令案例


文章目录

  • 前言
  • 一、docker
    • 1.1 为什么有docker
    • 1.2 docker架构
    • 1.3 docker 安装
    • 1.4 docker中央仓库
    • 1.5 docker 基本指令
    • 1.6 docker数据卷,挂载
      • 例:nginx 数据卷挂载
      • 例:mysql 本地持久化
    • 1.7 镜像制作
      • 镜像结构
      • dockerfile基础指令
      • 容器生成镜像
    • 1.8 docker 网络
    • 1.9 部署案例
      • 前端部署
      • 后端部署


前言

市电子信息产业链劳动和技能竞赛,以赛促学备战笔记,因对微服务容器框架不熟,浪费大多时间在找配置文件中.也荣幸获得三等奖

容器化
在这里插入图片描述
在这里插入图片描述


一、docker

考虑podman的生态不足,2024年7月重新整理docker
请参考2019年docker笔记 容器docker简介及基本命令

1.1 为什么有docker

在这里插入图片描述

1.2 docker架构

在这里插入图片描述

1.3 docker 安装

docker 官网:https://www.docker.com/ 点击doc文档
在这里插入图片描述

菜鸟教程:https://www.runoob.com/docker/centos-docker-install.html

# CentOS 7
# 移除旧版本docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 配置docker yum源。
sudo yum install -y yum-utils # yum-utils是一个提供额外功能的工具集,#用于管理YUM(Yellowdog Updater, Modified)软件包管理器。sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
# 可在/etc/yum.repos.d/ 中查看增加的# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker info 查看使用registy仓库。
Docker中,默认情况下镜像和容器的存储位置是/var/lib/docker。
将默认的存储路径修改为新的存储路径:
vim /etc/docker/daemon.json。在配置文件中添加以下内容:{“data-root”:”/mnt/docker”}
在这里插入图片描述

centos 8 兼容按centos7安装
在这里插入图片描述

在centos8中,dnf install docker
在这里插入图片描述

1.4 docker中央仓库

在这里插入图片描述

1.docker的官方中央仓库:这个镜像是最全的,但是下载速度最慢。
https://hub.docker.com/
2.国内的镜像网站:网易数帆, daocloud, … http://c.163.com/hub
http://hub.daocloud.io/ 不需要登录 (推荐使用)

在这里插入图片描述在这里插入图片描述

1.5 docker 基本指令

在这里插入图片描述

我们来看一个案例,以提供感性认识并加深理解。

安装mysql容器案例,-e参数需到发布镜像网查看配置文档。

docker run -itd --name mysql-test -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql
#-i interactive交互,-t tty终端,-d detach
docker run -d --name nginx -p 801:80 nginx:1.14.1

在这里插入图片描述
在这里插入图片描述

虽然我们能快速掌握案例,但不应忽视厚积薄发的理念

在这里插入图片描述

镜像基本命令

docker pull nginx #拉取镜像
docker images # 查看镜像
# 镜像打包
docker save --help
docker save -o nginx.tar nginx:latest
# 删镜像
docker rmi nginx
# 压缩包加载镜像
docker load -i /opt/nginx.tar

容器基本命令

#创建容器
docker run -d --name nginx_r -p 801:80 nginx
#查看容器
docker ps -a
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Names}}\t{{.Status}}"
#可在~./bashrc 中使用别名快捷
#容器交互 需要容器中/bin/bash
docker exec -it nginx /bin/bash
# 停容器nginx
docker stop nginx
# 重新启动容器nginx 
docker start nginx
#查看容器日志
docker logs nginx

1.6 docker数据卷,挂载

由于容器只包含应用程序和其依赖项,它们通常不包含一个完整的开发环境,例如文本编辑器vi或编译器。因此,如果你需要在容器中编辑文件,你需要使用数据卷(volume)来将主机系统上的文件或目录挂载到容器中。

在这里插入图片描述

在这里插入图片描述

例:nginx 数据卷挂载

#使用docker volume 创建,查看卷
docker volume --help
#!注意删掉容器,数据卷对应关系依然存在
# 创建run时 使用数据卷
docker run -d --name nginx -p 801:80 -v html:/usr/share/nginx/html nginx
docker run -d --name nginx -p 801:80 -v html:/usr/share/nginx/html -v config:/etc/nginx/  nginx#查看容器卷宿主机路径
docker volume inspect html
docker volume inspect html configcd /var/lib/docker/volumes/html/_data

在这里插入图片描述

宿主机目录和容器目录挂载,将宿主机目录改为数据卷名。

-v mysql:/var/lib/mysql # 识别为一个数据卷叫mysql
-v ./mysql:/var/lib/mysql #识别为当前目录下的mysql

在这里插入图片描述

例:mysql 本地持久化

官网文档:https://hub.docker.com/_/mysql查询镜像配置

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tagdocker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

命令:

#从容器里面拷文件到宿主机
#docker cp testtomcat:/usr/local/tomcat/webapps /opt
#从宿主机拷文件到容器里面
docker cp activity.sql 8300a06b704b:/opt/
#使用source命令数据恢复
mysql -uroot -p123456
>source /opt/activity.sql ;
>exit;exit;
>#删容器
docker rm mysql -f
# 重新挂载,数据仍然存在
docker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql
#重新挂载,数据仍然存在

1.7 镜像制作

在这里插入图片描述

镜像结构

在这里插入图片描述

dockerfile基础指令

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

 docker build -t imag:tag .

容器生成镜像

docker run -d -p 8081:8081  \
-v /home/xiaotang0711/Desktop/docker/hadoop.jar:/usr/hadoop.jar \
--name springboot java:8u111  \
java -jar /usr/hadoop.jar#或copy 从宿主机到容器
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
# 生成一个新的镜像
docker commit 4eb13e778da3 centos:7-ssh

1.8 docker 网络

在这里插入图片描述
因ip随机不稳定,通过自建网络,可以通过容器名连接.

在这里插入图片描述

#创建网络
network create lih
#查看网络
docker network ls
#查看容器网络
docker inspect 625ec79eee83 |grep IPAddress
#添加网络到容器
docker network  connect --help
docker network  connect lih 625ec79eee83
#再查看
docker inspect 625ec79eee83 |grep IPAddress#可以创建容器的时候添加网络

1.9 部署案例

# 生成基础镜像
docker load -i nginx.tar
#添加网络
docker network create lihnet

前端部署

需求:创建一个新的nginx容器,nginx.conf,html 目录与容器挂载。

#数据卷
#会自动本地生成目录文件
docker run -d --name nginx --network lihnet  -p 802:80 -v html:/usr/share/nginx/html -v config:/etc/nginx/  nginx
docker volume inspect  html config
#2或目录挂载
#!注意把赋值的nginx.conf到/home/nginx/html中注意把不存在的文件去掉
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/config:/etc/nginx/  nginx#3或文件对文件推荐使用
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/config/nginx.conf:/etc/nginx/nginx.conf  nginx#4或使用默认配置文件
docker run -d --name nginx --network lihnet  -p 802:80 -v /home/nginx/html:/usr/share/nginx/html nginxdocker exec -it nginx /bin/bash
#制作镜像
docker commit 78a96dd818af nignjingx
#重新生成
docker run -d -p 802:80 --name nginx2 --network lihnet nignjingx

dockerfile方式

vim dockerfile
......
# 基础镜像使用Nginx
FROM nginx
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 将前端dist文件中的内容复制到nginx目录
COPY dist  /usr/share/nginx/html/
# 用本地的nginx配置文件覆盖镜像的Nginx配置
COPY default.conf /etc/nginx/conf.d
# 暴露端口
EXPOSE 80
......

后端部署

应用程序
dockerfile方式

vim dockerfile
.....
FROM java:8
COPY *.jar /app.jar
EXPOSE 8080 #不使用expose指令,则镜像的用户无法从dockerfile直接了解到应用默认监听的端口
ENTRYPOINT ["java","-jar","app.jar"]
......
docker build -t api .
docker run -d --name javahtml -p 8080:8080 --network lihnet api

基础镜像java

#或基础镜像java生成容器docker run -d -p 8080:8080 -v /opt/depos.jar:/usr/depos.jar --name javajar java java -jar /usr/depos.jar 

mysql

docker run -itd --name mysql_r -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/init:/docker-entrypoint-initdb.d \
-v /opt/mysql/conf:/etc/mysql/conf.d \
mysql#mysql 
# 创建用户和密码
create user tom@'%' identified by 'ttt'; 
#赋予权限
grant all on *.* to root@'%' identified by '123456';create database shop;
use shop;
source /var/lib/mysql/book.sql;

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

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

相关文章

宿主机访问docker容器中的mysql被拒绝

问题&#xff1a; 解决方案&#xff1a; 1.进入docker中的mysql容器 docker exec -it 容器名称/id /bin/bash 2.登录用户 mysql -u root -p 3.进去mysql自带的管理数据库mysql use mysql; 4.查询用户的访问权限 SELECT user, host FROM user WHERE userroot;5.发现该用…

绘画平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;讲师管理&#xff0c;课程类型管理&#xff0c;课程信息管理&#xff0c;课程购买管理&#xff0c;作业类型管理 开发系统&#xff1a;Windows 架构模式&#xff1a;SSM JDK版本&…

AURORA仿真

AURORA 仿真验证 定义&#xff1a;AURORA是一种高速串行通信协议&#xff0c;通常用于在数字信号处理系统和其他电子设备之间传输数据。它提供了一种高效的方式来传输大量数据&#xff0c;通常用于需要高带宽和低延迟的应用中。AURORA协议通常由Xilinx公司的FPGA器件支持&#…

golang 项目打包部署环境变量设置

最近将 golang 项目打包部署在不同环境&#xff0c;总结一下自己的心得体会&#xff0c;供大家参考。 1、首先要明确自己目标服务器的系统类型(例如 windows 或者Linux) &#xff0c;如果是Linux 还需要注意目标服务器的CPU架构(amd或者arm) 目标服务器的CPU架构可执行命令&…

python 爬取当当网图书榜

首先查看当当网好评书单页面&#xff0c;找到翻页的URL参数 直接用requests请求页面 resp requests.get(url) 找到想要的信息&#xff0c;使用正则表达式把这些信息提取出来 patternre.compile(list_num.*?(\d).<.*?<img src"(.*?)".*?title"(.*?…

Eel入门还有一些案例

Eel入门还有一些案例 Eel 是一个 Python 库&#xff0c;它允许 Python 程序通过简单的 API 与网页进行交互。它使用 WebSocket 协议来实现 Python 后端和 JavaScript 前端之间的实时通信。下面是关于 Eel 的用法、通信原理和使用场景的一篇博客文章。 Eel的基本原理 Eel的基本原…

FGF14:脑部疾病新潜力靶标

成纤维细胞生长因子14&#xff08;FGF14&#xff09;是FGF11亚家族成员&#xff0c;在神经元的所有基本特性&#xff08;内在放电、兴奋性和抑制性神经元的突触传递和可塑性&#xff09;中发挥作用。 &#xff08;数据来源AlphaFold&#xff09; FGF14由247个氨基酸组成&#x…

实战篇(九):解锁3D魔方的秘密:用Processing编程实现交互式魔方

解锁3D魔方的秘密:用Processing编程实现交互式魔方 使用 Processing 创建一个 3D 魔方效果展示1. 安装 Processing2. 项目结构3. 代码实现4. 代码解释4.1. 初始化魔方4.2. 绘制魔方4.3. 处理鼠标事件4.4. 检查点击的面4.5. 旋转面和最终确定旋转5. 运行和测试6. 细节解释6.1. …

【资源调度】2-如何解决资源调度问题?

导读&#xff1a;本期是全网最全【资源调度】系列推文的第2期(共50期左右)。上期我们在《何为调度&#xff1f;》中&#xff0c;对调度的定义与作用、计划与调度的关系、调度问题的拆解做了详细介绍。从本期开始&#xff0c;我们选择【客服调度】场景作为【资源调度】问题的具象…

51单片机(STC8H8K64U/STC8051U34K64)_RA8889_8080参考代码(v1.3)

硬件&#xff1a;STC8H8K64U/STC8051U34K64 RA8889开发板 硬件跳线变更为并口8080模式&#xff0c;PS00x&#xff0c;R143&#xff0c;R142不接&#xff0c;R141无关 8080接口电路连接图&#xff1a; 实物连接图&#xff1a; RA8889开发板外接MCU连接器之引脚定义&…

IMS架构中的注册与会话流程:RTPEngine集成及消息路由详解

目录 S-CSCF 调用 RTPengine 整体路由 注意 IMS 注册流程 和 IMS 会话流程 的区别 IMS注册流程 IMS会话流程(如INVITE请求) 这种设计的原因 P-CSCF 调用 RTPengine S-CSCF 调用 RTPengine 整体路由 UA a生成SDP offer&#xff0c;发送SIP INVITE请求(包含SDP offer)&…

核密度估计KDE和概率密度函数PDF(深入浅出)

目录 1. 和密度估计&#xff08;KDE&#xff09;核密度估计的基本原理核密度估计的公式核密度估计的应用Python中的KDE实现示例代码 结果解释解释结果 总结 2. 概率密度函数&#xff08;PDF&#xff09;概率密度函数&#xff08;PDF&#xff09;是怎么工作的&#xff1a;用图画…

RDNet实战:使用RDNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

AI大模型走进汽车车机,智驾将是未来

车机里的AI大模型在汽车行业中的应用越来越广泛&#xff0c;主要体现在智能座舱和自动驾驶系统的深度融合上。通过将AI大模型应用于车机系统&#xff0c;可以实现更高智能化的人车交互体验。AI大模型作为人工智能发展的核心引擎&#xff0c;正在成为汽车智能化发展的关键之一。…

基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将FPGA仿真结果导入到matlab显示结果&#xff1a; 测试样本1 测试样本2 测试样本3 2.算法运行软件版本 vivado2019.2 …

mysql中的存储过程

存储过程的作用:有助于提高应用程序的性能。存储过程可以不必发送多个冗长的SQL语句 废话不说多&#xff0c;直接实操 ##实现num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 声明变量,赋默认值为0select num20;end $$ delimiter ; …

Kafka配置SASL认证

Kafka加密 Kafka认证方式 在本博客中我们使用SASL/PLAIN的方式来进行Kafka加密 环境准备 Kafka集群环境 请参考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN认证 用户校验 修改server.properties 让其支持Kafka的认证(每一个broker节点都需要修改这…

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式&#xff08;爬取百度logo为例&#xff09; import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…

中国物流信息软件系统(WMS等)行业概览,2027年将达到235.1亿元

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是《2023年中国物流信息软件系统行…

【Python】下载与安装

目录 一、 下载安装Python 1. 配置环境变量 2. 检查是否配置成功 一、 下载安装Python 在我上传的资源可以免费下载&#xff01;&#xff01;&#xff01; https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…