docker–依托dockerfile进行打包镜像

docker–依托dockerfile进行打包镜像 转载自:菜鸟博客

https://birdteam.net/132835

近几年,越来使用越广泛。我们先简单的知道一下docker的主要三个概念名词,仓库(repository)、容器(container)、镜像(image)。概念请查看官方文档,由于字(我)数(非)要(常)求(懒),这里不一一详细说明。

简单的说就是,从dockerhub中pull一个镜像过来,依托镜像给做成容器。

上图:

这张高大上的图,想表明的就是一个容器(container)都是以镜像层去打包的。

 

OK!简单的概念性东西咱不做具体讲解,如今这么火爆的技术,各种分分钟入门的文章随处可见。我不想做同质化,直接上干货,如何利用Dockerfile创建自己的基于Centos7打包nginx镜像。

这里在多说一句,既然容器都是以镜像层去打包的,镜像层越少,镜像也就越小,所以写Dockerfile的时候请一定惜字如金!!惜字如金!!

 

创建工作目录(这里注意所有的文件包括所需要的安装包全部在这个目录内)

 
 
  1. #mkdir /root/centos_nginx
  2. #cd /root/centos_nginx

下载一个nginx的tar包

 
 
  1. #wget http://nginx.org/download/nginx-1.14.0.tar.gz

准备就绪,开始编写Dockfile:

 
 
  1. #vim Dockerfile
 
 
  1. FROM centos:latest
  2. #基于centos镜像
  3. LABEL maintainer="Ace zzflace@163.com"
  4. #标注作者联系方式等信息
  5. WORKDIR /usr/local/src/
  6. #当前工作目录
  7. ADD nginx-1.14.0.tar.gz ./
  8. #本地文件在当前目录,ADD则直接解压到当前工作目录
  9. WORKDIR nginx-1.14.0/
  10. #工作目录进入到解压后目录
  11. RUN yum install -y gcc gcc-c++ && \
  12. #运行shell命令
  13. yum install -y pcre pcre-devel && \
  14. yum install -y zlib zlib-devel && \
  15. yum install -y openssl openssl-devel libssl-dev && \
  16. ./configure --prefix=/usr/local/nginx && \
  17. make && make install
  18. EXPOSE 80
  19. #暴露端口为80

准备工作已经做好了,开始创建镜像

 
 
  1. #docker build –t my_nginx:v1-1 ./
  2. #按照当前目录内dockerfile打包镜像,名字为my_nginx:v1-1

查看镜像是否打包完成

 
 
  1. # docker image ls
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. my_nginx v1-1 d1bcadfaa3cc 2 hours ago 369MB
  4. centos latest 1e1148e4cc2c 7 weeks ago 202MB

镜像已经准备好了,开始创建容器

 
 
  1. # docker run --name Ace_nginx1 -d -it -p 8080:80 my_nginx:v1-1
  2. --name 指定容器名称 -d 后台运行 i 交互模式 t tty p指定映射端口 docker80端口映射到宿主机的8080端口 ,最后指定镜像名称

查看当前存在的容器

 
 
  1. # docker container ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. a528460856c4 my_nginx:v1-1 "/bin/bash" 2 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp Ace_nginx1

可以看到刚创建的容器,现在进入到容器中

 
 
  1. # docker exec -it a528460856c4 /bin/bash
  2. 这里注意:ID号就是上面查看到的容器的ID

容器内启动nginx并确认

 
 
  1. # /usr/local/nginx/sbin/nginx
  2. # ps -ef | grep nginx
  3. root 32 0 0 17:04 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  4. nobody 33 32 0 17:04 ? 00:00:00 nginx: worker process

至此,基于centos的nginx容器已经启动完成,测试吧:


 
 
  1. 先在容器内测试:
  2. # curl http://localhost:80
  3. 我们可以看到nginx欢迎界面的源码了

最后用浏览器访问宿主机的8080端口,也已经可以看到nginx欢迎界面了!

大功告成!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值