DockerFile服务
Dockerfile分为四部分:基础镜像信息、镜像创建者信息、镜像操作指令、容器启动执行指令。
一、Dockerfile的书写规则及指令使用方法
Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。
Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。
构建指令用于构建image,其指定的操作不会在运行image的容器上执行;
设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。
1、FROM(指定基础image)
该指令有两种格式:
FROM <image> 指定基础image为该image的最后修改的版本。或者:FROM <image>:<tag>
指定基础image为该image的一个tag版本。RUN后面接要执行的命令,比如,我们想在镜像中安装vim,只需在Dockfile中写入 RUN yum install -y vim2、MAINTAINER(用来指定镜像创建者信息)
格式:
MAINTAINER <name>3、RUN(安装软件用)
该指令有两种格式:
RUN <command> RUN ["executable", "param1", "param2" ... ] 4、CMD(设置container启动时执行的操作)
该指令有三种格式:CMD ["executable","param1","param2"]CMD command param1 param2当Dockerfile指定了ENTRYPOINT,那么使用下面的格式:CMD ["param1","param2"]5、ENTRYPOINT(设置container启动时执行的操作)
两种格式:ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2CMD echo “Hello, World!” ENTRYPOINT ls -l FROM ubuntu CMD ["-l"] ENTRYPOINT ["/usr/bin/ls"] 6、USER(设置container容器的用户)
指定memcached的运行用户
ENTRYPOINT ["memcached"]
USER daemon
或者
ENTRYPOINT ["memcached", "-u", "daemon"]
7、EXPOSE(指定容器需要映射到宿主机器的端口)
格式:EXPOSE <port> [<port>...] 映射一个端口
EXPOSE port1
相应的运行容器使用的命令
docker run -p port1 image
映射多个端口
EXPOSE port1 port2 port3
相应的运行容器使用的命令
docker run -p port1 -p port2 -p port3 image
还可以指定需要映射到宿主机器上的某个端口号
docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image
8、ENV(用于设置环境变量)
格式:ENV <key> <value> 设置了后,后续的RUN命令都可以使用,container启动后,可以通过docker inspect查看这个环境变量,也可以通过在docker run --env key=value时设置或修改环境变量。假如你安装了JAVA程序,需要设置JAVA_HOME,那么可以在Dockerfile中这样写:
ENV JAVA_HOME /path/to/java/dirent9、ADD(从src复制文件到container的dest路径)
格式:ADD <src> <dest> <src> 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url;
<dest> 是container中的绝对路径10、COPY指令
COPY指令和ADD指令功能和使用方式类似。只是COPY指令不会做自动解压工作。
11、VOLUME(指定挂载点)
格式:VOLUME ["<mountpoint>"]例如:
FROM base VOLUME ["/tmp/data"]运行通过该Dockerfile生成image的容器,/tmp/data目录中的数据在容器关闭后,里面的数据还存在。例如另一个容器也有持久化数据的需求,且想使用上面容器共享的/tmp/data目录,那么可以运行下面的命令启动一个容器:docker run -t -i -rm -volumes-from container1 image2 bash12、WORKDIR(切换目录)
设置指令,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效。格式:WORKDIR /path/to/workdir 在/p1/p2下执行vim a.txt
WORKDIR /p1 WORKDIR p2 RUN vim a.txt
13、ONBUILD(在子镜像中执行)
格式:ONBUILD <Dockerfile关键字> 二、dockerfile使用实例
1、创建构建镜像的工作目录
# mkdir web-nginx
# cd web-nginx/
2、配置DNS和YUM源
3、编写dockerfile文件,填写镜像内容
# vi Dockerfile
#Version:0.0.
FROM ubuntu:14.04.
MAINTAINER djl "djl@cnbicnbisoft.com"
RUN apt-get install -y nginx
RUN echo 'Hi,I am in your container' > /usr/share/nginx/html/index.html
EXPOSE
4、构建新镜像
# docker build -t djl/web-nginx:v1 .

