针对DokcerFile的添加及如何生成一个自定义镜像mycentos和四这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展CentOS7设置开机启动服务,添加自定义系统服务centos7关闭
针对DokcerFile的添加及如何生成一个自定义镜像mycentos和四这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载、CentOS zookeeper dockerfile、CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像、centos7中dockerfile方式安装nginx镜像 + 解决报错等相关知识,希望可以帮助到你。
本文目录一览:- DokcerFile的添加及如何生成一个自定义镜像mycentos(四)(使用dockerfile创建镜像)
- CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载
- CentOS zookeeper dockerfile
- CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像
- centos7中dockerfile方式安装nginx镜像 + 解决报错
DokcerFile的添加及如何生成一个自定义镜像mycentos(四)(使用dockerfile创建镜像)
最近在学习Docker,用commit去生成一个镜像,但是生成后的镜像非常臃肿,所以去学习了一下DockerFile。
前提条件:
已在虚拟机中成功安装Docker
简单的理解可以如下图所示:
DockerFile文件:类似原材料
Docker镜像:组装原材料后,形成交付品
Docker容器:运行状态
1、什么叫DockerFile
DockerFile:就是一系列脚本,用命令和参数构成的,主要作用就是用来构建Docker镜像的文件。
2、怎么去写DockerFile(DockerFile文件编写的步骤)
怎么去写DockerFile,也就是DockerFile文件形成的步骤,主要有3个步骤:编写DockerFile文件、Docker build执行获取镜像、Docker run运行生成容器,最后可以通过Docker history去查看历史执行镜像。
Dockerfile的大致执行流程:
2.1 docker从基础镜像运行一个容器(在虚拟机中,在hub官网上拉一个centos)
2.2 执行指令并对容器做出修改
2.3 执行类似docker commit的操作提交一个新的镜像层
2.4 Docker在基于刚提交的镜像运行一个新容器
2.5 执行dockerfile中的下一条指令直到所有指令都执行完成
DockerFile文件执行步骤命令:


1 编写Dockerfile文件
2 构建docker image:Docker build -t 新镜像名:TAG . //注意最后一个点与TAG之间有个空格
3 运行docker 生成容器:docker run -it 新镜像ID //通过docker images找到镜像ID
4 列出镜像的变更历史:docker history 新镜像ID
3、DockerFile的文件解析
打开官网 https://hub.docker.com/ ,在官网上搜索centos,随意点开一个,查看DockFile。
如下图,Dockerfile文件解析:
3.1 保留字全部大写+参数 //保留字有FROM、MAINTAINER、COPY、ADD、RUN、ONBUILD、WORKDIR、USER、CMD、ENV、EXPOSE、VOLUME、ENTRYPOINT等待。
3.2 从上到下,顺序执行
3.3 #表注释
3.4 每条指令都会创建一个 新的镜像层,并对镜像进行提交
4、实战-定制需求生成一个自定义镜像
Base镜像(scratch):docker hub中的镜像都是通过在base镜像中安装;自定义镜像中安装和配置需要的软件构建出来的。
4.1 自定义镜像需求为:目前从官网上pull下来的centos都是精简版,不支持vim,不支持ifconfig,所以自定义的镜像mycentos满足如下3个条件
a 登陆后默认路径修改为:/usr/local (未修改前在根目录下/)
b 可以使用vim 编辑器
c 可以查看网络配置ifconfig支持
4.2 打开虚拟机centos7终端,执行docker images出现错误:【Failed to restart dock.service: Unit not found.】,执行如下代码:


1 systemctl unmask docker.service
2 systemctl unmask docker.socket
3 systemctl start docker.service
4.3 在虚拟机centos中,打开终端,首先创建目录文件Dockerfile/DockerFile文件并且配置Dockerfile文件,代码如下:


1 cd /
2 mkdir /mydocker/
3 touch Dockerfile.txt
4 vi Dockerfile.txt
打开对应的Dockerfile.txt文件后,编写定义需求,代码如下:


1 From centos
2 ENV mypath /usr/local //配置环境变量,默认路径变更为:/usr/local,以前是根目录
3 WORKDIR $mypath
4 RUN yum -y install vim //安装vim
5 RUN yum -y install net-tools //安装net-tools
6 EXPOSE 80
7 CMD /bin/bash
4.4 构建dockerfile文件生成镜像,代码如下:


