docker及dockerfile镜像(nginx示例)编写

docker的部署安装:

[root@test ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@test ~]# yum-config-manager     --add-repo     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 从17年开始,docker命名有个不同,出现了CE版本跟EE版本:CE是社区版(免费),EE是付费版(付费)
[root@test ~]# yum -y install docker-ce
# 然后进行一些简单的配置(镜像地址更改国内阿里)
[root@test ~]# mkdir -p /etc/docker
[root@test ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://jdnefphb.mirror.aliyuncs.com"]
}
EOF
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker
[root@test ~]# docker -v				# 查看是否是最新版本
Docker version 19.03.12, build 48a66213fe

接下来先写一个源码安装nginx的镜像dockerfile:

[root@test ~]# docker pull centos:7			# 先拉取个centos基础镜像,一会基于这个镜像写nginx
[root@test ~]# mkdir DockerImage			# 创建目录方便存放文件,(做事要留根!!!)
[root@test ~]# cp nginx-1.8.1.tar.gz DockerImage/	# 把nginx tar包放到跟dockerfile同一目录
[root@test ~]# cd DockerImage/

dockerfile源码模板

[root@test DockerImage]# vim Dockerfile  	# 注意,文件名可以用Dockerfile(前面D字母要大写),也可以不用,下面我会分别说明用与不用的区别。
FROM centos:7

ADD nginx-1.8.1.tar.gz /usr/local/src

ADD http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
ADD http://mirrors.aliyun.com/repo/epel-7.repo /etc/yum.repos.d/epel.repo

RUN yum -y install pcre pcre-devel openssl openssl-devel gcc-c++ autoconf automake zlib-devel libxml2 libxml2-dev libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data

WORKDIR /root


RUN useradd -M -s /sbin/nologin nginx
RUN cd /usr/local/src/nginx-1.8.1 && ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_image_filter_module && make && make install
RUN echo 1 > /usr/local/nginx/html/index.html

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

ENTRYPOINT ["nginx"]

CMD ["-g","daemon off;"]

dockerfile文件参数说明:

FROM:基于什么镜像生产的容器

ADD:把文件复制到容器里,如果是tar包便直接解压到指定目录,效果类似于tar zxvf name.tar.gz -C /root/,也可通过网络拉取文件,有wget命令的功能。

copy:单纯的cp命令,把文件原封不动的拷贝到容器里,与ADD的区别一比较就出来了。

RUN:在容器里执行的命令。

WORKDIR:工作目录。

ENV:容器系统环境。

EXPOSE:需要暴露的端口。

CMD:启动容器指定默认运行的程序。

ENTRYPOINT:类似于CMD,但是不会被docker run指令覆盖,两者可以配合使用。

构建镜像并启动验证

[root@test DockerImage]# docker build -t nginx1.8:v1 .	
# 注意!后面有个点(.),.代表当前目录,docker会自动寻找Dockerfile命名的文件,这就是为什么上面要把文件命名为此的原因;当然也可以不这么命令,把.改成filename即可,比如:docker build -t nginx1.8:v1 <filename> 这样即可

# 基于镜像生成容器
[root@test DockerImage]# docker run -it --name test_nginx -p 88:80 -d nginx1.8:v1 
bc8c703dbc4b7bd129e6989503f9c3b5261aab59d6f89b20fb900ef311fbc174

[root@test DockerImage]# docker ps		# 查看容器运行是否健康
[root@test DockerImage]# curl http://127.0.0.1:88  # 访问刚才映射出宿主机的端口,验证是否成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值