做微网站需要哪种公众号,天桥区seo全网宣传,网络促销策略,建站之星凡客目录
docker的创建镜像的方式
dockerfile形成#xff08;原理#xff09;
docker的核心作用
docker的文件结构
dockerfile的语法
CMD和ENTRPOINT的区别
创建dockerfile镜像
区别
RUN命令的优化
如何把run命令写在一块
copy和ADD区别
区别
centos7 构建Apache的d…目录
docker的创建镜像的方式
dockerfile形成原理
docker的核心作用
docker的文件结构
dockerfile的语法
CMD和ENTRPOINT的区别
创建dockerfile镜像
区别
RUN命令的优化
如何把run命令写在一块
copy和ADD区别
区别
centos7 构建Apache的dockerfile编译安装
页面访问
编辑
centos7 构建nginx的dockerfile编译安装 创建镜像创建自定义的镜像
包括配置文件挂载点对外暴露的端口设置环境变量 docker的创建镜像的方式
1、基于已有的镜像进行创建根据官方提供的镜像源创建镜像然后拉起容器是一个白版值能提供基础的功能
扩展性的功能还是需要自定义进入容器进行操作
2、基于模版进行创建
导入镜像到本地
docker import 模版 -- 模版Ubuntu14
3、dockerfile 联合文件系统unionFSdocker镜像的基础镜像通过分层来进行集成特性一次同时加载多个文件系统但是从外面来看就是一个文件系统
docker镜像世纪上就是由一层一层的文件系统组成这种层级的文件系统就是unionFS
每层都是layers每一层都包含文件系统的一部分这些层次叠加在一起最终形成的就是rootfs
dockerfile形成原理 bootfs 宿主机的引导文件系统启动操作系统的文件启动容器需要的最基本的文件包含宿主机的bootloader和kernel提供内核
rootfs 镜像的操作系统拉取镜像会给镜像自动创建一恶搞操作系统拉取镜像
run add 创建容器时的命令
container
从而形成镜像
bootfs 宿主机提供的内核和引导程序
rootfs 就是容器的操作系统在dockerfile中我们可以自己指定是多个基础镜像和应用镜像结合起来的只读层镜像实际上就死一个只读文件
容器基于镜像实例运行起来之后容器变成可读可写层 在dockerfile当中每创建一个指定都是一个镜像层
镜像层会被缓存和复用
一旦有一层镜像失败那么所有的镜像层都会失败镜像也不会创建
镜像层是不可变的你在某一层当中添加一个新的命令但是下一层删除了指令镜像中基于这个命令创建的文件依然存在但是在容器中看不见
docker的核心作用
用户个性化定制docker的镜像 docker的文件结构
1、基础镜像信息
2、维护者信息
3、镜像的操作指令
4、容器启动时执行的命令nginx定义好了容器执行的命令bin/bash,覆盖了容器内的标准输出
dockerfile的语法
FROM指定基础镜像信息指定容器的操作系统
MAINTAINER指定维护者信息可有可无
RUN在基础的镜像上执行的命令每个run就是一层分层越多镜像越大
ENTRYPOINT设置容器运行时的默认命令容器内部运行的主程序
CMD指定容器运行时的默认命令docker run /bin/bash 后面加了其他的命令CMD的指令将会被覆盖
EXPOSE暴漏端口指定容器的运行端口
ENV设置环境变量环境变量可以被run命令使用声明容器运行需要的环境变量
ADD复制解压解压不支持.zip和.rar tar.gz tar.bz2 支持url地址解压和复制解压
COPY复制文件不能解压只能复制本地文件文件要和dockerfile在一个目录官方推荐复制用copy
VOLUME创建一个容器内的挂载点既可以为宿主机挂载也可以供容器挂载
USER设置运行镜像时使用的用户或者UID可以不加
WORKDIR为后续指令设置的工作目录
ONBUILD这个镜像可以被其他镜像引用需要这个命令
ARG传参用于创建容器时传递参数ENV用于容器运行时设置环境变量 CMD和ENTRPOINT的区别
都是可以作为容器启动时的默认命令 创建dockerfile镜像
vim Dockerfile
FROM centos:7
MAINTAINER this is my docker xb
ENTRYPOINT [echo,hello]
CMD [world]构建镜像
[rootdocker1 test1]# docker build -t centos7:test .
[] Building 17.0s (5/5) FINISHED docker:default [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 183B 0.0s [internal] load metadata for docker.io/library/centos:7 4.5s [1/1] FROM docker.io/library/centos:7sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 12.5s resolve docker.io/library/centos:7sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB 8.6s sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB 0.0s sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 3.8s exporting to image 0.0s exporting layers 0.0s writing image sha256:95db50faac27607f675dd62ed2fd7a54e573f28c4b4c6b6b19f8c0718a71c0bc 0.0s naming to docker.io/library/centos7:test 0.0s
创建容器
[rootdocker1 test1]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 test 95db50faac27 2 years ago 204MB
[rootdocker1 test1]# docker run -it --name test1 centos7:test
hello world
[rootdocker1 test1]#
区别
1、cmd可以把参数传给ENTRYPOINT
2、多个ENTRYPOINT和多个cmd只会运行最后一个一个Dockerfile当中只会有一个ENTRYPOINT和CMD
3、ENTRYPOINT的指令不会被覆盖CMD的指令如果在docker run的后面加上输出会被覆盖
4、ENTRYPOINT的指令在容器启动时启动时执行都会成为容器的主进程主进程负责接收信号处理容器的生命周期主进程退出容器也将会终止运行 RUN命令的优化
主要是减少镜像的层数把多个run命令写在一块
如何把run命令写在一块 符号
RUN yum -y install nginx make -j 4 make install
前一个命令执行成功才会执行下一个命令; 符号
RUN yum -y install nginx ; make -j 4 ; make install
不管前一个命令是否成功后面的命令都会执行|| 符号
RUN yum -y install nginx || make -j 4 || make install
如果前面的命令执行失败才会执行后面的操作反斜杠\ 换行 符号
RUN yum -y install nginx \make j 4\make install
可读性更高
copy和ADD区别
copy和add都可以吧本地文件复制到镜像中但是官方推荐如果是复制使用copy
区别
add可以解压如果是一个压缩文件add在复制之后会自动解压tar.gz和tar.bz2 可以支持URL下载源文件支持下载但不能解压通过URL拷贝的文件无法自动解压
copy只能复制不能解压而且只能是本地文件不支持URL路径 centos7 构建Apache的dockerfile编译安装
把源码包拖到opt目录下
vim Dockerfile
#创建基础镜像
FROM centos:7
MAITAIENR this is my apache dn
RUN yum -y install gcc gcc-c make pcre pcre-devel expat-devel perl
ADD apr-1.6.2.tar.gz /opt
ADD httpd-2.4.29.tar.bz2 /opt
ADD apr-util-1.6.0.tar.gz /opt
RUN mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util \
cd /opt/httpd-2.4.29 \
./configure --prefix/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi \
make -j 4 make install
EXPOSE 80
CMD [/usr/local/httpd/bin/apachectl,-D,FOREGROUND]docker build -t apache:centos .docker run -itd --name httpd1 -p 50:80 apache:centos基于镜像的二次构建
FROM centos:7 AS first
MAITAIENR this is my apache dn
RUN yum -y install gcc gcc-c make pcre pcre-devel expat-devel perl
ADD apr-1.6.2.tar.gz /opt
ADD httpd-2.4.29.tar.bz2 /opt
ADD apr-util-1.6.0.tar.gz /opt
RUN mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util \
./configure --prefix/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi \
make -j 4 make install
#二层构建
FROM centos:7
COPY --fromfirst /usr/local/httpd /usr/local/httpd
RUN yum -y cre pcre-devel expat-devel perl
EXPOSE 80
CMD [/usr/local/httpd/bin/apachectl,-D,FOREGOUND]docker build -t apache1:centos .docker run -itd --name httpd1 -p 50:80 apache:centos
页面访问 centos7 构建nginx的dockerfile编译安装
把源码包拖到opt/test目录下
vim Dockerfile
FROM centos:7
MAINTAINER this is nginx xb
ADD nginx-1.22.0.tar.gz /opt/test/
RUN yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel \
useradd -M -s /sbin/nologin nginx \
cd /opt/test/nginx-1.22.0/ \
./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module \
make -j 4 make install \
chown -R nginx.nginx /usr/local/nginx/ \
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
EXPOSE 80
CMD [/usr/local/nginx/sbin/nginx,-g,daemon off;][rootdocker1 test]# docker build -t nginx:centos .
[] Building 0.0s (8/8) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 791B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/centos:7 0.0s [internal] load build context 0.0s transferring context: 95B 0.0s [1/3] FROM docker.io/library/centos:7 0.0s CACHED [2/3] ADD nginx-1.22.0.tar.gz /opt/test/ 0.0s CACHED [3/3] RUN yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel useradd -M -s /sb 0.0s exporting to image 0.0s exporting layers 0.0s writing image sha256:5f90f4b42382377324edf884560f8118d6873889dd8179df68b47de39b6fb334 0.0s naming to docker.io/library/nginx:centos 0.0s
[rootdocker1 test]# docker run -itd --name xiaobu -p 8080:80 nginx:centos
61beb14328b28a424a4c2e88d7e3a1f63e4ac55b551ec32a3656bcff3cb0711b
[rootdocker1 test]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61beb14328b2 nginx:centos /usr/local/nginx/sb… 5 seconds ago Exited (1) 4 seconds ago xiaobu
6068029975ff apache1:centos /usr/local/httpd/bi… 3 hours ago Up 3 hours 0.0.0.0:1314-80/tcp, :::1314-80/tcp httpd1
5b6c5af75176 apache:centos /usr/local/httpd/bi… 3 hours ago Exited (0) 3 hours ago http1
页面访问