最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Dockerfile构建镜像

来源:博客园


(资料图)

一、构建Apache镜像

cd /opt/#建立工作目录mkdir /opt/apachecd apache/ vim Dockerfile#基于的基础镜像FROM centos:7#维护镜像的用户信息MAINTAINER this is apache image #镜像操作指令安装Apache软件RUN yum install -y httpd#开启80端口EXPOSE 80#复制网站首页文件ADD index.html /var/www/html/ ##方法一:-----------------------------------------------------------------------------#将执行脚本复制到镜像中ADD run.sh /run.shRUN chmod +x /run.sh#启动时执行脚本CMD ["/run.sh"]----------------------------------------------------------------------------- ##方法二:-----------------------------------------------------------------------------ENTRYPOINT [ "/usr/sbin/apachectl" ]CMD ["-D","FOREGROUND"]———————————————— ##准备执行脚本vim run.sh#!/bin/bashrm -rf /run/httpd/* #清理httpd的缓存/usr/sbin/apachectl -D FOREGROUN #指定为前台运行#因为Docker容器仅在它的1号进程(PID为1) 运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。 //准备网站页面echo "this is test dockerfile web" > index.html //生成镜像docker build -t httpd:centos7 . #注意!!!末尾的“.”不要忘记 //新镜像运行容器docker run -d -p 1314:80 httpd:centos7 #大写P随机端口,小写P指定端口 //浏览器访问测试http://192.168.10.10:1314

二、构建SSH镜像

mkdir /opt/sshdcd /opt/sshd vim Dockerfile#第一行必须指明基于的基础镜像FROM centos:7#作者信息MAINTAINER this is ssh image #镜像的操作指令RUN yum -y updateRUN yum -y install openssh* net-tools lsof telnet passwdRUN echo "abc123" | passwd --stdin rootRUN sed -i "s/UsePAM yes/UsePAM no/g" /etc/ssh/sshd_config                      #不使用PAM认证RUN sed -ri "/^session\s+required\s+pam_loginuid.so/s/^/#/" /etc/pam.d/sshd                      #取消pam限制RUN ssh-keygen -t rsa -A                                         #生成密钥认证文件RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.sshEXPOSE 22CMD ["/usr/sbin/sshd" , "-D"]  //生成镜像docker build -t sshd:centos . //启动容器并修改root密码docker run -d -P sshd:centosdocker ps -assh localhost -p 49153

注:yum -y update(所有都升级和改变)升级所有包,系统版本和内核,改变软件设置和系统设置。这里因为升级太浪费时间,所以没升级。

三、构建Systemctl镜像

mkdir /opt/systemctlcd /opt/systemctl vim Dockerfile FROM sshd:centosMAINTAINER this is systemctl image ENV container docker#除了systemd-tmpfiles-setup.service,删除其它所有文件RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*; \rm -f /etc/systemd/system/*.wants/*; \rm -f /lib/systemd/system/local-fs.target.wants/*; \rm -f /lib/systemd/system/sockets.target.wants/*udev*; \rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \rm -f /lib/systemd/system/basic.target.wants/*;\rm -f /lib/systemd/system/anaconda.target.wants/*;VOLUME [ "/sys/fs/cgroup" ]#CMD ["/usr/sbin/init"] //生成镜像docker build -t systemd:centos . //启动容器,并挂载宿主机目录挂载到容器中,和进行初始化docker run --privileged -dit -P -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemctl:centos /sbin/init#--privileged:使container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。 docker ps -a //进入容器docker exec -it a0d624d2bfa9 bash systemctl status sshd 方法二:docker run -d -P --privileged sshd:centos /usr/sbin/init &

docker run中-v参数的用法解释宿主机绑定: -v::[rw|ro]表示宿主目录表示容器目录

四、构建Nginx镜像

mkdir /opt/nginxcd /opt/nginx/cp /opt/nginx-1.12.0.tar.gz /opt/nginx vim Dockerfile #基于基础镜像FROM centos:7#用户信息MAINTAINER this is nginx image #添加环境包RUN yum -y updateRUN yum -y install pcre-devel zlib-devel gcc gcc-c++ makeRUN useradd -M -s /sbin/nologin nginx#上传nginx软件压缩包,并解压ADD nginx-1.12.0.tar.gz /usr/local/src/#指定工作目录WORKDIR /usr/local/src/nginx-1.12.0RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATH#指定http和https端口EXPOSE 80EXPOSE 443RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf            #关闭 nginx 在后台运行#添加宿主机中run.sh到容器中ADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"]#CMD ["/usr/local/sbin/nginx", "-g", "daemon off;"]  vim run.sh#!/bin/bash/usr/local/nginx/sbin/nginx //创建新镜像docker build -t nginx:centos . docker run -d -P nginx:centos docker ps -ahttp://192.168.10.10:32769

关键词: 操作指令 一个普通