关于docker构建镜像
今天正好看到这一块了,记录一下,希望可以帮助到大家。
构建Dockerfile
先来看一个示例:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#第一行必须基于某个镜像
FROM java:8-jre
#维护者信息
MAINTAINER dtelec developer
#镜像的操作指令
ADD ./target/icmes-schedule-service.jar /app/
#容器启动时执行指令
CMD ["java", "-Xmx200m", "-jar", "/app/icmes-schedule-service.jar"]
#暴露出来对外的端口
EXPOSE 9800
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- FROM
- 格式为FROM<image>或者FROM<image>:<tag>
- MAINTAINER
- 格式为MAINTAINER<name>,指定维护者信息、
- RUN
- 格式为RUN<command>或者["executable","param1","param2"].
- CMD
- CMD["executable","param1","param2",]使用exec执行,推荐方式。
- 指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则最后一条执行。(会被启动时指定的命令覆盖)
- EXPOSE
-
格式:EXPOSE <port> [ <port> ...]
告诉Docker服务端暴露端口,在容器启动时需要通过 -p 做端口映射
-
- ENV
格式:ENV <key> <value>
指定环境变量,会被RUN指令使用,并在容器运行时保存
- ADD
格式:ADD <src> <dest>
复制指定的<src>到容器的<dest>中,<src>可以是Dockerfile所在的目录的一个相对路径;可以是URL,也可以是tar.gz(自动解压)
- COPY
格式:COPY <src> <dest>
复制本地主机的 <src> ( 为 Dockerfile 所在目录的相对路径)到容器中的 <dest> (当使用本地目录为源目录时,推荐使用 COPY)
- ENTRYPOINT
格式:ENTRYPOINT ["","",""]
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。(每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效)
- VOLUME
格式:VOLUME ["/mnt"]
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
- USER
格式:USER daemon
指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
- WORKDIR
格式:WORKDIR /path/to/workdir
为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。(可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径, 则会基于之前命令指定的路径)
- ONBUILD
格式:ONBUILD [INSTRUCTION]
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令
例如构建自己的镜像:
编写dockerfile如下:
#基于centos7构建
FROM centos7
#维护者
MAINTAINER pray
#安装依赖
RUN yum -y install tar cpp binutiles glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
#创建安装目录
RUN mkdir -p /redis/data && cd /redis #拷贝redis的安装包
COPY ./redis-5.tar.gz /redis #解压
RUN cd /redis && tar -xvf redis5.tar.gz && rm -rf redis5.tar.gz && cd redis5 #编译、安装
RUN cd /redis/redis5 && make && make install #复制配置文件到/redis中,并且修改iredis为后台运行
RUN cp /redis/redis5/redis.conf /redis/ && echo "daemonize yes" >> redis.conf
#设置数据挂载目录以及工作目录
VOLUME /redis/data
WORKDIR /redis/data #容器启动后执行该命令
ENTRYPOINT ["/user/local/bin/redis-server","/redis/redis.conf"]
#设置对外的端口号
EXPOSE 6379 构建命令
docker build -t registry.cn-hangzhou.aliyuncs.com/for-docker/redis 因为centos很大,所以我也没有执行玩dockerfile ,不能保证一定正确;
今天就先记录到这把
关于docker构建镜像的更多相关文章
- Docker 构建镜像
Docker 构建镜像 1.首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容. 下面三行代码表示: 1.这三个路径要排除,不要打包进入 image 文件. 2.如果你 ...
- docker 构建镜像 centos7 nginx php
#docker 构建镜像(Dockerfile) centos 7.4.1078镜像制作 nginx镜像制作(以前面centos7镜像为基础) Nginx+php镜像制作 更多操作实例,查看git里的 ...
- Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像)
Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像) 一.geoserver+openlayers+mysql主要设计思想 1.1 Geo ...
- docker构建镜像
Docker 提供了两种构建镜像的方法: docker commit 命令Dockerfile 构建文件 示例: Dockerfile FROM golang:1.7.5 #基础镜像 RUN apt- ...
- docker构建镜像 (3)
使用Dockerfile构建镜像 Dockerfile使用DSL(Domain Specific Language)来构建一个Docker镜像,只要编辑好了Dockerfile文件,就可以使用dock ...
- Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站
参考原文链接:https://www.jianshu.com/p/e6b7e68f2ba7 来自<第一本Docker书>,我觉得很有趣,就记录一下 准备国内ubuntu镜像 每次构建Ubu ...
- Docker 构建网络服务后本机不能访问
Docker 构建网络服务后本机不能访问 起因 使用tornado构建了一个服务,测试都没有问题 使用docker构建镜像,使用docker run image_name启动服务 使用浏览器访问 12 ...
- 使用Dockerfile构建镜像-Docker for Web Developers(5)
1.理解Dockerfile语法 语法命令 命令功能 举例 FROM 所有的dockerfile都必须以FROM命令指定镜像基于哪个基础镜像来制作 FROM ubuntu:14:04 MAINTAIN ...
- 从零开始构建docker基础镜像
段子 今年基本已经结束了,我问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我 ...
随机推荐
- idea 提交 Push rejected: Push to origin/master was rejected
idea中,发布项目到码云上,当时按照这样的流程添加Git,然后push,提示:push to origin/master war rejected". 解决方案如下: 1.切换到自己项目所 ...
- 免费的协作和协同办公软件平台onlyoffice轻松部署
一般说,协同和协作是不同的,协同是指文档基于一个版本,大家都是基于这个版本来添加,而且大家只能引用这个文档,却不能在上面直接添加,而且只能一个人添加,即锁住,不让其他人添加了. 而协作就不同了,大家同 ...
- android 性能优化 -- 启动过程 冷启动 热启动
一.应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动. 2.热启动:当启 ...
- Python Word2Vec使用训练好的模型生成词向量
# 文本文件必须是utf-8无bom格式 from gensim.models.deprecated.word2vec import Word2Vec model = Word2Vec.load( ' ...
- java中Proxy(代理与动态代理)
转自: https://blog.csdn.net/pangqiandou/article/details/52964066 一.代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习 ...
- Python 面向对象补充
什么是面向对象编程 类 + 对象 class 类: def 函数1(): pass def 函数2(): pass obj是对象, 实例化的过程 obj = 类() obj.函数1() 例1 , 某些 ...
- Oracle EBS OPM 查询现有量
--查询现有量 --created by jenrry DECLARE p_inventory_item_id NUMBER := 231652; --NOT NULL p_organization_ ...
- IE中操作粘贴板复制和粘贴
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wc 统计文件的行数,字数,字符
格式:wc 参数 文件 默认统计文件的行数,字数,字符. -l 统计有多少行数 -c 统计有多少个字节 -m 统计有多少个字符 -w 统计有多少个字数
- sql点滴—mysql中查询表的信息
mysql中查询表的信息 查询mysql表字段信息的sql语句 SHOW DATABASES //列出 MySQL Server 数据库. SHOW TABLES [FROM db_name] //列 ...