尚硅谷Docker2022版学习笔记(基础篇 下)

news2024/11/24 1:23:04

目录

五、本地镜像发布到阿里云

5.1、本地镜像发布到阿里云流程

5.2、镜像的生成方法

基于当前容器创建一个新的镜像(第一种方法)

DockerFile(第二种方法)

5.3、将本地镜像推送到阿里云

本地镜像素材原型

创建仓库镜像

选择控制台,进入容器镜像服务

命名空间

仓库名称

进入管理命令获得脚本

将镜像推送到阿里云

将镜像推送到阿里云Registry

管理界面脚本

脚本实例

5.4、将阿里云上的镜像下载到本地

下载到本地

六、本地镜像发布到私有库

6.1、本地镜像发布到私有库流程

6.2、是什么?

6.3、将本地镜像推送到私有库

(1)下载镜像Docker Registry

(2)运行私有库Registry,相当于本地有个私有Docker hub

(3)案例演示创建一个新镜像,ubuntu安装ifconfig命令

① 从Hub上下载ubuntu镜像到本地并成功运行

② 原始的ubuntu镜像是不带ifconfig命令的

③ 外网连通的情况下,安装ifconfig命令并测试通过

④ 安装完成后,commit我们自己的新镜像

⑤ 启动我们的新镜像并和原来的对比

(4)curl验证私服库上有什么镜像

(5)将新镜像clayubuntu:1.3修改符合私服规范的Tag

(6)修改配置文件使之支持http

(7)push推送到私服库

(8)pull到本地并运行

七、Docker容器数据卷

7.1、坑:容器卷记得加入

7.2、回顾上一讲的知识点,参数v

7.3、是什么?

运行一个带有容器卷存储功能的容器实例

7.4、能干嘛?

7.5、数据卷案例

宿主vs容器之间映射添加容器卷

命令

​编辑

查看数据卷是否挂载成功

容器和宿主机之间数据共享

读写规则映射添加说明

读写

只读

卷的继承和共享

容器1完成和宿主机的映射

容器2继承容器1的卷规则 

八、Docker常规安装简介

8.1、总体步骤

搜索镜像

拉取镜像

查看镜像

启动镜像

停止镜像

移除容器

8.2、安装Tomcat

Docker hub上面查找Tomcat镜像

从Docker hub上拉取Tomcat镜像到本地

查看是否拉取到Tomcat

创建Tomcat容器实例

访问Tomcat首页

问题

解决

免修改版说明

8.3、安装Mysql

Docker hub上面查找mysql镜像

从Docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7

使用mysql5.7镜像创建容器(也叫运行镜像)

命令出处,哪里来的?

简单版

使用mysql镜像

实战版

新建mysql容器实例

新建my.cnf

重新启动mysql容器实例再重新进入并查看字符编码

再新建库新建表再插入中文测试

结论

8.4、安装Redis

Docker hub上面拉取redis镜像到本地标签为6.0.8

入门命令

在Centos宿主机下新建目录/app/redis

将一个redis.conf文件模板拷贝进/app/redis目录下

/app/redis目录下修改redis.conf文件

使用redis6.0.8镜像创建容器(也叫运行镜像)

测试redis-cli连接上来

请证明docker启动使用了我们自己指定的配置文件

修改前

修改后

测试redis-cli连接上来第2次


五、本地镜像发布到阿里云

5.1、本地镜像发布到阿里云流程

5.2、镜像的生成方法

基于当前容器创建一个新的镜像(第一种方法)

docker commit [options] 容器ID [repository[:tag]]

OPTIONS说明:
-a:提交的镜像作者;
-m:提交时的说明文字;
本次案例centos+ubuntu两个,当堂讲解一个,家庭作业一个,请大家务必动手,亲自实操。

DockerFile(第二种方法)

5.3、将本地镜像推送到阿里云

本地镜像素材原型

创建仓库镜像

选择控制台,进入容器镜像服务

命名空间

仓库名称

进入管理命令获得脚本

将镜像推送到阿里云

将镜像推送到阿里云Registry

管理界面脚本

脚本实例

