容器docker 架构命令案例

news2024/9/22 23:24:57

文章目录

  • 前言
  • 一、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 config

cd /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:tag


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

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

命令:

#从容器里面拷文件到宿主机
#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 nginx

docker 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.coloradmin.cn/o/1921430.html

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

相关文章

如何使用Github Page搭建个人网站【踩坑实录多图预警】

读前提示 教程链接&#xff1a;使用GitHub Page创建个人网站和博客 | GitHub 中文社区 点进网站就是非常详细的步骤介绍&#xff0c;基本按部就班来跟着做就OK了&#xff0c;结果不是很熟悉操作&#xff0c;踩了几个坑还是顺利搞定了。 踩坑后的建议&#xff1a;一定要先完成…

百元不入耳耳机哪款好?强推这五款宝藏产品

如今无线蓝牙耳机是年轻人学习通勤、健身娱乐的标配&#xff0c;但普及率极高的入耳式耳机却存在堵塞耳孔、影响外界感知等不足&#xff0c;而开放式耳机的出现恰好弥补了这些不足&#xff0c;受到了越来越多人的欢迎。但要从各种品牌、各类型号的开放式耳机中选出一款最适合自…

数学建模·灰色关联度

灰色关联分析 基本原理 灰色关联分析可以确定一个系统中哪些因素是主要因素&#xff0c;哪些是次要因素&#xff1b; 灰色关联分析也可以用于综合评价&#xff0c;但是由于数据预处理的方式不同&#xff0c;导致结果 有较大出入 &#xff0c;故一般不采用 具体步骤 数据预处理…

Nginx和Tomcat实现负载均衡群集部署应用

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作时间&…

20240711每日消息队列-------------MQ消息的积压的折磨

目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息&#xff0c;处理业务逻辑&#xff0c;持久化订单和菜品数据&#xff0c;然后将其显示在菜品管理客户端上。 最初我们的用户基数很小&#xff0c;上线后的一段时间内&#xff0c;MQ消息通信还算顺利。 随着用户…

在Mac上一键安装Mysql(解决所有安装问题)

重点强调安装mysql成功的关键在于安装的版本不能是最新&#xff01;&#xff01; 目录 一&#xff1a;下载mysql数据库安装部分到此结束 二&#xff1a;配置mysql数据库三&#xff1a;启动mysql数据库四&#xff1a;各类奇葩问题总结 一&#xff1a;下载mysql数据库 1.进入MyS…

触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘

如何在触摸设备上为输入域添加虚拟键盘&#xff1f; 一个插件可以解决这个问题&#xff0c;关键还支持高度自定义&#xff08;git地址&#xff09;&#xff1a; GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址&#xff1a;Virtual Keyboard 使用步骤&…

百日筑基第十八天-一头扎进消息队列1

百日筑基第十八天-一头扎进消息队列1 先对业界消息队列有个宏观的认识 消息队列的现状 当前开源社区用的较多的消息队列主要有 RabbitMQ、RocketMQ、Kafka 和Pulsar 四款。 国内大厂也一直在自研消息队列&#xff0c;比如阿里的 RocketMQ、腾讯的 CMQ 和 TubeMQ、京东的 JM…

无头双向非循环链表实现

无头双向非循环链表实现 Ilist.java接口&#xff1a;MyLinkedList.java&#xff1a; 无头双向非循环链表大致与无头单向非循环差不多&#xff0c;只不过每个节点多了个prev引用&#xff0c;可以从后一个节点找到前一个节点。并且除了头节点head&#xff0c;双链表还多了个尾节点…

自定义多选组件

一.业务场景 选择用印公司时&#xff0c;需要选择多个公司&#xff0c;一个公司对应一个实际使用人 点击用印单位&#xff0c;弹出选择公司窗口&#xff0c;选择使用人&#xff0c;同时带上公司ID,点击确定按钮&#xff0c;将公司和使用人回显在用印单位上 二.上代码 wxml代码…