5、查看镜像是否在本地
[root@localhost web-nginx]#
[root@localhost web-nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
djl/web-nginx v1 55fce17de945 minutes ago 206MB
6、启动构建成功的镜像
[root@localhost web-nginx]# docker run -dit -p : djl/web-nginx:v1 /bin/bash
5915c4392c39a7912c7c63dbc1d751fab042cf4b0d86893bcc623b5cf65e38bb
[root@localhost web-nginx]#
7、进入容器内启动nginx服务
[root@localhost web-nginx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5915c4392c39 djl/web-nginx:v1 "/bin/bash" seconds ago Up seconds 0.0.0.0:->/tcp dreamy_neumann
[root@localhost web-nginx]#
[root@localhost web-nginx]# docker exec -it 5915c4392c39 /bin/bash
root@5915c4392c39:/#
root@5915c4392c39:/# ./usr/sbin/nginx
root@5915c4392c39:/#
8、通过网页查看容器的nginx服务

参考博客:
https://www.cnblogs.com/kevingrace/p/6698596.html
DockerFile服务的更多相关文章
- Docker(2):使用Dockerfile创建支持SSH服务的镜像
1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...
- 构建一个可以统计 qps 的nginx服务的Dockerfile
github 项目地址: https://github.com/SilentCC/nginx_lua_qps_count nginx 是经常会用到的web 服务器,它有出色的并发性能,因此尝尝被用来当 ...
- 使用Dockerfile创建支持SSH服务的镜像
1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像. 2.首先创建一个目录ssh_centos [root@rocketmq-nameserv ...
- docker基于Dockerfile命令创建支持ssh服务的镜像
首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...
- 利用Dockerfile文件创建带有sshd服务的centos镜像
利用Dockerfile文件创建带有sshd服务的centos镜像 标签:dockerfile 1.安装docker并启动docker,不在赘述 2.创建使用Dockerfile安装sshd服务的目录 ...
- 「两」创建一个带 ssh 镜座服务(修订版)--采用 Dockerfile 创
创建目录 首先,创建一个叫做 sshd_ubuntu 的目录,用于存放我们的 Dockerfile .脚本文件.以及其它文件. $ mkdir sshd_ubuntu $ ls sshd_ubuntu ...
- 使用Dockerfile创建ssh服务的镜像02
使用Dockerfile创建ssh服务的镜像02 1:创建工作目录---一个镜像的所有文件都放这个目录下 ubuntu@ubuntu:~$ mkdir sshd_ubuntu ubuntu@ubunt ...
- docker Dockerfile学习---nginx负载均衡tomcat服务
1.此过程在nginx的基础上,也就是上篇博客写的内容. 2.创建项目目录并上传包,解压 $ mkdir centos_tomcat $ cd centos_tomcat $ tar zxvf jdk ...
随机推荐
- JS 冒泡排序法 输出最大值
<html lang="en-US"> <head> <meta charset="UTF-8"> <title> ...
- webpack执行命令参数
在webpack执行命令之后可以添加一些参数,这些参数都有自己的作用,下面是参数列表: $ webpack --config XXX.js //使用另一份配置文件(比如webpack.config2. ...
- linux运维注意事项
防火墙和selinux一定要注意 服务器或应用出现错误是一定要查看服务器运行状态是否正确,及其相关运行日志 不管什么时候,能不要特殊字符就不要用特殊字符,避免不必要的错误 在看部署文档的时候一定要认真 ...
- centos 7.0 lnmp成功安装过程
下载nginx,wget 是一个下载命令-c 是断点续传(不要也这个也可以) [root@bogon ~]# wget -c http://nginx.org/download/nginx-1.7.9 ...
- C++中的继承和多继承
一.学习笔记 1.继承 class Student : public Person { ... } 2.继承时权限派生类中可以直接访问父类的protected成员,但是不能访问其private成员,若 ...
- datetime学习
四.datetime类 (一).datetime类的数据构成 datetime类其实是可以看做是date类和time类的合体,其大部分的方法和属性都继承于这二个类,相关的操作方法请参阅,本文上面关于二 ...
- YII2常用知识点总结
YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...
- day 30 1.操作系统原理 2. Process 模块学习
进程: 起源:进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的.所以想要真正了解进程,必须事先了解操作 ...
- MongoDB journal与oplog解惑
journal journal 是 MongoDB 存储引擎层的概念,目前 MongoDB主要支持 mmapv1.wiredtiger.mongorocks 等存储引擎,都支持配置journal. M ...
- node api 之:util
util 库的使用: const util = require('util'); util 的方法: 方法 含义 util.inherits(constructor, superConstructor ...