给你一个参考:
docker封装一个apache的应用
1.自定义镜像模版:
[root@coker1 ~]# docker rm $(docker ps -qa)
[root@coker1 ~]# mkdir king
[root@coker1 ~]# cd king
[root@coker1 king]# touch Dockerfile
[root@coker1 king]# vim Dockerfile
FROM centos
RUN rm -f /etc/yum.repos.d/*.repo
ADD local.repo
/etc/yum.repos.d/local.repo
RUN yum install net-tools vim-enhanced
psmisc iproute -y
:wq
[root@coker1 king]# cp /etc/yum.repos.d/dvd.repo
local.repo
[root@coker1 king]# docker build
-t myos:latest
.
Successfully built 912024d5da2e
封装http服务:
[root@coker1 xo]# vim Dockerfile
FROM myos
RUN yum install -y httpd
RUN echo "hello nsd1804" >
/var/www/html/index.html
WORKDIR /var/www/html
//永远保持在当前目录
RUN 是执行完命令就会退回上一级命令
RUN echo "hello nsd1804" >
index.html
ENV
EnvironmentFile=/etc/sysconfig/httpd
EXPOSE 80
CMD ["/usr/sbin/httpd",
"-DFOREGROUND"]
:wq
停止和删除当前的所有容器:删除以前久的容器:
[root@coker1 xo]# docker stop
$(docker ps -q)
[root@coker1 xo]# docker rm $(docker ps -aq)
[root@coker1 xo]# docker rmi
myos:httpd
编排容器的命令(当前目录下运行)
[root@coker1 xo]# docker build -t myos:httpd
.
后台运行容器:
[root@coker1 xo]# docker run -d myos:httpd
查看容器的IP
[root@coker1 xo]# docker inspect
9ca33ba7ad74a15f299ebd463e2c3f1ec4f1db1a59b5900527da5
查看http的测试:
[root@coker1 xo]# curl -i
http://172.17.0.2
HTTP/1.1 200 OK
Date: Wed, 22 Aug 2018 04:35:18 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Wed, 22 Aug 2018 04:33:50 GMT
ETag: "e-573fea626c780"
Accept-Ranges: bytes
Content-Length: 14
Content-Type: text/html; charset=UTF-8
hello nsd1804
收起1.确认应用是有状态还是无状态
2.针对有状态的应用需要通过存储卷进行挂载,不然容器销毁后持久化的东西将不再存在。具体参考https://docs.docker.com/storage/#next-steps
docker应用打包推荐使用docker file,具体参考https://docs.docker.com/get-started/part2/#dockerfile
针对基础镜像,推荐使用(企业)精简版而非自己基于原始镜像进行安装,避免镜像过大及安全性问题