快递查询|阿里云实现调用API接口

整体请求流程 介绍&#xff1a; 本次解析通过阿里云云市场的云服务来实现程序中对快递包裹实时监控&#xff0c;首先需要准备选择一家可以提供快递查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065859#skuyuncode5985900001 步骤1: 选择商品 如图点击…

复杂表单一键填充,让信息输入更轻松

随着网络购物成为日常生活的一部分&#xff0c;用户在多个购物应用中重复输入地址信息带来的效率问题日益凸显。同样&#xff0c;在为家人预订车票或机票时&#xff0c;添加新的购票人信息也因难以记忆家人详细信息而变得繁琐。 为了解决这些用户痛点&#xff0c;HarmonyOS SD…

企业响应式网站建站模版源码系统 海量模版随心选择 带完整的安装代码包以及搭建部署教程

系统概述 企业响应式网站建站模版源码系统”是一套完整、高效的网站建设解决方案。它旨在为企业提供一站式的网站建设服务&#xff0c;无需专业的编程知识&#xff0c;即可通过简单的操作&#xff0c;快速搭建出美观、专业的企业网站。该系统不仅包含了丰富的网站模版&#xf…

【qt】客户端连接到服务器

获取到IP地址和端口号. 通过connectToHost() 来进行连接. 对于客户端来讲,只需要socket即可. 客户端连接服务端只需要使用套接字(Socket)来进行通信。客户端通过创建一个套接字来连接服务端&#xff0c;然后可以通过套接字发送和接收数据。套接字提供了一种简单而灵活的方式来…

勘测院如何实现可控便捷的图纸安全外发?

勘测院&#xff0c;也称为勘测设计研究院或勘测设计院&#xff0c;是进行与地质、地形和地貌有关的勘察测量的单位&#xff0c;为各类工程项目提供准确的地质数据和设计依据。 勘测院会产生各类包括图纸在内的文件&#xff0c;如&#xff1a; 1、项目相关文件&#xff1a;项目…

不同的企业如何量身制定数据治理体系

在当今数据驱动的商业环境中&#xff0c;数据治理已成为企业不可或缺的一部分。然而&#xff0c;由于行业、规模、业务模式的差异&#xff0c;不同企业在制定数据治理体系时面临着各自独特的挑战和机遇。本文将探讨不同企业如何根据自身特点量身制定数据治理体系。 明确企业数据…

基于Rspack实现大仓应用构建提效实践|得物技术

一、实践背景 随着项目的逐步迭代&#xff0c;代码量和依赖的逐渐增长&#xff0c;应用的构建速度逐步进入缓慢期。以目前所在团队的业务应用来看&#xff08;使用webpack构建&#xff09;&#xff0c;应用整体构建耗时已经普遍偏高&#xff0c;影响日常开发测试的使用效率&am…

浅谈后置处理器之JSON提取器

浅谈后置处理器之JSON提取器 JMeter 的 JSON 提取器&#xff08;JSON Extractor&#xff09;是一个强大的后置处理器&#xff0c;它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据&#xff0c;并将这些数据存储为变量&#xff0c;以便在后续的请求中重用。这对…

人工智能行业应用-垃圾识别一

垃圾识别应用主要体现在AI图像垃圾识别技术上&#xff0c;这是一种基于人工智能和计算机视觉技术的图像处理技术&#xff0c;广泛应用于各个领域以提高垃圾处理的效率和准确性。 1、垃圾识别效果图 2 垃圾识别任务分析 综合利用Python语言、Qt开发模块&#xff0c;OpenCV开发模…

python使用tkinter加载rtsp视频流

简介 最近有个需求&#xff0c;需要开发个桌面应用工具&#xff0c;可是实时显示rstp视频&#xff0c;于是想到了用python自带的tkinter 来开发&#xff0c;最后打包成exe应用。 import cv2 import random import threading from tkinter import * from PIL import Image, Ima…