Docker入门学习(四)

·  阅读 44
Docker入门学习(四)

这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战

Docker入门学习(1)~概念原理

Docker入门学习(2)~命令学习

Docker入门学习(3)~常用命令

1, Docker安装Nginx

# 1, 第一步搜索镜像
docker search nginx

# 2, 下载镜像
docker pull nginx

# 下载成功之后,查看镜像
docker images

# 后台启动nginx
docker run -d --name nginx01 -p 9527:80 nginx

-d: 后台运行
--name 给容器命名
-p  宿主机端口, 容器内部端口

# 查看当前运行的容器
docker ps

# 启动之后,本机自测NGXIN
curl localhost:9527

# 进入到ngxin01里面
docker exec -it nginx01 /bin/bash

# 查看ngxin
whereis nginx
复制代码

1636902300100.png

2, Docker 安装一个tomcat

# 官方使用方法
 docker run -it --rm tomcat:9.0
我们之前的启动都是后台,停止了容器之后,容器还是可以查到的, docker run -it --rm 一般用来测试,用完删除

## 官方使用不推荐,常用的方法
docker pull tomcat

# 下载启动
docker run -d --name tomcat01 -p 3355:8080 tomcat

# 测试访问

# 进入容器
docker exec -it tomcat01 /bin/bash
复制代码

3, 可视化工具

1, portainer

Docker 图形化界面管理工具,提供一个后台面板供我们操作

# 安装 portainer
docker run -d -p 8088:9000 \
  --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
  
复制代码

外围访问地址: http://182.254.211.121:8088/

4, Docker镜像讲解

镜像是什么?

​ 镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需要的所有内容,包括代码,运行时库,环境变量和配置文件。

1, UnionFS(联合文件系统)

UnionFS(联合文件系统):Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,Union文件系统是Dokcer镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统加载起来,这样最终的文件系统会包含所有的底层文件和目录

2, Docker镜像加载原理?

​ Docker的镜像实际上是由一层一层的文件系统构成,这种层级的文件系统UnionFS。主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的linux/unix系统是一样的,包含boot加载器内核。当boot加载完之后整个内核就都在内存中了,此时内存的使用权已经由bootfs交给内核了,此时系统也会卸载bootfs

平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M

对以一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就行,因为底层直接用host和kernel,自己只需要提供rootfs就行。由此可见对于不同的Linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

3, 分层的镜像

​ 以pull为例,在下载的过程中我么可以看到docker的镜像好像是在一层一层的下载

1636987703892.png

4, 为什么Docker镜像要采用这种分层的结构?

​ 最大一个好处就是——共享资源

比如:有多个镜像都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,同时内存中也需要加载一份base镜像,就可以为所有服务器服务了。而且镜像的每一层都可以被共享。

5, Docker特点

Docker镜像都是只读的

当容器启动时,一个新的可写层被加载到镜像的顶部。

这一层通常被称作“容器层”,“容器层”之下都叫“镜像层”
复制代码

6, 如何提交一个自己的镜像?

# commit 镜像
docker commit 提交容器成为一个新的副本

docker commit -m=“提交的描述信息” -a="作者" 容器ID  目标镜像名:[TAG]
复制代码

举例:tomcat

(1) 启动Tomcat

1636988491843.png

(2) 查看运行的容器,并进入Tomcat

1636988753782.png

(3) 进入Tomcat之后, copy webapps.dist里面的所有内容到webapps里面,因为官方的webapps里面什么文件都没有

1636988950271.png

(4) 成功启动Tomcat之后,感觉这个镜像被修改之后,很好,可以备注提交一下

1636989323110.png

总结上面的步骤:

# 1, 启动一个默认的Tomcat

# 2, 发现这个默认的tomcat没有webapps应用,官方默认镜像原因,

# 3,把自己文件拷贝进入webpass文件

# 4, 将我们操作过的容器通过commit 提交为一个镜像,方便以后使用
复制代码
分类:
前端
标签: