怎样自己做代刷网站,想做一个自己的网站 怎么做,萍乡公司做网站,俄罗斯乌克兰战争结束了吗docker的数据卷与dockerfile自定义镜像 一. docker的数据卷数据卷容器 二. dockerfile自定义镜像2.1 dockerfile的命令格式镜像的操作命令add和copy的区别 容器启动的命令 2.2 run命令2.3 其它端口映射 三. 练习 一. docker的数据卷
容器于宿主机之间#xff0c;或者容器和容… docker的数据卷与dockerfile自定义镜像 一. docker的数据卷数据卷容器 二. dockerfile自定义镜像2.1 dockerfile的命令格式镜像的操作命令add和copy的区别 容器启动的命令 2.2 run命令2.3 其它端口映射 三. 练习 一. docker的数据卷
容器于宿主机之间或者容器和容器之间的数据共享(目录)。创建容器的时候通过指定目录实现容器于宿主机之间或者容器和容器之间的数据共享。容器的生命周期是有限的容器一旦销毁内部的数据也会一并消失所以我们创建了数据卷的方式将容器内的数据持久化保存到宿主机。
-v /usr/share/nginx/html:/opt/test1:ro -v 宿主机的目录:容器内的目录:数据卷的默认权限是rwro:只读模式 volume挂载卷数据卷 以宿主机的目录为准容器的生命周期是有限的保存到宿主机的数据可以再下一次创建容器的时候继续使用。 docker run -itd --name nginx1 -v /opt/test1:/usr/share/nginx/html -p 80:80 nginx:1.22
docker exec -it nginx1 bash
数据卷容器
容器和容器之间共享数据 docker run -itd --name test2 -v /opt/data1 -v /opt/data2 centos:7 -v指定目录如果没有:这个目录就是容器内的数据目录不会和宿主机挂载
docker run -itd --name test3 --volumes-from test2 centos:7 –volumes-from: 另外一个容器使用其他容器提供的数据目录。这个目录仅限于容器内数据共享一旦容器销毁内部的数据目录也会一并销毁。
docker exec it test2 bash
cd /opt ls
创建容器指定挂载卷容器内的nginx的日志目录和宿主机挂载nginx的映射端口为随机端口。然后访问容器可以在宿主机显示日志的内容。 var/log/nginx
创建容器额时候一定要做宿主机和容器之间的端口映射(容器对外提供访问) 一定要对容器做资源限制 一定要做数据卷
二. dockerfile自定义镜像
基于dockerfile创建联台文件系统UnionFs是创建docker镜像的基础镜像可以通过分层来进行集成基于基础的镜像可以制作各种应用的镜像 特点一次性加载多个文件系统但是创建好容器之后对于用来说只有一个文件系统。
docker镜像的定制化操作实际上就是定制每一层所要添加的配置和未见等等。 把所有的需要的操作写入一个脚本当中然后一键运行就是dockerfile dockerfile作为一个脚本由四部分组成
基础镜像: 程序的运行环境维护者信息可选项相当于注释可以不写镜像的操作命令自定义应用容器启动时的命令容器没有可执行的命令就会退出进入stop状态必须要给容器一个可执行的持久化的命令。
2.1 dockerfile的命令格式 FROM指定程序的基础镜像 MAINTAINER维护者信息可以忽略或者LABEL
镜像的操作命令
RUN在基础镜像运行命令结果提交到新镜像。每执行一次run就相当于是镜像的一层run的命令太多镜像的分层就越多镜像越大。ADD将宿主机的文件复制到镜像的内部可以URL和解压COPY将宿主机的文件复制到镜像的内部只能是宿主机的本地文件不支持下载。ENV指定镜像内的容器运行之后的环境变量WORKDIR容器的工作目录也是进入容器之后的默认目录USER指定容器运行时的用户名或者uidVOLUME创建容器内的挂载点可以被外部使用即可以和宿主机挂载也可以和容器使用EXPOSE声明容器对外的网络端口ARG用来传递变量把宿主机的参数传递到容器内部的参数
add和copy的区别
add和copy在复制文件时表现的是一致的。复制本地文件找和dockerdfile在一个目录下的文件。自动复制到指定路径。解压和下载只能是add
ADD的优点 没有格式的限制-----解压.gz .bz2 直接跟上路径自动解压到目标路add缺点 在不解压的前提下无法复制tar的压缩文件。 只是复制使用copy如果是压缩再使用 add。
容器启动的命令
CMD指定容器运行时的默认命令ENTRYPOINT指定容器运行时的默认命令 cmd和entrtponint是有区别的 cmd可以给entrypoint传参entrypoint会覆盖cmd的命令外部定义了参数如果是cmd会被外部的传参覆盖只会执行外部传参的命令但是entrypoint的命令是不会被外部传参的命令覆盖的。 如果有多个cmd和entrypoint只会执行最后一个。
#制作镜像
docker build -t centos:test1 .
docker build开启镜像的制作
-t创建完成之后给镜像指定的名称和标签
.直接从当前目录的dockerfile文件创建镜像
2.2 run命令
RUN apt -yinsatll nginx apt -y install httpd
RUN apt -yinsatll nginx ; apt -y install httpd
RUN apt -yinsatll nginx || apt -y install httpd在run命令中表示连接多个命令确保前一个命令执行成功才会运行第二个命令。;不管前面的命令是否成功都会执行后面的命令||或者(只有前面的失败了后面的命令才会执行)
FROM ubuntu:22.04
RUN apt-get update apt -y install nginx
EXPOSE 82
ENTRYPOINT [nginx,-g,daemon off;]2.3 其它端口映射
vim /etc/nginx/nginx.conf
#http中添加
server {listen 82;location /{root html;index index.html index.html;}}vim Dockerfile
FROM ubuntu:22.04
RUN apt-get update \ apt -y install nginx \ apt -y install net-tools vim
EXPOSE 82
ADD nginx.conf /etc/nginx
ENTRYPOINT [nginx,-g,daemon off;]docker build -t nginx:test1 .docker run -itd --name nginx2 -P nginx:test1FROM ubuntu:22.04
WORKDIR /opt
ENV PATH /opt/test1:$PATH
VOLUME [/opt/test1]
#这个不代表容器的默认挂载路径也不表示宿主机一定要和这个目录挂载三. 练习
用ubuntu实现nginx:1.22的编译版本暴露端口为84设置nginx的默认访问目录为/var/www/html/index.html配置都要通过dockerfile自动完成。 宿主机和访问目录实现挂载 限制cpu只能使用10% 以及1g的内存 docker run -itd --name ubuntu1 -v /opt/ubutu:/usr/local/nginx/html/ -P --cpu-quota 20000 -m 1g nginx:1