docker学习

1、Dockers的基本组成

1.1镜像(image):

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,
tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个股镜像可以创造多个容器(最终服务运行或者项目运行就是在容器中的)。

1.2容器(container):

docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。启动,停止,删除,基本命令!目前就可以把这个容器理解为就是一个简易的linux系统

1.3仓库(repository):

仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
Docker Hun(默认是国外的)
阿里云…都有容器容器服务器(配置镜像加速!)

1.4hello-world的运行原理

在这里插入图片描述

2、底层原理

2.1D ocker是怎么工作的?

Docker是一个c/s结构的系统,docker的守护进程运行在主机上,通过Socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会执行这个命令!
在这里插入图片描述

2.2docker为什么比VM快

1、docker有着比虚拟机更少的抽象层。
2、docker利用的是宿主机的内核,VM需要Guest OS
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS ,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!

3、Docker的常用命令

3.1帮助命令

docker version #显示dockers的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker --help #帮助命令
帮助文档的地址:https://docs.docker.com/reference/

3.2镜像命令

docker images #查看所有本地的主机上的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/getting-started latest 083d7564d904 5 weeks ago 28MB
hello-world latest d1165f221234 4 months ago 13.3kB
hub.c.163.com/library/nginx latest 46102226f2fd 4 years ago 109MB
解释:
REPOSITORY :镜像的仓库源
TAG : 镜像的标签
IMAGE ID : 镜像的ID
CREATED: 镜像的创建时间
SIZE: 镜像的大小
可选项
-a, --all 列出所有的镜像
-q, --quiet 只显示镜像的id
docker search 搜索镜像

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11156 [OK]
mariadb MariaDB Server is a high performing open sou… 4234 [OK]
可选项,通过收藏来过滤
–filter=STARS=3000 搜索出来的镜像就是STARS大于3000的
在这里插入图片描述
在这里插入图片描述

3.3容器命令

说明:我们有了镜像才能创建容器。
新建容器并启动
docker run [可选参数] image
#参数说明
–name =“Name” 容器名字 tomcat01…,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p 主机端口:容器端口 (常用)
-p 容器端口
容器端口
-p 随机指定端口
#测试,启动并进入容器
PS D:> docker run -it centos bash 进入容器
[root@2bdc695ee3ff /]#
ls 查看
从容器中退回主机
exit 退出
dockers ps 列出所有的运行的容器
-a是列出所有的正在运行的容器+带出历史运行过的容器
-n=? 显示最近创建的容器
-q 只显示容器的编号
退出容器
exit #容器停止并退出
ctrl +P+Q #容器不停止退出
删除容器
docker rm 容器id 删除指定容器,不能删除正在运行的容器,如果强制删除 rm -f
docker rm -f $(docker ps -aq)容器id 删除所有的容器
docker ps -a -q|xargs docker rm 删除所有容器
启动和停止容器的操作
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止当前正在运行的容器
docker kill 容器id 强制停止当前容器

3.4常用的其他命令

后台启动容器
通过docker run -d 镜像名
停止了
docker 容器使用的是后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
nginx ,容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了
查看日志在这里插入图片描述
查看容器中进程信息 ps
docker top 容器id

查看镜像元数据
docker inspect 容器id

方法1:
进入当前正在运行的容器
docker exec -it 容器id bashShell
方法2:
docker attach 容器名

docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径
docker stats//查看cpu的状态

4镜像原理之分层理解

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!
这一层就是容器层,容器之下的都叫镜像层
在这里插入图片描述

5commit镜像

docker commit 提交容器成为一个新的副本
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标就行吗名:[TAG]
实战测试
启动一个默认的tomcat
在这里插入图片描述

6容器数据卷

将应用和环境打包成一个镜像!
数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化
MySQL数据可以存储在本地!
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术!目录的挂载,将我们容器的目录,挂载到Linux上面!
总结:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷:(可以理解为双向绑定)
方式一:直接使用命令来挂载 -v
在这里插入图片描述可以通过docker inspect 容器id来查看容器信息
停止容器,在宿主机上修改文件再启动容器,容器内的数据依旧是同步的
好处:我们以后修改只需要在本地修改即可,容器内会自动同步

安装MySQL

MySQL的数据持久化问题
docker run -d -p 3310:3306 -v D://dz/mysql/conf:/etc/mysql/conf.d -v D://dz/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
启动:
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
–name 容器名称

具名和匿名挂载
匿名挂载
-v 容器内路径
docker run -d -p --name nginx -v /ect/nginx nginx
docker volume ls查看所有卷情况
没有起名,就是匿名挂载,我们在-v只写了容器内的路径,没有写容器外的路径
-P是随机映射窗口
具名挂载
通过-v 卷名:容器内路径
查看卷:docker inspect
如何确定是具名挂载还是匿名挂载,还说指定路径挂载!
-v 容器内路径 匿名挂载
-v 卷名:容器内路径 具名挂载
-v /宿主机路径:容器内路径 指定路径挂载

拓展:
通过-v 容器内路径,ro rw 改变读写权限
ro readonly 只读
rw readwrite 可读可写
一旦设置了容器权限,容器对我们挂载翠路的内容就有了限定
在这里插入图片描述
ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

7初始Dockerfile

Dockerfile 就是用来弓箭docker 镜像的构建文件!命令脚本!
方式2:通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层
创建一个dockerfile文件,名字可以随机 建议Dockerfile
文件中的内容 指令(大写)参数
启动自己的容器
Dockerfile的指令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Docker Hub中99%镜像都是从这个基础镜像过来的FROM scratch

实战

1、编写dockerfile的文件
在这里插入图片描述
2、通过文件构建镜像
写一个Dockerfile文件,
Dockerfile中很多命令都十分的相似,我们需要了解他们的区别

准备环境
编写Dockerfile的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值