2022-9-25 docker基础篇学习笔记

路漫漫其修远兮,吾将上下而求索

1.是什么?

1.1 为什么会有dcker出现?

原因:环境不一致导致环境配置相当麻烦,费时费力! —平滑移植
达到应用程序跨平台见得无缝接轨运作。
2022-9-25 docker基础篇学习笔记_第1张图片
举例:
2022-9-25 docker基础篇学习笔记_第2张图片

1.2 dcker理念

一次镜像,处处运行!
将应用打成镜像,将其运行在docker容器上面。
在这里插入图片描述

2022-9-25 docker基础篇学习笔记_第3张图片

1.3 容器和虚拟机的比较

2022-9-25 docker基础篇学习笔记_第4张图片
2022-9-25 docker基础篇学习笔记_第5张图片
在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第6张图片
docker优势:
2022-9-25 docker基础篇学习笔记_第7张图片
docker三要素:
2022-9-25 docker基础篇学习笔记_第8张图片
2022-9-25 docker基础篇学习笔记_第9张图片
2022-9-25 docker基础篇学习笔记_第10张图片
2022-9-25 docker基础篇学习笔记_第11张图片
总结:
2022-9-25 docker基础篇学习笔记_第12张图片
2022-9-25 docker基础篇学习笔记_第13张图片

1.4 docker安装

1.确定版本是否合规
2.卸载旧版本
2022-9-25 docker基础篇学习笔记_第14张图片
3.yum安装gcc相关

yum -y install gcc
yum -y install gcc-c++

4.安装需要的软件包
官网要求:
命令:yum install -y yum-utils
2022-9-25 docker基础篇学习笔记_第15张图片
5.设置stable镜像仓库
如果按照官网 由于外网会出现超时等问题、基本用不了:
在这里插入图片描述
优选阿里云仓库:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6.更新yum软件包索引(重建yum索引,提高yum下载速度)

yum makecache fast

7.安装docker ce 官网有
在这里插入图片描述

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

8.启动docker
2022-9-25 docker基础篇学习笔记_第16张图片

systemctl start docker

9.测试
查看客户端和服务端是否都成功
2022-9-25 docker基础篇学习笔记_第17张图片
在这里插入图片描述
10.卸载
2022-9-25 docker基础篇学习笔记_第18张图片

1.5 阿里云镜像加速

2022-9-25 docker基础篇学习笔记_第19张图片
阿里云支付宝账号登录:
2022-9-25 docker基础篇学习笔记_第20张图片
配置并启动:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://lwn97uve.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.6 docker run做了什么

2022-9-25 docker基础篇学习笔记_第21张图片
先在本地找如果有直接运行,没有远程hub拉取,拉取到之后再运行;
2022-9-25 docker基础篇学习笔记_第22张图片
底层原理:docker为什么会比vm快?
2022-9-25 docker基础篇学习笔记_第23张图片
2022-9-25 docker基础篇学习笔记_第24张图片

2 docker常用命令:

1.帮助启动类命令:

2022-9-25 docker基础篇学习笔记_第25张图片

2.镜像命令:

2.1列出本地镜像:

在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第26张图片

2.2:搜索某个镜像是否在远程hub上:
docker search xxx

选官方认证即可
2022-9-25 docker基础篇学习笔记_第27张图片

2.3:拉取镜像(没有写版本号默认为最新版 latest)
docker  pull  xxx:版本号
eg:docker pull redis:6.0.8
2.4查看镜像/容器/数据卷所占的空间
docker system df 

在这里插入图片描述

2.5 删除镜像
docker rmi hello-world
强制删除  docker rmi -f hello-world

2022-9-25 docker基础篇学习笔记_第28张图片

2.6 面试题:什么是虚悬镜像?

在这里插入图片描述
例如:
在这里插入图片描述
这种镜像建议删除,一般没什么用,可能是误下载或者其他来源,不用!

3 容器命令

3.1 有镜像才能创建容器,这是根本前提!

新建+启动容器

docker run 

在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第29张图片

docker run -it --name=myu1 -it ubuntu /bin/bash
说明:-it 表示进入ubuntu后可以进行交互,继续去操作运行的ubuntu(进行命令操作)

2022-9-25 docker基础篇学习笔记_第30张图片

3.2 列出所有正在运行的镜像
docker ps [OPTIONS]

在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第31张图片

3.3 退出容器

在这里插入图片描述

3.4 启动、重启、停止、强制停止

2022-9-25 docker基础篇学习笔记_第32张图片
在这里插入图片描述
在这里插入图片描述

3.5 重要

守护式交互:

docker run -d ubuntu

2022-9-25 docker基础篇学习笔记_第33张图片
启动守护式进行:选后天守护式启动!
在这里插入图片描述

3.6 查看容器日志
docker logs ID

在这里插入图片描述

3.7 重新进入已经打开又退出的容器:

在这里插入图片描述
在这里插入图片描述
总结:工作开发中一般使用exec的,这样就不会出现exit退出后导致容器的停止!

3.8 进入服务

2022-9-25 docker基础篇学习笔记_第34张图片

3.9 从容器内拷贝文件到主机上(实现备份功能 )

在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第35张图片

3.10 导出和导出容器

2022-9-25 docker基础篇学习笔记_第36张图片

4 镜像的分层概念

4.1 镜像分层(UnionFS(联合文件系统))

2022-9-25 docker基础篇学习笔记_第37张图片
在这里插入图片描述

4.2 docker加载原理

2022-9-25 docker基础篇学习笔记_第38张图片
2022-9-25 docker基础篇学习笔记_第39张图片

4.3 为什么要用这种分层呢

2022-9-25 docker基础篇学习笔记_第40张图片

重点:

