跟着B站狂神学习的笔记,若有不足请多担待!!!
1.卸载旧版
去查官网吧
Docker是一个Client-Server结构的体系,Docker的守护进程运行在主机上。通过Socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会去执行这个命令!
帮助命令
帮助文档的地址:https://docs.docker.com/engine/reference
镜像命令
- docker images #查看本主机的所有镜像
- docker search #搜索镜像
- docker pull 镜像名 #下载镜像
- docker rmi 删除镜像
容器命令
#有了镜像才可以创建容器
1.运行容器命令
示例1:进入centos容器,以交互模式进入
2.退出容器命令
3.列出运行过的容器命令
4.容器删除命令
5.启动和停止容器命令
常用其他命令
1.容器日志的查看
常用命令
NOTE
2.查看容器进程信息
3.查看容器的元数据
4.进入当前正在运行的容器
5.拷贝容器上的文件到本地
小结
作业一:安装Nginx
镜像是什么
镜像(image)是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来!
如何得到镜像:
- 从远程仓库下载
- 朋友拷贝给你
- 自己制作一个镜像DockerFile
Docker镜像加载原理
UnionFS(联合文件系统)
Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。
**特性:**一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统包含所有底层的文件和目录
打包自己的镜像,将镜像层与容器层打包成新的镜像(image)
命令
什么是容器数据卷
为了解决什么问题?
如果数据都在容器中,那么容器被删除,数据也会跟着被删除! 需求:数据可以持久化
例如:MySQL容器被删除,数据库数据也会丢失!因此,希望 Mysql数据可以存储到本地!
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术!目录的挂载,将容器与本地打通数据共享的通道!
一句话:容器中数据的持久化和同步操作!
使用数据卷
方法一:直接使用命令来挂载 -v
查看是否挂载成功
在宿主机上创建文件
Note
具名和匿名挂载
匿名挂载
具名挂载
所有docker容器内的卷,没有指定目录的情况下都是在
匿名挂载具名挂载区别
扩展
数据卷容器
容器之间通过挂载卷实现数据共享,数据共享方式为值拷贝。一个容器坏了不会影响其他挂载的容器中的数据
DockerFile介绍
dockerfile是用来构建docker镜像的文件!命令参数脚本
构建步骤
1.编写一个dockerfile文件
2.docker build 构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像
DockerFile构建过程
基础知识
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序执行
- #表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交
DockerFile的指令
实战测试
构建自己的centos
CMD和ENTRYPOINT的区别
https://blog.csdn.net/u010900754/article/details/78526443
发布自己的镜像
DockerHub
1.地址 https://hub.docker.com/注册自己的账号!
2.确定这个账号可以登录
3.在服务器上提交自己的镜像
4.登录完毕后就可以提交镜像了,就是一步docker push
小结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzuwIbrj-1647163637162)(F:my_notebookjava_seimageimage-20220312204644430.png)]
理解Docker0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5f0PwZMF-1647163637163)(F:my_notebookjava_seimageimage-20220312210452465.png)]
容器互联–link(不建议使用)
问题:能否通过容器名直接进行网络访问
探究:docker0 中的network信息
自定义网络
查看docker网络信息
网络模式
bridge:桥接docker(默认,自身搭建网络也使用bridge模式)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通
创建网络
结论
自定义的网络可以通过容器名直接ping通,而默认的docker0不支持
自定义的网络有助于进行容器间区域隔离
官方解释
大意:用户自定义的网卡可以在容器之间提供自动的 DNS 解析
网络打通
实验