docker build -f /mydocker/Dockerfile.txt -t mycentos:1.3 .
4.5 生成镜像后,运行生成容器,代码如下:


docker run -it mycentos:1.3
4.6 查看镜像的历史记录,代码如下:


1 docker images //找到对应的image id(镜像ID)
2 docker history a5688da747d7 //查看docker历史记录
CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载
centos 7设置开机启动服务,添加自定义系统服务
- 建立服务文件
- 保存目录
- 设置开机自启动
- 其他命令
1.建立服务文件
文件路径
vim /usr/lib/systemd/<span>system</span>/nginx.service
服务文件内容
<span>[Unit]</span><span>Description=<span>nginx - high performance web server</span></span><span>After=<span>network.target remote-fs.target nss-lookup.target</span></span><span>[Service]</span><span>Type=<span>forking</span></span><span>ExecStart=<span>/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf</span></span><span>ExecReload=<span>/usr/local/nginx/sbin/nginx -s reload</span></span><span>ExecStop=<span>/usr/local/nginx/sbin/nginx -s stop</span></span><span>[Install]</span><span>WantedBy=<span>multi-user.target</span></span>
文件内容解释
[<span>Unit</span>]:服务的说明<span> Description:描述服务</span><span> After:描述服务类别</span><span> [Service]服务运行参数的设置</span><span> Type=forking是后台运行的形式</span><span> ExecStart为服务的具体运行命令</span><span> ExecReload为重启命令</span><span> ExecStop为停止命令</span><span> PrivateTmp=True表示给服务分配独立的临时空间</span><span> 注意:启动、重启、停止命令全部要求使用绝对路径</span><span> [Install]服务安装的相关设置,可设置为多用户</span>
2.保存目录
以754的权限保存在目录:
/usr/lib/systemd/<span>system</span>
3.设置开机自启动
任意目录下执行
systemctl enable nginx<span>.service</span>
4.其他命令
启动nginx服务
systemctl <span><span>start</span> nginx.service</span>
设置开机自启动
systemctl enable nginx<span>.service</span>
停止开机自启动
systemctl disable nginx<span>.service</span>
查看服务当前状态
systemctl status nginx<span>.service</span>
重新启动服务
systemctl restart nginx<span>.service</span>
查看所有已启动的服务
systemctl <span>list</span>-units --<span><span>type</span>=</span>service
以上就介绍了centos 7设置开机启动服务,添加自定义系统服务,包括了centos 7方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
CentOS zookeeper dockerfile
DockerFile:
FROM centos:7 RUN yum -y install vim lsof wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel pwgen python-pip RUN mkdir /opt/java &&\ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz -P /opt/java RUN tar zxvf /opt/java/jdk-8u102-linux-x64.tar.gz -C /opt/java &&\ JAVA_HOME=/opt/java/jdk1.8.0_102 &&\ sed -i "/^PATH/i export JAVA_HOME=$JAVA_HOME" /root/.bash_profile &&\ sed -i "s%^PATH.*$%&:$JAVA_HOME/bin%g" /root/.bash_profile &&\ source /root/.bash_profile ENV ZOOKEEPER_VERSION "3.4.6" RUN mkdir /opt/zookeeper &&\ wget http://mirror.olnevhost.net/pub/apache/zookeeper/zookeeper-$ZOOKEEPER_VERSION/zookeeper-$ZOOKEEPER_VERSION.tar.gz -P /opt/zookeeper RUN tar zxvf /opt/zookeeper/zookeeper*.tar.gz -C /opt/zookeeper RUN echo "source /root/.bash_profile" > /opt/zookeeper/start.sh &&\ echo "cp /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo_sample.cfg /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo.cfg" >> /opt/zookeeper/start.sh &&\ echo "/opt/zookeeper/zookeeper-$"ZOOKEEPER_VERSION"/bin/zkServer.sh start-foreground" >> /opt/zookeeper/start.sh EXPOSE 2181 ENTRYPOINT ["sh","/opt/zookeeper/start.sh"]
build:
docker build -t jiankunking/zookeeper:3.4.6 -f zookeeper.Dockerfile .
CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像
环境准备:
1. VMware 下安装 CentOS,安装 Docker 并从公共镜像仓库中下载 CentOS 的镜像到本地仓库
2. 从 tomcat 和 oracle 官网下载 jdk-8u171-linux-x64.rpm 和 apache-tomcat-7.0.77.tar.gz
3. 上传到 CentOS 虚拟机的工作目录:如 /root/software/
4. 上传工程到工作目录,示例中创建的是一个 hello.html
创建 Dockerfile
创建文件 /root/software/Dockerfile, 内容如下:
FROM centos:7.2.1511
MAINTAINER sjg
WORKDIR /home
#上传安装包
ADD jdk-8u171-linux-x64.rpm /home/
#安装JDK
RUN rpm -ivh /home/jdk-8u171-linux-x64.rpm && rm -rf /home/jdk-8u171-linux-x64.rpm
#设置环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_171-amd64
ENV PATH $PATH:$JAVA_HOME/bin
#安装tomcat
RUN mkdir Tomcat
ADD apache-tomcat-7.0.77.tar.gz /home/
RUN tar zxf /home/apache-tomcat-7.0.77.tar.gz -C /home/Tomcat && rm -rf /home/apache-tomcat-7.0.77.tar.gz
#部署项目
ADD hello.html /home/Tomcat/apache-tomcat-7.0.77/webapps/ROOT/
EXPOSE 8080
#启动容器
ENTRYPOINT /home/Tomcat/apache-tomcat-7.0.77/bin/startup.sh && tail -f /home/Tomcat/apache-tomcat-7.0.77/logs/catalina.out
build Tomcat 镜像
执行:cd /root/software
执行:docker build -t tomcat-sjg:1.0
运行 Tomcat 容器
docker run -d -p 58080:8080 --name mytomcat tomcat-sjg:1.0
查看 hello world 页面
在浏览器中输入:http://[虚拟机地址]:58080/hello.html
其他常用命令:
Docker 的公共仓库中其实已经提供了 tomcat 镜像,但是 java 环境并不是 oracle JDK。
centos7中dockerfile方式安装nginx镜像 + 解决报错
记录一下我曲折的安装镜像之旅(扶额哭),报错5秒钟,改错三小时。看了很多网上的教程,但我用了 都或多或少有些问题,所以顺便总结记录一个避坑的步骤。
我使用的是centos7,已经装好了docker,使用dockerfile安装Nginx 1.17.1镜像
目录
安装和启动步骤
1.安装centos基础镜像(或Ubuntu)(可略过)
2.编辑Dockerfile内容,找一个位置,创建并编辑Dockerfile,内容如下。
3.在终端中,进入Dockerfile所在的目录,运行如下命令,利用Dockerfile构建镜像
4.运行镜像的对应容器。
nginx配置启动
1.进入容器内
2.启动nginx。
安装和启动步骤
-
1.安装centos基础镜像(或Ubuntu)(可略过)
先解释一下,为啥本来在centos里,却还要在docker里安装个centos镜像;因为①要使Nginx在操作系统的基础下运行,②且在使用dockerfile方式时,文件内容中开头通常包含一句“FROM 基础镜像”,所以这里就需要再有一个镜像。
两种方式,
一种是可以直接拉取centos(命令如下),
或者,现在先不加,等会运行Dockerfile文件内容时,令其自动下载(那么本步骤跳过)
docker pull centos:latest
#冒号后是版本,不写默认则为最新版本
-
2.编辑Dockerfile内容,找一个位置,创建并编辑Dockerfile,内容如下。
# 文件名Dockerfile,将一下内容直接写到Dockerfile里。(没有后缀名,注意名字不可以改)
# 如果你前面建立了centos的基础镜像,那么使用FROM 基础镜像名
# 刚才跳过了第一步,还没有对应基础镜像
# 可以直接使用FROM centos(但这种方式是从官网下载内容,太慢了,动不动就timeout)
# 如果这样还是timeout,可以使用 FROM docker.io/centos
# 当然我是前面两种写法都timeout了,所以我用了网易的源,如下
FROM hub.c.163.com/public/centos:latest
# 维护人信息
MAINTAINER newbie <newbie@qq.com>
#给基础镜像centos安装必备的环境
# 加上“rpm --rebuilddb &&”是为了防止数据库损坏而影响yum安装。
# 注意,比较保险的做法是有多少个yum命令,就加多少个“rpm --rebuilddb &&”在yum前面。
# 另外yum install一定要安装的是pcre,zlib,net-tools,make,gcc,wget,tar及其相关内容
RUN rpm --rebuilddb && yum install -y autoconf automake make wget proc-devel net-tools zlib zlib-devel make gcc g++ openssl-devel pcre pcre-devel tar
# 在线获取Nginx压缩包(也可以在本地系统(centos)里先下载压缩包,再ADD命令将包加入到基础镜像/usr/src目录中)
RUN wget http://Nginx.org/download/Nginx-1.17.1.tar.gz
# 解压到当前目录
RUN tar -zxvf Nginx-1.17.1.tar.gz
# 设置环境
workdir Nginx-1.17.1
# 配置Nginx
RUN ./configure --prefix=/usr/local/Nginx && make && make install
# RUN rm -rf /usr/src/Nginx
# 设置环境
workdir /usr/local/Nginx
#http
EXPOSE 80
#https
EXPOSE 443
CMD ["Nginx", "-g", "daemon off;"]
-
3.在终端中,进入Dockerfile所在的目录,运行如下命令,利用Dockerfile构建镜像
docker build -t 镜像名(自己起):标记号(通常即版本号,也可随便起)
如果每行都运行成功,出现如下successfully的语句,那么恭喜,镜像已成功安装。此时可以通过docker images命令,查看构建好的docker。
-
4.运行镜像的对应容器。
docker run -p 8081:80 --name test_Nginx -it 124:1.17 /bin/bash
# -p 将对应的8081端口映射成80端口,通过在本机centos访问8081端口,则会自动映射到基础镜像centos的80端口。
#--name 后面加给容器的名字
#-it 后面加上对应的镜像
#另外注意加上/bin/bash
一般来说到这一步,再通过本机系统浏览器访问localhost:8081即可。(如果不行,可尝试使用 http://本机centos ip:8081)。
注意,如果此时仍无法访问,有可能是Nginx未启动(本来我以为自己安装还是有问题,对代码命令改改改,这块花了不少问题TAT。后来排除了安装错误的可能,一顿操作无效后,想到问题可以被简化为),如果直接输入Nginx无法访问,解决步骤见Nginx配置启动。
curl: (7) Failed to connect to ::1: Network is unreachable
(运行命令curl localhost:8081的报错)
Nginx配置启动
-
1.进入容器内
首先通过刚才前面的步骤,容器已运行,下面为我的运行命令情况,在[]内能看到,当前系统名变为了6d7278eb8589(我的容器id)。
[root@6d7278eb8589 /]# ls
bin boot dev etc home lib lib64 media mnt Nginx-1.17.1 Nginx-1.17.1.tar.gz opt proc root sbin selinux srv sys tmp usr var
[root@6d7278eb8589 /]# cd Nginx-1.17.1
[root@6d7278eb8589 Nginx-1.17.1]# ls
CHANGES CHANGES.ru LICENSE Makefile README auto conf configure contrib html man objs src
[root@6d7278eb8589 Nginx-1.17.1]# ./configure
如果没进入容器内,使用如下命令
# 首先看一下构建的容器id,刚才启动了,直接docker ps即可查看。
docker ps
# 然后进入容器
docker attach 容器id
#上面这句也可以替换为
docker exec -it 容器名 /bin/bash
进入容器,会发现终端的[]中系统名变为容器id。进入Nginx所在目录。找到configure文件。终端中运行 ./configure。此时会出现一串组件的审查检测,找到not found的,看一看,是否是必要的pcre、zlib等,如果是,需要yum install 或是apt-get install安装一下;不是很重要的组件的话,可以先忽略。
-
2.启动Nginx。
根据如下指令,找到Nginx文件夹(前面Dockerfile设置的环境),进入/sbin文件夹,运行./Nginx,启动Nginx。
[root@6d7278eb8589 Nginx-1.17.1]# cd /usr/local/Nginx
[root@6d7278eb8589 Nginx]# ls
conf html logs sbin
[root@6d7278eb8589 Nginx]# cd sbin
[root@6d7278eb8589 sbin]# ls
Nginx Nginx.old
[root@6d7278eb8589 sbin]# ./Nginx
通过curl http://localhost命令,可以查看是否启动成功并运行正常。如下,则运行正常。
我们今天的关于DokcerFile的添加及如何生成一个自定义镜像mycentos和四的分享已经告一段落,感谢您的关注,如果您想了解更多关于CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载、CentOS zookeeper dockerfile、CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像、centos7中dockerfile方式安装nginx镜像 + 解决报错的相关信息,请在本站查询。
本文标签: