一,镜像的分类 1,docker 的三要素 1), Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。 2),容器(Container) 1.Docker利用容器(Container)独立运行一个或一组应用 2.容器使用镜像创建的运行实例 3.容器可以被启动、开始、停止、删除,每个容器之间都是相互隔离的,保证平台的安全。 4.可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。 5.容器的定义和镜像几乎一摸一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。 3),仓库(Repository) 1.仓库(Repository)是集中存放镜像文件的场所。 2.仓库(Repository)和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。 3.仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 4.最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。 5.国内的公开仓库包括阿里云、网易云等。 二.dockerfile分层原理 base镜像 base镜像有两层含义:不依赖其他镜像,从scratch构建其他镜像可以之为基础进行扩展所以,base镜像一般都是各种Linux发行版本的Docker镜像,比如:Ubuntu,Debian或者CentOS等。 base镜像提供的都是最小安装的Linux发行版本。
三,搭建Nginx 1.构建镜像
[root@docker ~]
[root@docker ~]
FROM centos:7
MAINTAINER THIS IS NGINX IMAGE
添加环境包
RUN yum -y update
RUN yum install -y pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORkDIR nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
CMD nginx
2.上传nginx 包
[root@docker ~]
[root@docker nginx]
Dockerfile
[root@docker nginx]
[root@docker nginx]
Dockerfile nginx-1.12.2.tar.gz
3.构建镜像
docker build -f Dockerfile -t nginx:new .
docker run -d -P nginx:new
[root@docker nginx]
f18a5ddda8c0331a341e6fc4ccef615e2119c93acd98868766b52c7df649594a
[root@docker nginx]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f18a5ddda8c0 nginx:new "/bin/sh -c nginx" 32 seconds ago Up 32 seconds 0.0.0.0:49153->80/tcp, :::49153->80/tcp sweet_aryabhata
a3a1d2b372b8 hello-world "/hello" 29 minutes ago Exited (0) 29 minutes ago priceless_colden
四,Tomcat 搭建、 1,构建镜像
FROM centos:7
MAINTAINER build image tomcat <tang>
EXPOSE 8080
ADD jdk-8u91-linux-x64.tar.gz /usr/local/src
WORKDIR /usr/local/src
ENV JAVA_HOME /usr/local/src/jdk1.8.0_91
ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-9.0.16.tar.gz /usr/local/src
RUN mv apache-tomcat-9.0.16/ /usr/local/tomcat9 &> /dev/null
ENV PATH /usr/local/tomcat9/bin/:$PATH
ADD tomcat9.run.sh /usr/local/src
RUN chmod 755 /usr/local/src/tomcat9.run.sh &> /dev/null
CMD ["/usr/local/src/tomcat9.run.sh"]
vim tomcat9.run.sh
/usr/local/tomcat9/bin/catalina.sh run
2.生成镜像
[root@docker Tomcat]
[root@docker Tomcat]
tomcat test b6fcee8f8fb0 About a minute ago 599MB
3.创造容器
[root@docker Tomcat]
49b92eee4f800bfc2611254d2996a404afae52e04f570c5fcc52261cfed27e06
[root@docker Tomcat]
49b92eee4f80 tomcat:test "/usr/local/src/tomc…" 12 seconds ago Up 11 seconds 0.0.0.0:49154->8080/tcp, :::49154->8080/tcp blissful_saha
五,dockerfile构建Tomcat镜像优化 1.创建目录并编写Dockerfile文件
vim Dockerfile
FROM frolvlad/alpine-oraclejdk8
ADD apache-tomcat-9.0.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv /usr/local/apache-tomcat-9.0.16 /usr/local/tomcat &>/dev/null
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& sed -i "s#securerandom.source=file:/dev/random#securerandom.source=file:/dev/urandom#g" $JAVA_HOME/jre/lib/security/java.security
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
2.生成镜像
[root@docker Tomcat]
[root@docker Tomcat]
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat new ca84190d524b 44 seconds ago 199MB
tomcat test b6fcee8f8fb0 19 minutes ago 599MB
nginx new 2aefb78c6db3 46 minutes ago 681MB
hello-world latest d1165f221234 6 months ago 13.3kB
centos 7 8652b9f0cb4c 10 months ago 204MB
frolvlad/alpine-oraclejdk8 latest 7f2049911fa1 2 years ago 169MB
3.创建容器
[root@docker Tomcat]
fced2d2e61cd9b486da249ce073beafbe313ee3ee527a9405fef8753c953a345
[root@docker Tomcat]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fced2d2e61cd tomcat:new "/usr/local/tomcat/b…" 13 seconds ago Up 11 seconds 0.0.0.0:49155->8080/tcp, :::49155->8080/tcp happy_proskuriakova
49b92eee4f80 tomcat:test "/usr/local/src/tomc…" 18 minutes ago Up 18 minutes 0.0.0.0:49154->8080/tcp, :::49154->8080/tcp blissful_saha
f18a5ddda8c0 nginx:new "/bin/sh -c nginx" 53 minutes ago Up 53 minutes 0.0.0.0:49153->80/tcp, :::49153->80/tcp sweet_aryabhata
a3a1d2b372b8 hello-world "/hello" About an hour ago Exited (0) About an hour ago priceless_colden
|