dockerfile制作镜像

镜像可以从docker hub下载,也可以通过编写dockerfile制作。

制作一个基于centos的http web 服务器。

1、创建工作目录

[root@openstack ~]# mkdir /docker-built

[root@openstack ~]# cd /docker-built/

2、编辑Dockerfile

[root@openstack docker-built]# touch Dockerfile

[root@openstack docker-built]# vim Dockerfile
FROM docker.io/centos:latest
MAINTAINER thunder
RUN yum -y install httpd
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html
注释:

FROM docker.io/centos:latest    基于那个镜像来制作
MAINTAINER thunder                镜像制作者
RUN yum -y install httpd          
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html

ADD将文件<src>拷贝到新产生的镜像的文件系统对应的路径<dest>。所有拷贝到新镜像中的
文件和文件夹权限为 0755,uid 和 gid 为 0

3、创建 start.sh 脚本启劢 httpd 服务和 apache 默认首页 index.html 文件

echo "/usr/sbin/httpd -DFOREGROUND" > start.sh
注:/usr/sbin/httpd -DFOREGROUND 相当于执行了 systemctl start httpd

[root@openstack docker-built]# chmod a+x start.sh
[root@openstack docker-built]# echo 'docker image build test' > index.html
4、使用命令 build 来创建新的 image
[root@openstack docker-built]# docker build -t centos-httpd ./
查看镜像列表:

[root@openstack ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                latest              b84e9a9a290f        23 hours ago        333 MB
centos-httpd        latest              b84e9a9a290f        23 hours ago        333 MB
docker.io/centos    latest              75835a67d134        3 weeks ago         200 MB

这里一个镜像就制作好了。

[root@openstack ~]# docker save b84e9a9a290f > /opt/centos-httpd.tar   可以把制作好的镜像保存起来,以后要是使用的话就可以导入直接使用了。

启动一个容器

[root@openstack ~]# docker run -d -p 80:80 --name httpd centos-httpd /bin/bash -c /usr/local/bin/start.sh
WARNING: IPv4 forwarding is disabled. Networking will not work.
a047b20f8f83bd06da48882f0b51c05915a69ac184e31f7e25110e219e739d30
遇到该问题解决办法:

[root@openstack ~]# vim  /usr/lib/sysctl.d/00-system.conf   在末尾添加一行:

net.ipv4.ip_forward=1

[root@openstack ~]# systemctl restart network
然后删除了之前创建的容器在重新创建。

[root@openstack ~]# docker run -d -p 80:80 --name httpd centos-httpd /bin/bash -c /usr/local/bin/start.sh
查看一下创建的容器:

[root@openstack ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
c40462185615        centos-httpd        "/bin/bash -c /usr..."   4 minutes ago       Up 4 minutes        0.0.0.0:80->80/tcp   httpd
然后可以在页面访问:

这个就是之前变天dockerfile时创建的首页。

原文地址:https://www.cnblogs.com/winter1519/p/9910343.html