如何做销售网站,东莞平面设计公司有哪些,wordpress添加 logo,深圳平面设计公司招聘文章目录 pstreedocker 数据类型数据卷data volumedocker容器之间互联网络 设置docker启动时候的内网ip段docker registry 下载镜像 pstree
pstree -p 1
pstree 是一个 Linux/Unix 命令#xff0c;用于显示进程之间的父子关系。-p 选项会显示每个进程的进程 ID#xff08;… 文章目录 pstreedocker 数据类型数据卷data volumedocker容器之间互联网络 设置docker启动时候的内网ip段docker registry 下载镜像 pstree
pstree -p 1
pstree 是一个 Linux/Unix 命令用于显示进程之间的父子关系。-p 选项会显示每个进程的进程 IDPID。而 1 参数则指定了要显示的起始进程的 PID这里是 init 进程的 PID。因此pstree -p 1 命令会显示 init 进程及其所有子孙进程的父子关系以树形结构展示。每个进程都会显示其进程 ID 和父进程的进程 ID方便查看进程之间的继承关系。需要注意的是init 进程是系统中所有进程的祖先进程它的 PID 通常是 1。pstree -p 1 命令可以帮助我们查看整个系统中的进程层次结构并了解进程之间的组织和关系。docker 数据类型
查看指定pid 容器的信息
docker inspect asGraphDriver: {Data: {LowerDir: /var/lib/docker/overlay2/e783e416b5df47c24aea91ea4372ace6a2c3bbfc94ba4783d9421fff42354e21-init/diff:/var/lib/docker/overlay2/nnooo2pre806vlq03f50mvw8y/diff:/var/lib/docker/overlay2/rnj2djgufta72oa9ni5ez3pwg/diff:/var/lib/docker/overlay2/jo2ag7rtj91qkido133hul817/diff:/var/lib/docker/overlay2/f4hzthzfuxulwzzj59jsm4vbv/diff:/var/lib/docker/overlay2/0ihwbu1oui6budb8e02hpl1zs/diff:/var/lib/docker/overlay2/qnk26pqe1l710m6t14uenyra9/diff:/var/lib/docker/overlay2/2c57547f862fdcd06aa0f4b926b08b6579258a03ca04eb18864d2c68741dcbbd/diff,MergedDir: /var/lib/docker/overlay2/e783e416b5df47c24aea91ea4372ace6a2c3bbfc94ba4783d9421fff42354e21/merged,UpperDir: /var/lib/docker/overlay2/e783e416b5df47c24aea91ea4372ace6a2c3bbfc94ba4783d9421fff42354e21/diff,WorkDir: /var/lib/docker/overlay2/e783e416b5df47c24aea91ea4372ace6a2c3bbfc94ba4783d9421fff42354e21/work这些字段是 Docker 的 OverlayFS 存储驱动在容器运行时使用的目录结构。下面是对每个字段的解释LowerDir存储镜像层的目录路径。它包含了多个目录每个目录对应一个镜像层。层按顺序从左到右堆叠最左边的是基础镜像层右边的是上层镜像层。在容器中这些层被合并并以只读方式挂载。
MergedDir合并后的镜像层目录路径。该目录是 LowerDir 中的所有镜像层合并后的结果。容器中的文件系统通过将这个目录以可写方式挂载来实现对文件的修改和更新。
UpperDir容器的可写层目录路径。该目录包含了对镜像层的修改包括添加、删除和修改文件等操作。它会覆盖 MergedDir 中相同路径的文件实现对文件的修改。
WorkDir工作目录路径。该目录用于 OverlayFS 内部的工作操作例如在容器中创建或修改文件时的临时操作。
这些字段组成了 Docker 容器的文件系统层次结构通过 OverlayFS 技术实现了镜像的分层管理和容器的可写层隔离。这样可以节省存储空间并且多个容器可以共享相同的基础镜像层提高效率。数据卷data volume
数据卷实际上就是宿主机上的目录或者是文件可以被直接 mount 到容器当中
使用。
实际生产环境中需要针对不同类型的服务、不同类型的数据存储要求做相应的
规划最终保证服务的可扩展性、稳定性以及数据的安全性创建容器
docker run -d --name web1 -v /data/testapp/:/apps/tomcat/webapps/testapp -p 8080:8080 tomcat
docker run -d --name web2 -v /data/testapp/:/apps/tomcat/webapps/testapp -p 8082:8080 tomcat我们在 /data/testapp 目录下创建内容
mkdir /data/testapp –p
echo testapp page /data/testapp/index.html
#创建容器的时候指定参数-v可以删除/var/lib/docker/containers/的容器数据
目录但是不会删除数据卷的内容[rootlight-test data[]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ea4a7939c1c tomcat catalina.sh run 3 minutes ago Up 3 minutes 0.0.0.0:8082-8080/tcp, :::8082-8080/tcp web2
b7d9db2f962b tomcat catalina.sh run 4 minutes ago Up 4 minutes 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp web1
9bd66b56259a nginx:v1 /apps/nginx/sbin/ng… 17 hours ago Up 17 hours 443/tcp, 0.0.0.0:8888-80/tcp, :::8888-80/tcp bold_varahamihira
bdf5d162155e mysql docker-entrypoint.s… 6 weeks ago Up 6 weeks 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp mysql
2a296128cadc jenkins/jenkins:lts-jdk11 /usr/bin/tini -- /u… 4 months ago Up 4 months 50000/tcp, 0.0.0.0:8001-8080/tcp, :::8001-8080/tcp jenkins
[rootlight-test data[]# docker rm -f web1
web1
[rootlight-test data[]# docker rm -fv web2
web2
[rootlight-test data[]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9bd66b56259a nginx:v1 /apps/nginx/sbin/ng… 17 hours ago Up 17 hours 443/tcp, 0.0.0.0:8888-80/tcp, :::8888-80/tcp bold_varahamihira
bdf5d162155e mysql docker-entrypoint.s… 6 weeks ago Up 6 weeks 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp mysql
2a296128cadc jenkins/jenkins:lts-jdk11 /usr/bin/tini -- /u… 4 months ago Up 4 months 50000/tcp, 0.0.0.0:8001-8080/tcp, :::8001-8080/tcp jenkins验证结果
[rootlight-test data[]# cat testapp/index.html
testapp page
123数据卷特点
1、数据卷是宿主机的目录或者文件并且可以在多个容器之间共同使用。
2、在宿主机对数据卷更改数据后会在所有容器里面会立即更新。
3、数据卷的数据可以持久保存即使删除使用使用该容器卷的容器也不影响。
4、在容器里面的写入数据不会影响到镜像本身。1、日志输出
2、静态 web 页面
3、应用配置文件
4、多容器间目录或文件共享docker容器之间互联
即在同一个宿主机上的容器之间可以通过自定义的容器名称相互访问比如一
个业务前端静态页面是使用 nginx动态页面使用的是 tomcat由于容器在启动
的时候其内部 IP 地址是 DHCP 随机分配的所以如果通过内部访问的话自定
义名称是相对比较固定的因此比较适用于此场景继续创建2个容器id
docker run -d --name web3 -v /data/testapp/:/apps/tomcat/webapps/testapp -p 8080:80 nginx:v1
docker run -d --name web4 -v /data/testapp/:/apps/tomcat/webapps/testapp -p 8082:80 nginx:v1第一种是修改容器里面的/etc/hosts但是缺点是不易维护
第二种
docker run -d --name 新容器名称 --link 目标容器名称:自定义的名称 -p
本地端口:容器端口 镜像名称 shell 命[rootlight-test data[]# docker run -d --name web3 --link web1:web1_link -p 8082:80 nginx:v1
dd24d64aa8836d33a982b39a734e419e8503053b972111d18ad02963e301e621
[rootlight-test data[]# docker ^C
[rootlight-test data[]# docker run -d --name web2 -p 8081:80 nginx:v1
[rootlight-test data[]# docker run -d --name web1 -p 8080:80 nginx:v1演示效果
[rootlight-test data[]# docker exec -it web3 bash
[rootdd24d64aa883 /]# cat /etc/host
host.conf hostname hosts hosts.allow hosts.deny
[rootdd24d64aa883 /]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 web1_link 3e9678eee190 web1
172.17.0.7 dd24d64aa883
[rootdd24d64aa883 /]# ping web1_link
PING web1_link (172.17.0.3) 56(84) bytes of data.
64 bytes from web1_link (172.17.0.3): icmp_seq1 ttl64 time0.140 ms
64 bytes from web1_link (172.17.0.3): icmp_seq2 ttl64 time0.097 ms
网络
[rootlight-test data[]# docker network ls
NETWORK ID NAME DRIVER SCOPE
bf548f58947e bridge bridge local
efacf764b5be host host local
45a419ec5a2d none null localBridge#桥接使用自定义 IP
Host#不获取 IP 直接使用物理机 IP并监听物理机 IP 监听端口
None: 一般创建好后没有配置网卡路由等一般不会使用docker 的默认模式即不指定任何模式就是 bridge 模式也是使用比较多的模式
此模式创建的容器会为每一个容器分配自己的网络 IP 等信息并将容器连接到
一个虚拟网桥与外界通信。docker network inspect bridge 跨主机互联是说 A 宿主机的容器可以访问 B 主机上的容器但是前提是保证各
宿主机之间的网络是可以相互通信的然后各容器才可以通过宿主机访问到对方
的容器实现原理是在宿主机做一个网络路由就可以实现 A 宿主机的容器访问 B
主机的容器的目的复杂的网络或者大型的网络可以使用 google 开源的 k8s 进
行互联设置docker启动时候的内网ip段
保证两台机器是内网
其中一台docker的启动网段进行设置 #cat /lib/systemd/system/docker.service |grep bip
ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock --bip10.10.0.1/24docker run -d --name web2 -p 8081:80 nginx:v1
docker registry 下载镜像
Docker Registry 作为 Docker 的核心组件之一负责镜像内容的存储与分发客
户端的 docker pull 以及 push 命令都将直接与 registry 进行交互,最初版本的
registry 由 Python 实现,由于设计初期在安全性性能以及 API 的设计上有着诸
多的缺陷该版本在 0.9 之后停止了开发由新的项目 distribution新的 docker
register 被称为 Distribution来重新设计并开发下一代 registry新的项目由 go
语言开发所有的 API底层存储方式系统架构都进行了全面的重新设计已解
决上一代 registry 中存在的问题2016 年 4 月份 rgistry 2.0 正式发布docker 1.6
版本开始支持 registry 2.0而八月份随着 docker 1.8 发布docker hub 正式启
用 2.1 版本 registry 全面替代之前版本 registry新版 registry 对镜像存储格式
进行了重新设计并和旧版不兼容docker 1.5和之前的版本无法读取2.0的镜像
另外Registry 2.4 版本之后支持了回收站机制也就是可以删除镜像了在 2.4
版本之前是无法支持删除镜像的所以如果你要使用最好是大于 Registry 2.4 版
本的目前最新版本为 2.7.x。
官方文档地址https://docs.docker.com/registry/
官方 github 地址https://github.com/docker/distribution