2022-9-25 docker基础篇学习笔记_第41张图片
2022-9-25 docker基础篇学习笔记_第42张图片

4.4 docker分层添加 功能并使之成为一个新的镜像操作

在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第43张图片
2022-9-25 docker基础篇学习笔记_第44张图片
2022-9-25 docker基础篇学习笔记_第45张图片
对比:
2022-9-25 docker基础篇学习笔记_第46张图片
小总结:
2022-9-25 docker基础篇学习笔记_第47张图片

4.5 本地镜像发布到阿里云

发布流程:
2022-9-25 docker基础篇学习笔记_第48张图片

2022-9-25 docker基础篇学习笔记_第49张图片
登录阿里云创建自己的命名空间和仓库之后下载推送镜像
在这里插入图片描述

$ docker login --username=hei0078 registry.cn-hangzhou.aliyuncs.com

2022-9-25 docker基础篇学习笔记_第50张图片

$ docker login --username=hei0078 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xiaolin2580/myubuntu:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/xiaolin2580/myubuntu:[镜像版本号]

成功后验证进行拉取:

$ docker pull registry.cn-hangzhou.aliyuncs.com/xiaolin2580/myubuntu:[镜像版本号]
4.6 本地镜像发布到私有库

在这里插入图片描述
过程:
2022-9-25 docker基础篇学习笔记_第51张图片
1.
2022-9-25 docker基础篇学习笔记_第52张图片
2.
2022-9-25 docker基础篇学习笔记_第53张图片
3.
2022-9-25 docker基础篇学习笔记_第54张图片
2022-9-25 docker基础篇学习笔记_第55张图片

5 docker容器数据卷

坑:容器卷记得加入

--privileged=true

2022-9-25 docker基础篇学习笔记_第56张图片
2022-9-25 docker基础篇学习笔记_第57张图片

5.1 容器数据卷是什么?能干什么?

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

2022-9-25 docker基础篇学习笔记_第58张图片
2022-9-25 docker基础篇学习笔记_第59张图片

5.2 数据卷案例

宿主vs容器之间映射添加容器卷
在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第60张图片
2022-9-25 docker基础篇学习笔记_第61张图片
2022-9-25 docker基础篇学习笔记_第62张图片

5.3 读写规则映射添加说明

做数据卷案例时如果没有写的话默认为 (可读可写)rw
在这里插入图片描述
容器内部(只限制容器,不限制主机)只读权限:
在这里插入图片描述
2022-9-25 docker基础篇学习笔记_第63张图片
容器内部限制的目录下只能读,不能写,创建东西
2022-9-25 docker基础篇学习笔记_第64张图片

5.4 卷的继承和共享

2022-9-25 docker基础篇学习笔记_第65张图片
继承语句:
在这里插入图片描述
说明:父类关系 u2继承u1 host为宿主主机 u2---->u1---->host
问题:当u1挂掉的时候,host添加数据,u2还能同步更新吗?
回答:会同步更新到,因为u2继承的是u1挂载的路径的规则,它们之间是相互独立的,所以不相干;u1启动后,host和u2之间同步的数据还是会同步到的!

6 docker容器常见安装

2022-9-25 docker基础篇学习笔记_第66张图片
2022-9-25 docker基础篇学习笔记_第67张图片
2022-9-25 docker基础篇学习笔记_第68张图片

安装tomcat实例:

2022-9-25 docker基础篇学习笔记_第69张图片
-P案例:
2022-9-25 docker基础篇学习笔记_第70张图片
坑:访问时为空的问题
2022-9-25 docker基础篇学习笔记_第71张图片
命令:

删除webapps,因为它是个空文件
rm webapps
将真正有文件的目录修改为webapps
mv webapps.dist  webapps

解决方案二: 不用最新版的tomcat (使用tomcat8)
在这里插入图片描述
mysql安装运行 运行命令可直接在官网进行粘贴

简单安装mysql案例:(直接安装,然后进入mysql进行命令创建库和表)

2022-9-25 docker基础篇学习笔记_第72张图片

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

2022-9-25 docker基础篇学习笔记_第73张图片
插入中文乱码报错:
在这里插入图片描述

2022-9-25 docker基础篇学习笔记_第74张图片
2022-9-25 docker基础篇学习笔记_第75张图片
简单版删除容器后数据也就丢失了,那么如何备份让我们不去删容器跑路,请看下面实战版!!!!!!!!!!!!

实战版安装mysql案例:

2022-9-25 docker基础篇学习笔记_第76张图片
新建容器实例:

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容器实例解决中文乱码
2022-9-25 docker基础篇学习笔记_第77张图片
插入mycof文件的内容:

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

2022-9-25 docker基础篇学习笔记_第78张图片
2022-9-25 docker基础篇学习笔记_第79张图片
回到简单安装时的问题:将容器删除后,mysql数据丢失了怎么办?
回答:按照实战启动mysql容器后,数据卷也相应配置挂在在宿主机上面,产生对应的备份数据,当容器删除后,我们将容器按照之前启动的方式启动,也是数据卷挂在相应的目录,那么容器启动后数据就会直接备份回来,开启即有数据!!!!!

安装redis

2022-9-25 docker基础篇学习笔记_第80张图片

2022-9-25 docker基础篇学习笔记_第81张图片
2022-9-25 docker基础篇学习笔记_第82张图片
2022-9-25 docker基础篇学习笔记_第83张图片
2022-9-25 docker基础篇学习笔记_第84张图片
2022-9-25 docker基础篇学习笔记_第85张图片

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
eg:

docker exec -it myr3 /bin/bash
redis-cli

注意:在宿主机修改配置文件后一定要重启容器,让容器加载到宿主机的配置,这样就ok了!!!!

nginx的安装见高级篇详细讲解:

你可能感兴趣的:(docker,学习,运维)