《Docekr入门学习篇》——Docker镜像制作
Docker镜像制作
Docker镜像的构建分为两种,一种是手动构建,一种是dockerfile(自动构建)
手动构建
基于centos镜像进行构建制作Nginx镜像
[root@rbtnode1 ~]# docker run --name Edward -it centos [root@429ae931a699 /]# yum install -y nginx [root@429ae931a699 /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
修改Nginx配置让它在前台运行
[root@429ae931a699 /]# vim /etc/nginx/nginx.conf ... daemon off; ... [root@rbtnode1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 429ae931a699 centos "/bin/bash" minutes ago Exited () seconds ago Edward
修改完之后commit
[root@rbtnode1 ~]# docker commit -m "My Nginx" 429ae931a699 edward/edward:v1 sha256:3240a62fc2e57466a7938af03fc21c84c24726fd200b5009530391ddb30abfb7 [root@rbtnode1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE edward/edward v1 3240a62fc2e5 seconds ago MB docker.io/nginx latest e445ab08b2be days ago MB docker.io/centos latest 9f38484d220f months ago MB #注释 -m 描述 容器ID 第一个edward是仓库的名称 第二个edward是镜像的名称 v1 标签,如果是最后一个版本我们可以打latest 启动制作好的镜像
[root@rbtnode1 ~]# docker run --name nginxv1 -d -p : edward/edward:v1 nginx 0a38af6c6eddfc3a354760282f01ff6e16b93e4f903d7c154f038d68a10f581d [root@rbtnode1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0a38af6c6edd edward/edward:v1 "nginx" seconds ago Up seconds 0.0.0.0:->/tcp nginxv1
自动构建
Dockerfile是由一行命令和语句组成的
Dockerfile构建步骤:
[root@rbtnode1 ~]# mkdir /dockerfile [root@rbtnode1 ~]# cd /dockerfile [root@rbtnode1 dockerfile]# mkdir nginx [root@rbtnode1 dockerfile]# cd nginx [root@rbtnode1 nginx]#vim Dockerfile # Dockerfile FROM centos #Maintainer MAINTAINER sjny yunweizabbix@.com #Commands RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm RUN yum install -y nginx && yum clean all RUN echo "daemon off;" >>/etc/nginx/nginx.conf ADD index.html /usr/share/nginx/html/index.html EXPOSE CMD ["nginx"] [root@rbtnode1 nginx]# echo "hello world" >index.html #井号代表注释 #Base image 除了注释的第一行,必须是FROM,意思就是我们需要告诉dockerfile基础镜像是什么 #Maintainer 维护信息 #Commands 命令 #ADD index.html 这个文件需要我们在当前目录下有才可以,我们配置我们可以准备好,然后使用ADD命令进行添加或修改 EXPOSE 对外端口号 CMD [“nginx”] 它要启动的命令是nginx (就算是nginx服务) 开始构建 docker build -t mynginx:v2 . docker run --name mynginxtest -d -p : mynginx:v2
Dockerfile参数
FROM
格式:
FROM<image>或FROM<image>:<tag>
解释:FROM是dockerfile里的第一条指令,后面跟有效的镜像名(如果该镜像你的本地镜像没有则会从远程仓库pull取)。后面的其它指令在FROM的镜像中执行。
MAINTAINER
格式:
MAINTAINER <name>
解释:指定维护者信息。
RUN
格式:
RUN <command>或 RUN[“executable”,“param1”,“param2”]
解释:运行,命令,命令较长时可以使用\来换行。推荐使用以上数组格式
CMD
格式:
CMD [“executable”,”param1”,”param2”]使用exec执行,推荐;
CMD command param1 param2 在/bin/sh 中执行,提供给需要交互的应用;
CMD [“param1”,”param2”] 提供给ENTRYPOINT的默认参数;
解释:CMD指定容器启动是执行的命令,每个dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条会被执行。如果你在启动容器的时候也指定的命令,那么会覆盖dockerfile构建的镜像里面的CMD命令。
ENTRYPOINT
格式:
ENTRYPOINT [“executable”,”param1”,”par am2”]
ENTRYPOINT command param1 param2 (shell中执行)
解释:和CMD类似都是配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。
每个dockerfile中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。ENTRYPOINT没有CMD的可替换特性,所以生产中可以同时使用ENTRYPOINT和CMD。
USER
格式:USER daemon
解释:指定运行容器时的用户名和UID。
EXPOSE
格式:EXPOSE<port> [<port>…]
解释:设置docker容器内部暴露的端口号,如果需要外部访问。还需要启动容器时增加-p或者-P参数进行分配。
ENV
格式:ENV
ENV =<value>…
解释:设置环境变量,可以在RUN之前使用,然后RUN命令时调用,容器启动时这些环境变量都会被指定。
ADD
格式:ADD <src>… <dest>
ADD [“”,. . . “”]
解释:将指定的复制到容器文件系统中
所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
如果文件是可识别的压缩格式,则docker会帮忙解压缩
VOLUME
格式:VOLUME [“/data”]
解释:可以将本地文件夹或者其他container的文件挂载到container中
WORKDIR
格式:WORKDIR/path/to/workdir
解释:切换目录,为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。
可以多次切换(相当于cd命令)
也可以使用多个WORKDIR指令,后续命令如果参数是相对路劲,则会基于之前命令指定的路径。例如:
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
则最终路劲为 /a/b/c
ONBUILD
ONBUILD指定的命令在构建镜像时并不执行,而是在它的子镜像中执行
ARG
格式:ARG<name> [=<default value>]
解释:ARG指定了一个变量在docker build的时候使用,可以使用—build-arg =来指定参数的值,不过如果构建的时候不指定就会报错。
《Docekr入门学习篇》——Docker镜像制作的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- docker研究-4 docker镜像制作
这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...
- Docker 镜像制作教程:针对不同语言的精简策略
本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...
- doris 0.9.0版本docker镜像制作与使用
1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1 Dockerfi ...
- Nginx+PHP7.3.9 Docker镜像制作
最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...
- presto-gateway 试用以及docker 镜像制作
presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...
- 实战【docker 镜像制作与使用】
一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...
- docker镜像制作及发布
以centos为例. 主要内容:安装docker,制作镜像,发布镜像. 安装docker 1. 安装docker yum install -y docker 等待一会,安装成功,查看安装列表 2. 启 ...
- docker镜像制作Dockerfile
使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...
随机推荐
- Nachos-Lab1-完善线程机制
Nachos是什么 Nachos (Not Another Completely Heuristic Operating System),是一个教学用操作系统,提供了操作系统框架: 线程 中断 虚拟内 ...
- 093-PHP数组比较
<?php $arra=array('hello','hi'); //定义多个数组 $arrb=array(1=>'hi',0=>'hello'); $arrc=array(1,2) ...
- 腾讯云服务器上搭建Jenkins配置邮箱通知
1,Jenkins 点击 系统管理 2,点击系统管理 3,配置系统管理员邮件地址 5,配置 Extended E-main Notification,(用户名不需要邮箱后缀“@163.com”, SS ...
- Flink 操作链与任务槽
Operator Chains(操作链) Flink出于分布式执行的目的,将operator的subtask链接在一起形成task(类似spark中的管道). 每个task在一个线程中执行. 将ope ...
- you-get加ffmpeg获取视频素材并转格式
最近做视频,觉得素材不好下载,下载了转格式又很麻烦,终于,在网上ob了很久的我找到了属于自己的工具. you-get视频下载 当你在网上找视频素材的时候发现了一个自己觉得很有意思的视频,但是获取这个视 ...
- oracle问题:char类型数据查询不到
select distinct id,name from test_table b where b.ID='001' ; id为char字段类型,使用该语句查询不出数据. 解决方法:加trim().改 ...
- Mysql安装维护笔记一
1.Centos7安装mysql rpm安装PHP7相应的yum源 $wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11. ...
- mac安装和启动mongodb
使用使用 brew安装mongodb 可以使用 OSX 的 brew 来安装 mongodb: sudo brew install mongodb 如果要安装支持 TLS/SSL 命令如下: sudo ...
- 基于Ambari的WebUI部署HBase服务
基于Ambari的WebUI部署HBase服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari服务 博主推荐阅读: https://www.cnblogs.co ...
- TX2_安装view_team
TX2上的帐号是:1317149963,dc200820305233 参考网站:https://blog.csdn.net/qq_33512213/article/details/90050792 安 ...