一.镜像上传

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可以省略

镜像上传和Dockerfile的更多相关文章

  1. alpine制作jdk、jre镜像、自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  2. docker自定义镜像上传阿里云

    1.alpine制作jdk镜像 2.Alpine制作jre镜像(瘦身) 3.Docker镜像上传至阿里云 alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻 ...

  3. Docker之Alpine制作jre镜像(瘦身)+自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  4. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像上传-11

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像上传-11 欢迎加QQ群:1026880196 进行交流学习 镜像上传 #controller1 ...

  5. 如何将docker 镜像上传到docker hub仓库

    如何将docker 镜像上传到docker hub仓库 目录 如何将docker 镜像上传到docker hub仓库 背景 1.注册docker hub账号 2.docker hub上创建仓库 3.d ...

  6. Openstack的镜像上传原理

    openstack的horizon的上传镜像流程 通过html的form表单上传文件 先上传到horizon指定的临时目录,存储起来 通过glance-api请求接口 实际上glance-api也是提 ...

  7. docke镜像上传到dockerhub仓库和阿里云docker仓库的方法

    操作指南   1.  登录阿里云docker registry: $ sudo docker login --username=linjiaxin897591495 registry.cn-hangz ...

  8. Docker 镜像上传到docker hub仓库

    1 先创建docker hub 帐号 ,并创建仓库 https://hub.docker.com/ 首先你需要一个docker hub 帐号,记住username,password,email .后面 ...

  9. jenkins构建docker镜像上传到harbor并发布到kubernetes

    很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...

随机推荐

  1. POJ 1258 + POJ 1287 【最小生成树裸题/矩阵建图】

    Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet c ...

  2. MYSQL注入天书之基础知识

    第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表 ...

  3. Linux命令之nice和renice

    (1).nice命令 nice [选项] [命令 [参数]] 在执行程序之前,改变优先级.以调整过的优先级运行命令.如果没有给出命令,就显示当前的优先级.优先级范围从-20到19,越小优先级越高,默认 ...

  4. python itertools的使用(转)

    1. chain的使用 import itertools listone = ['a','b','c'] listtwo = ['11','22','abc'] for item in itertoo ...

  5. CodeForces - 1004E Sonya and Ice Cream

    题面在这里! 挺智障的一个二分...我还写了好久QWQ,退役算啦 题解见注释... /* 先对每个点记录 向子树外的最长路 和 向子树内最长路,然后二分. 二分的时候枚举链的LCA直接做就好啦. */ ...

  6. [UOJ217]奇怪的线段树

    如果一个节点是$0$但它子树内有$1$那么无解,否则我们只需把那些是$1$但子树内没有其他$1$的节点(这些区间是被定位的区间)都访问一遍即可 根据ZKW线段树定位区间的过程,可以发现一段(从左到右) ...

  7. 【高斯消元解xor方程组】BZOJ2466-[中山市选2009]树

    [题目大意] 给出一棵树,初始状态均为0,每反转一个节点的状态,相邻的节点(父亲或儿子)也会反转,问要使状态均为1,至少操作几次? [思路] 一场大暴雨即将来临,白昼恍如黑夜!happy! 和POJ1 ...

  8. 1.5 (SQL学习笔记)事务处理

    一.事务 1.1事务概念 事务处理可以用来维护数据库系统数据的完整性,它保证一组SQL语句要么全部都执行, 要么全部都不执行.(例如一批SQL语句,只要有一个执行失败就全部不执行,即回到失败前的状态 ...

  9. 计算标准差 Exercise07_11

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:计算标准差 * */ public class Exercise07_11 ...

  10. Problem B: 零起点学算法92——元素前移1位

    #include<stdio.h> int main() { ],b[]; while(scanf("%d",&n)!=EOF) { ;i<n;i++) ...