5.4、将阿里云上的镜像下载到本地

下载到本地

六、本地镜像发布到私有库

6.1、本地镜像发布到私有库流程

6.2、是什么?

1、官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。
 
2、Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

6.3、将本地镜像推送到私有库

(1)下载镜像Docker Registry

docker pull registry

(2)运行私有库Registry,相当于本地有个私有Docker hub

docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调。

(3)案例演示创建一个新镜像,ubuntu安装ifconfig命令

① 从Hub上下载ubuntu镜像到本地并成功运行

注意:因为以前下载过,所以这里不过多赘述。

② 原始的ubuntu镜像是不带ifconfig命令的

③ 外网连通的情况下,安装ifconfig命令并测试通过

docker容器内执行上述两条命令:

apt-get update
apt-get install net-tools

之后再输入ifconfig就可以使用了。 

④ 安装完成后,commit我们自己的新镜像

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

注意:一定要在容器外执行。

这里还有个点,你退出的时候一定要用ctrl+p+q,不要用exit。

docker commit -m="ifconfig cmd add" -a="clay" 6a15b30bb5b9 clayubuntu:1.3

⑤ 启动我们的新镜像并和原来的对比

先把原来的ubuntu关闭掉,docker stop xxxx。

发现我们的新镜像是可以使用ifconfig命令的。

(4)curl验证私服库上有什么镜像

curl -XGET http://你的ip:5000/v2/_catalog

注意:这里的IP地址是你虚拟机的IP,而5000是你刚刚运行的私服库,我们的查询结果是私有库中没人任何镜像。

(5)将新镜像clayubuntu:1.3修改符合私服规范的Tag

按照以下公式来做:

docker tag 镜像:Tag Host:Port/Repository:Tag

使用命令 docker tag 将clayubuntu:1.3 这个镜像修改为你的ip:5000/clayubuntu:1.3

docker tag clayubuntu:1.3 你的ip:5000/clayubuntu:1.3

(6)修改配置文件使之支持http

vim /etc/docker/daemon.json

在我们之前配置的阿里云镜像后面加上这句:

