Docker 镜像

2023年 9月 7日 91.5k 0

四、Docker 镜像

1、安装nginx

#示例
[root@localhost ~]# docker run -d --name nginx01 -p 3344:80 nginx
8c45d1f247c518d0281815b9f9d133c0a2eb1db16549a35fa7c30531c668e249
[root@localhost ~]# crul 192.168.100.3:3344
-bash: crul: command not found
[root@localhost ~]# curl 192.168.100.3:3344



Welcome to nginx!

html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }



Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.

For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.

Thank you for using nginx.



#进入容器
[root@localhost ~]# docker exec -it nginx01 /bin/bash
root@8c45d1f247c5:/# cd /etc/nginx
root@8c45d1f247c5:/etc/nginx# ls
conf.d	fastcgi_params	mime.types  modules  nginx.conf  scgi_params  uwsgi_params

2、安装tomcat

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

#启动
[root@localhost ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
#测试没有问题

#进入容器
[root@localhost ~]# docker exec -it tomcat01 /bin/bash

#发现问题:1、liunx命令少了 2、没有webapps。 阿里云镜像原因,默认是最小的镜像,所有不必要的都剔除掉
#保证最小可运行的环境

3、部署es+kibana

#es 暴露的端口很多
#es 十分耗内存
#es 的数据一般需要放置到安装目录!挂载
#安装
[root@localhost ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-none" elasticsearch:7.6.2

#查看CPU服务器
docker stats
#增加内存限制,修改配置文件 -e修改配置文件
[root@localhost ~]# docker run -d --name elasticsearch04 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-none" -e ES_JAVA_OPTS="-Xms64m -Xmx128m"  elasticsearch:7.6.2

4、可视化

①portainer
docker run -d -p 8088:9000 --restart=always -v /var/run/docker:sock:/var/run/docker.sock --privileged=true portainer/portainer

②Rancher(CI/CD再用)

什么是portainer?
Docker图形化界面管理工具!提供一个后台面板供我们操作
测试访问:外网:8080

5、Dokcer镜像讲解

①镜像是什么

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

所有的应用,直接打包docker镜像,就可以直接跑起来!

②docker镜像加载原理

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

③dacker镜像加载原理

Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构。 镜像实际是由多层文件系统联合组成,这种层级的文件系统UnionFS,在内部又分为2部分:

1) bootfs(boot file system):docker镜像的最底层是bootfs,主要包含bootloader(加载器)和kernel(内核)。bootloader主要是引导加载kernel,linux刚启动时会加载bootfs文件系统。当bootfs加载完成后,整个内核就在内存中了,此时内存的使用权已由bootfs转交给了内核,此时系统也会卸载bootfs。
这里的加载,可以理解为,我们windows电脑开机时候,从黑屏到进入操作系统的过程。

2)rootfs(root file system):在bootfs之上,包含的就是典型linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。不同的 Linux 发行版, boots 基本是一致的, rootfs 会有差別。

image.png

以图为例,从左到右,分为3个过程:
1、docker镜像的最底层是bootfs,然后是一个Base Image的基础镜像,这个基础镜像是Centos。

2、执行安装mysql操作,那么Docker会在Centos基础镜像之上又加了一层mysql镜像。

3、执行安装tomcat,那么在之前的mysql镜像上在继续加一层tomcat镜像。
就像叠积目一样,一层一层往上。也说明了docker的镜像实际上是由层一层的文件系统组成的。对于不同的的linux发行版本,bootfs基本是一致的,rootfs会有差别,所以不同的发行版可以共用bootfs。

另外,平时我们安装进虚拟机的CentOS都是好几个G,为什么Docker这里才200M?
因为底层直接用主机的内核,自己只需要提供rootfs就行了,所以rootfs可以很小,只需要包含最基本的命令、工具和程序库即可。这样一来,启动速度也快了,因为最浪费时间的引导加载过程没了。

特点

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部
这一层就是我们所说的容器层,容器之下都叫镜像层

如何提交一个自己的镜像

docker commit 提交一个容器成为一个新的副本
#命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

测试

#启动一个默认的tomcat

#发现默认的tomcat是没有webapps应用,镜像原因

#提交
[root@localhost ~]# docker commit -a="yanghang" -m="add webapps app" cc37cc34fd1d  tomcat02:1.0
sha256:4b39229cea77468866301f5307c649e99c8d764ada69818297cff1576ee98354
[root@localhost ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
tomcat02              1.0       4b39229cea77   6 seconds ago   430MB
redis                 latest    39ac5829bade   5 hours ago     138MB
tomcat                latest    d0ed0a728666   5 days ago      426MB
hello-world           latest    9c7a54a9a43c   4 months ago    13.3kB
portainer/portainer   latest    5f11582196a4   9 months ago    287MB
nginx                 latest    605c77e624dd   20 months ago   141MB
elasticsearch         7.6.2     f29a1ee41030   3 years ago     791MB

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论