镜像上传和Dockerfile

Docker镜像上传与Dockerfile详解
本文详细介绍了如何在Docker Hub上注册账号并上传镜像,包括创建仓库、获取容器ID、提交容器、登录Docker Hub及推送镜像的步骤。此外,深入解析Dockerfile的常用指令,如FROM、RUN、CMD、ADD、COPY、EXPOSE、MAINTAINER和ENV,通过示例展示如何构建基于CentOS 7的Nginx镜像。

一.镜像上传

1.在https://hub.docker.com 注册一个账号

2.创建一个仓库

3.取到containerID

#docker ps

  

4.commit容器

#docker commit {containerID} rorshach/nginx:v1

  

5.登录hub docker

#docker login

  

ps:
输入账密

6.push镜像:

#docker push rorshach/nginx:v1

7.push完成后就可以在hub.docker.com中看到你的镜像了

二.Dockerfile

1.常用指令:
(1).FROM
指定基础镜像,必须放在Dockerfile第一行,表示从哪个镜像构建

如:FROM centos
FROM scratch // 表示从空白镜像开始构建

(2).RUN
执行命令
a.shell 格式: RUN <命令>
如:

RUN echo 'hello world' > /usr/share/nginx/html/index.html

  

b.exec 格式: RUN ["可执行文件", "参数1", "参数2"]
如:

RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"

每一个 RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
对于多个命令,我们可以使用&&将命令串联起来

RUN 命令1 && 命令2 && 命令3

  

(3).CMD
功能为容器启动时要运行的命令,不会创建新的镜像层
格式为以下三种:

CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2

  

如:

CMD nginx -g 'daemon off;'

  

(4).ADD 和 COPY
可以将本地的文件复制到容器中
格式:

COPY <src>... <dest>
COPY ["<src>",... "<dest>"]

  

ADD可以是远程文件,但COPY只能是本地文件;相当于scp;只是免账密

(5).EXPOSE
指定镜像程序将会在哪个端口提供服务,可以通过docker inspect <container-id>指令检索出来,EXPOSE指令实际上只是一个约定,需要在docker run 发布时以-p标志的方式暴露,上述的是小写的p需要指定主机到到虚拟到主机端口之间的映射,而大写的P是将镜像中的端口暴露到主机的随机端口,具体暴露到哪个端口可以通过docker ps查看.
如:
EXPOSE 80

(6).MAINTAINER(可选)
指定作者
如:
MAINTAINER 作者

(7).ENV
用于配置环境变量
如:
ENV JAVA_HOME=/opt/jdk-9

示例Dockerfile文件:

# base image
FROM centos:7
# MAINTAINER
MAINTAINER rorshach rorshach@mail.com

RUN yum update && rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && yum install -y nginx
CMD nginx -g 'daemon off;' #镜像启动后运行nginx

EXPOSE 80

  


2.构建

#docker build -t <镜像名称> <目录> -f <Dockerfile文件名>


如果Dockerfile的文件名为Dockerfile,则-f可以省略

 

转载于:https://www.cnblogs.com/itfenqing/p/10151532.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值