"insecure-registries": [你的ip:5000"]

上述理由:docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。====> 修改完后如果不生效,建议重启docker。

(7)push推送到私服库

docker push 你的ip:5000/clayubuntu:1.3

(8)pull到本地并运行

docker pull 你的ip:5000/clayubuntu:1.3

七、Docker容器数据卷

7.1、坑:容器卷记得加入

--privileged=true

Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可!
 
如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,
在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即
使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

7.2、回顾上一讲的知识点,参数v

还记得蓝色框框中的内容吗?

 

7.3、是什么?

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

一句话:有点类似我们Redis里面的rdb和aof文件。

将Docker容器内的数据保存进宿主机的磁盘中。

运行一个带有容器卷存储功能的容器实例

docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录 镜像名

7.4、能干嘛?

将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的
 
Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。
为了能保存数据在docker中我们使用卷。


特点:
1:数据卷可在容器之间共享或重用数据。
2:卷中的更改可以直接实时生效,爽。
3:数据卷中的更改不会包含在镜像的更新中。
4:数据卷的生命周期一直持续到没有容器使用它为止。

7.5、数据卷案例

宿主vs容器之间映射添加容器卷

命令

docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录 镜像名

我们ctrl + p + q退出时,再看

 

果然同步到宿主机了。

当然我们在宿主机上创建文件也可以同步到容器中。

查看数据卷是否挂载成功

docker inspect 容器ID

 

容器和宿主机之间数据共享

1:docker修改,主机同步获得。
2:主机修改,docker同步获得。
3:docker容器stop,主机修改,docker容器重启看数据是否同步。

 哪怕你docker容器挂了,挂的这段时间宿主机的操作也一样会同步到docker容器中。

读写规则映射添加说明

读写

默认就是可读可写的。

只读

容器实例内部被限制,只能读取不能写。

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

 

卷的继承和共享

容器1完成和宿主机的映射

docker run -it  --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu

容器2继承容器1的卷规则 

docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu

总结:我们之前创建了u1 ubuntu,相当于用来备份的硬盘A,现在我们又创建了u2 ubuntu硬盘B,继承自硬盘A,哪怕A挂了,B照样能同步数据,等硬盘A复活,A照样有挂掉这期间的数据,相当于一主二从。

八、Docker常规安装简介

8.1、总体步骤

搜索镜像

拉取镜像

查看镜像

启动镜像

停止镜像

移除容器

8.2、安装Tomcat

Docker hub上面查找Tomcat镜像

docker search tomcat

从Docker hub上拉取Tomcat镜像到本地

docker pull tomcat

查看是否拉取到Tomcat

docker images

创建Tomcat容器实例

docker run -it -p 8080:8080 tomcat

-p小写,主机端口:docker容器端口。

-P大写,随机分配端口。

i:交互。

t:终端。

d:后台。 

 

访问Tomcat首页

问题

 

解决

(1)可能没有映射端口或者没有关闭防火墙

(2)把webapps.dist目录换成webapps

先成功启动tomcat

直接访问localhost:8080

 

 

免修改版说明

刚才的Tomcat太过麻烦,因为是新版,导致把webapps里面的东西给清空了,我们还得多几步操作,将webapps.dist改为webapps才行,所以我们还是用老一点的版本。

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

 

 

 

8.3、安装Mysql

Docker hub上面查找mysql镜像

docker search mysql

从Docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7

docker pull mysql:5.7

使用mysql5.7镜像创建容器(也叫运行镜像)

命令出处,哪里来的?

 

简单版

使用mysql镜像
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker ps
docker exec -it 容器ID /bin/bash
mysql -uroot -p

 

实战版

新建mysql容器实例
docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

 

新建my.cnf

通过容器卷同步给mysql容器实例

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

 

重新启动mysql容器实例再重新进入并查看字符编码

 

再新建库新建表再插入中文测试

 

结论

之前的DB  无效。
 
修改字符集操作+重启mysql容器实例。
 
之后的DB  有效,需要新建。
 
结论:docker安装完MySQL并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据。

8.4、安装Redis

Docker hub上面拉取redis镜像到本地标签为6.0.8

 

入门命令

命令提醒:容器卷记得加入--privileged=true。

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可。

在Centos宿主机下新建目录/app/redis

mkdir -p /app/redis

 

将一个redis.conf文件模板拷贝进/app/redis目录下

/app/redis目录下修改redis.conf文件

 

 

使用redis6.0.8镜像创建容器(也叫运行镜像)

docker run  -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

 

测试redis-cli连接上来

 

请证明docker启动使用了我们自己指定的配置文件

修改前

 

修改后

记得重启服务。 

测试redis-cli连接上来第2次

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

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

相关文章

hive row_number()对单列进行去重

学到一个高级用法 row_number() select * ,row_number() over (partition by c_id order by s_score) from score; https://www.jb51.net/article/254952.htm

【Kafka】第一章

【Kafka】第一章 1.课程内容 1.课程内容 >课程学习

Python———PyCharm下载和安装

(一)开发环境介绍 开发环境,英文是 IDE ( Integrated Development Environment 集成开发环境)。 不要纠结于使用哪个开发环境。开发环境本质上就是对Python 解释器python.exe 的封装,核心都一样。可以说&…

web前端求职面试题参考精选(合集)

web前端求职面试题之选择题 1. CSS样式表根据所在网页的位置,可分为?(B ) A.行内样式表、内嵌样式表、混合样式表 B.行内样式表、内嵌样式表、外部样式表 C.外部样式表、内嵌样式表、导入样式表 D.外部样式表、混合样式表、导入样式表 2. 对于标签&#xff0…

IDEA使用技巧之——自动导入包,自动优化未使用的import

1 进入设置 2 进入编辑器 3 选择自动导入,中的方框内容 4 最后点击应用,点击确定即可了。 END

使用docker搭建frp在云服务器上调用本地服务器的代码

前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务…

AI 绘画 - 建筑绘图辅助设计之 Controlnet SEG Depth

前情提要 2023-06-17 周六 杭州 雨转阴 小记: 周末的午休感觉还是没有尽兴,说是要乖乖休息却只是躺下闭目养神。 任务清单: a. Sketchup 安装和学习; b. Sketchup 建模学习; c. Controlnet SEG 语义分割基础; d. Controlnet Depth; 简介 应用实践 …

理解mysql数据库

1.MySQL 在 Centos 7环境安装 1.1 卸载不要的环境 ps ajx |grep mariadb # 先检查是否有 mariadb 存在 systemctl stop mariadb.service # 停⽌ mariadb 服务 ps ajx |grep mariadb # 再 检查是否有 mariadb 存在 1.2 删除多余的安装包 rpm -qa | grep mysql #查看默认安装…

#systemverilog# 关于关键字 之 unique 随机约束

前言 在随机约束中,我们可以使用关键字 unique 。 使用关键字unique定义的SystemVerilog约束称为唯一约束。在随机化中,使用唯一约束可以生成变量集的唯一值或数组的唯一元素。这里着重解释一下变量集:是同一类型随机变量的集合。 通过unique约束我们可以完成以下任务: …

免费搭建网站(手把手教学) — freehost免费主机体验

相信不少人都想制作一个属于自己的网站,其实并不是很难,即使没有基础也是能够完成的,而这些免费的主机就是小白练手的最佳途径了。免费主机有点就是免费,缺点也是有一堆,如果自己玩玩小范围提供网页服务足够&#xff0…

Virtualbox下CentOS安装k8s

1.系统配置 硬件配置基本要求 资源大小硬盘> 20Gcpu> 2核内存> 2G 本教程配置 主机名IP配置master192.168.10.1553核2G20Gworker1192.168.10.2343核2G20Gworker2192.168.10.1473核2G20G 2.安装必要软件 所有机器都要执行 yum 更新 sudo yum update -y bash-completion…

android复制与粘贴

官网关于复制的教程:https://developer.android.google.cn/guide/topics/text/copy-paste?hlzh-cn 关于Android 13模拟器无法运行可查看这篇文章:https://blog.csdn.net/android_cai_niao/article/details/131422541 界面UI如下: 界面中有…

事务的传播

七种传播机制支持当前事务不支持当前事务嵌套事务 七种传播机制 事务传播机制:解决一个事务在多个方法传递的问题 传播机制有以下7种 REQUIRED (默认):如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新事务…

DEBUG 系列二:Configure Debugger Layer

还拿之前的例子: https://mp.weixin.qq.com/s/a0Ia2wzFPGWjN988uutg7Q 前台操作dump了 然后debug分析原因的时候发现是这里的问题 进这标准函数看看 里面用到的是全局变量 go_hugm 说明这个函数使用时还有一系列配套的其他函数,都应该在它所对应的函数组…

[RSIC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

wpf 3d立方体上的按钮

新建一个WPF工程&#xff1b; 引入3D Tools&#xff1b;前面已经说了&#xff0c;引入之后&#xff0c;不用写代码即可实现3D物体的鼠标操作&#xff1b; xaml代码如下&#xff1b; <Window x:Class"thrbtn.MainWindow"xmlns"http://schemas.microsoft.com…

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测

时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测 目录 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络股票价格预测效果一览基本介绍研究过程程序设计参考资料效果一览 基本介绍 时序预测 | MATLAB实现BO-LSTM贝叶斯优化长短期记忆神经网络…

3.原理图设计的快捷键和方法

3.原理图设计的快捷键和方法 一、使用建议 1.1 Altium designer使用建议 善用help&#xff0c;窗口右上角❓可用于显示提示&#xff1b;多看Knowledge Centor 添加元件、布局布线的注意要点 布局时&#xff1a;1、优先考虑重要接口、传感器的布局&#xff1b;2、电阻电容的…

论文笔记 CPU Accounting for Multicore Processors

Abstract 确定了对CPU utilization的不准确测量是如何影响OS的几个关键方面的这篇文章提出来了一个比CPU utilization更准确的性能评估指标 In this paper, we identify how an inaccurate measurement of the CPU utilization affects several key aspects of the system suc…