镜像上传和Dockerfile
一.镜像上传
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的更多相关文章
- alpine制作jdk、jre镜像、自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...
- docker自定义镜像上传阿里云
1.alpine制作jdk镜像 2.Alpine制作jre镜像(瘦身) 3.Docker镜像上传至阿里云 alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻 ...
- Docker之Alpine制作jre镜像(瘦身)+自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像上传-11
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像上传-11 欢迎加QQ群:1026880196 进行交流学习 镜像上传 #controller1 ...
- 如何将docker 镜像上传到docker hub仓库
如何将docker 镜像上传到docker hub仓库 目录 如何将docker 镜像上传到docker hub仓库 背景 1.注册docker hub账号 2.docker hub上创建仓库 3.d ...
- Openstack的镜像上传原理
openstack的horizon的上传镜像流程 通过html的form表单上传文件 先上传到horizon指定的临时目录,存储起来 通过glance-api请求接口 实际上glance-api也是提 ...
- docke镜像上传到dockerhub仓库和阿里云docker仓库的方法
操作指南 1. 登录阿里云docker registry: $ sudo docker login --username=linjiaxin897591495 registry.cn-hangz ...
- Docker 镜像上传到docker hub仓库
1 先创建docker hub 帐号 ,并创建仓库 https://hub.docker.com/ 首先你需要一个docker hub 帐号,记住username,password,email .后面 ...
- jenkins构建docker镜像上传到harbor并发布到kubernetes
很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有 ...
随机推荐
- Flask实战第44天:完成前台注册功能
注册功能后端逻辑 用户注册要把注册的表单提交上来,因此,我要先对表单进行验证,编辑front.forms from apps.forms import BaseForm from wtforms im ...
- 【Tarjan算法】【DFS】Petrozavodsk Summer Training Camp 2016 Day 9: AtCoder Japanese Problems Selection, Thursday, September 1, 2016 Problem B. Point Pairs
这份代码可以作为找割边的模板.割边分割出来的部分是无向图的 边-双连通分量. 平面上2*n+1个点,在同一横坐标上的点之间可以任意两两匹配.同一纵坐标上的点之间也可以.问你对于所有的点i,输出i被移除 ...
- 【转载】Java中String类的方法及说明
转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一. String sc_ ...
- Html 事件列表
Html 事件列表 一般事件:onClick HTML: 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick HTML: 鼠标双击事件onMouseDown HTML: 鼠标上的按 ...
- Java中的文件操作(一)RandomAccessFile
今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...
- #iOS问题记录# UITextview富文本链接,禁止长按事件
UITextView的富文本组装,添加图片点击事件,启动 - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *) ...
- Matlab中如何读取.dat文件
处理movielens1M数据集 中间有个双冒号,直接用load的只读取第一列,这时候我们可以用dlmread(中间是l不是i),如下图,只需要提取1 3 5列就好了.
- new placement 的使用
#include <iostream> #include "TModel.h" int main() { ]; std::cout<<"Sourc ...
- U-Boot添加menu命令的方法及U-Boot命令执行过程
转;http://chenxing777414.blog.163.com/blog/static/186567350201141791224740/ 下面以添加menu命令(启动菜单)为例讲解U-Bo ...
- 乐观锁悲观锁对应的JAVA代码和数据库
乐观锁悲观锁是一种思想.可以用在很多方面. 比如数据库方面.悲观锁就是for update乐观锁就是 version字段 JDK方面:悲观锁就是sync乐观锁就是原子类(内部使用CAS实现) 本质来说 ...