基于Dockerfile创建docker镜像

0、先创建一个文件夹img

mkdir img

  

1、Linux上新建3个文件

2、文件内容分别写入

(1)Dockerfile中

# 基于的基础镜像centos
FROM centos
# 维护该镜像的用户信息
MAINTAINER The CentOS Project<cloud-ops@centos.org>
# 镜像中的操作指令:安装apache软件包
RUN yum -y update
RUN yum -y install httpd
# 开启镜像中的80端口
EXPOSE 80
# 复制网址首页文件
ADD index.html /var/www/html/index.html
# 将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 775 /run.sh
# 启动容器时执行脚本
CMD ["/run.sh"]

  

(2)index.html中

web test

  

(3)run.sh中

#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

说明:

rm -rf /run/httpd/*     清理httpd的缓存
exec /usr/sbin/apachectl -D FOREGROUND          启动apache服务

3、使用Dockerfile生成镜像

docker build -t httpd:centos .

 或者

docker build -f DockerfilePHP -t httpd:centos .

  

-t  指定镜像标签

-f 指定生成镜像默认的依赖文件。不使用时,默认依赖当前路径下的Dockerfile文件。

后面就会使用刚才编写的Dockerfile自动创建生成镜像。

可以看到整个创建过程中,每运行一次Dockerfile中的指令,都会给初始镜像加上新的一层。

 

4、使用新的镜像运行容器

docker run -dit -p 49180:80 httpd:centos

  

运行此命令前:先检查

(1)docker images  新建镜像是否存在

(2)netstat -an |grep 49180     宿主机中端口49180是否被占用,如果端口被占用就换一个端口号

注意:80端口是容器中的端口,不用管

或者

docker run -dit --net=host  httpd2:centos

  

--net=host 表示共享宿主机的网卡和端口,这样就不用做映射了。即docker内部80就会自动映射到外部80。

 

运行此命令后:检查

docker  ps -a

看看该容器是否在运行(up)

 

5、防火墙开放宿主机的端口49180

firewall-cmd --zone=public --list-ports 
firewall-cmd --zone=public --add-port=49180/tcp --permanent 
firewall-cmd --reload 

  

6、浏览器访问

ip:49180

 

posted @ 2019-04-16 10:59  安迪9468  阅读(1400)  评论(0编辑  收藏  举报