容器docker

news2024/9/25 1:17:26

文章目录

  • 前言
  • 一、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/1910196.html

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

相关文章

JFlash读取和烧录加密stm32程序

JFlash读取和烧录加密stm32程序 安装后JFlash所在的目录&#xff1a;C:\Program Files\SEGGER\JLink 一、烧写加密程序 1、打开C:\Program Files\SEGGER\JLink目录&#xff0c;找到JFlash.exe,双击它&#xff0c;就可以打开该执行程序。见下图&#xff1a; 2、选择“Create …

Vue基础知识:Vue3.3出现的defineOptions,如何使用,解决了什么问题?

1.那么为什么会出现defineOptions? 原因说明&#xff1a; 有<script setup></script>语法糖应用之前&#xff0c;如果要定义 props&#xff0c;emits 可以轻而易举地添加一个与 setup 平级的属性。但是用了<script setup>后&#xff0c;就没法这么干了整个…

地理服务零成本:免费地图API合辑

在全球化和数字化不断推进的今天&#xff0c;地图已成为我们日常生活和工作中不可或缺的工具。无论是规划日常通勤、探索未知地域&#xff0c;还是进行地理数据分析&#xff0c;地图都发挥着至关重要的作用。它们不仅提供了地理信息的直观表示&#xff0c;还支持复杂的空间查询…

【U8+】登录U8时,选择账套登录窗口闪退。

【问题描述】 打开用友U8企业应用平台登录窗口&#xff0c; 输入账号和密码后&#xff0c;选择账套的时候闪退。 【解决方法】 方法一&#xff1a; 重装微软的silverlight&#xff0c;在U8soft\3rdprogram中有安装包。 注&#xff1a;不要自动更新此程序版本。关闭杀毒软件防火…

【线程安全】线程互斥的原理

文章目录 Linux线程互斥线程互斥相关概念互斥量mutex引出线程并发问题引出互斥锁、互斥量 互斥量的接口初始化互斥量销毁互斥量互斥量加锁和解锁使用互斥锁抢票 可重入和线程安全概念&#xff1a;常见线程不安全的情况常见线程安全的情况常见不可重入的情况常见可重入情况可重入…

jvm 05JVM - 对象的创建 ,oop模型,字符串常量池

01.JVM - 对象的创建 1、对象的创建的方式 Java语言中&#xff0c;对象创建的方式有六种&#xff1a; new关键字&#xff1a;最常见的形式、Xxx的静态方法、XxxBuilder、XxxFactory的静态方法。 Class类的newInstance()方法&#xff1a;通过反射的方式创建对象&#xff0c;调…

92. 反转链表 II (Swift 版本)

题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 分析 这是一个经典的链表问题&#xff0c;要求反转链表的部分节点。我们可以通过以下步骤实…

Codesys 连接 EtherCAT 总线伺服

本文内容是根据参考视频做的笔记&#xff1a; EtherCAT Master 控制&#xff1a;https://www.bilibili.com/video/BV1L14y1t7ks/EtherCAT Master Motion 控制&#xff1a;https://www.bilibili.com/video/BV16P411j71E/ EtherCAT 总线简单介绍 从站站号&#xff1a;如果使用扫…

【pytorch22】激活函数与GPU加速

激活函数 ReLu还是还是可能出现梯度弥散&#xff0c;因为x<0的时候&#xff0c;梯度还是可能小于0 leaky relu&#xff0c;在x<0的时候&#xff0c;梯度就不会为0&#xff0c;梯度不会不动 Relu函数在x0处是不连续的 一种更加光滑的曲线是SELU&#xff0c;是两个函数的…

ESXI6.7升级补丁报错VIB QLC_bootbank_qedrntv

1、报错如下图 2、原因 VMware在下方链接说的很清楚&#xff0c;报错原因为OEM提供的镜像与新版本补丁某些驱动不兼容&#xff1b; https://knowledge.broadcom.com/external/article?legacyId78487https://knowledge.broadcom.com/external/article?legacyId78487 3、解决 …

自动化立体仓库设计步骤:7步

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是关于自动化立体仓库设计步骤的详细指南&#xff0c;其核心内容包括以下几个阶…

Git常用技能速成

文章目录 一.版本控制二.提交并推送代码三.提交推送代码 一.版本控制 接下来&#xff0c;我们就需要对我们的功能进行优化&#xff0c;但是需要说明的是&#xff0c;我们不仅仅要对上述提到的缓存进行优化&#xff0c;还需要对我们程序的各个方面进行优化。我们本章节主要是针…

mirthConnect 常用示例和语法整理

mirthConnect 常用示例和语法整理 1、jolt json常用语法 https://please.blog.csdn.net/article/details/140137463 2、常用方法 2.1 WinningDateUtils 所有的时间工具在WinningDateUtils里面 获取当前时间&#xff1a;var nowStrWinningDateUtils.getStandardNowStr()获取…

【C++】开源:格式化库fmt配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍格式化库fmt配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

Android 通知访问权限

问题背景 客户反馈手机扫描三方运动手表&#xff0c;下载app安装后&#xff0c;通知访问权限打不开。 点击提示“受限设置” “出于安全考虑&#xff0c;此设置目前不可用”。 问题分析 1、setting界面搜“授予通知访问权限”&#xff0c;此按钮灰色不可点击&#xff0c;点…

Linux系统下anaconda的安装与Pytorch环境的下载

首先&#xff0c;在命令行通过cd命令&#xff0c;进入用户文件夹 cd xxx/xxx/username进入anaconda官网https://repo.anaconda.com/archive/&#xff0c;寻找anaconda下载包资源&#xff0c;这里选择最新的anaconda下载包 Anaconda3-2024.06-1-Linux-x86_64.sh 在命令行执行安…

项目收获总结--Redis的知识收获

一、概述 最近几天公司项目开发上线完成&#xff0c;做个收获总结吧~ 今天记录Redis的收获和提升。 二、Redis异步队列 Redis做异步队列一般使用 list 结构作为队列&#xff0c;rpush 生产消息&#xff0c;lpop 消费消息。当 lpop 没有消息的时候&#xff0c;要适当sleep再…

土壤检测仪器:精确地检测土壤元素

在农业生产的广阔天地中&#xff0c;土壤检测仪器如同一把钥匙&#xff0c;打开了我们认识土壤、了解土壤元素的大门。这些看似平凡却功能强大的设备&#xff0c;能够精确地检测出土壤中的各种元素&#xff0c;为农业生产提供科学、准确的数据支持。 一、土壤检测仪器的重要性 …

大气热力学(5)——绝热过程

本篇文章源自我在 2021 年暑假自学大气物理相关知识时手写的笔记&#xff0c;现转化为电子版本以作存档。相较于手写笔记&#xff0c;电子版的部分内容有补充和修改。笔记内容大部分为公式的推导过程。 文章目录 5.1 气块的概念5.2 热力学第一定律的几种微分形式5.3 干绝热过程…

为什么要进行学术会议投稿?

为什么要进行学术会议投稿&#xff1f; 学术会议投稿有以下几个重要的用途&#xff1a; 学术会议投稿有什么用 1. 学术交流与分享&#xff1a;学术会议是学者们交流和分享最新研究成果、观点和发现的平台。通过投稿并获得口头或海报展示的机会&#xff0c;您可以向其他学者介…