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 ...
随机推荐
- Python--subprocess系统命令模块-深入
当我们运行python的时候,我们都是在创建并运行一个进程.正如我们在Linux进程基础中介绍的那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准 ...
- Js 判断输入的验证码是否一致
实现效果: 判断输入的验证码是否一致 如果不同,alert出验证码输入有误~, 输入正确输出登录成功. <!DOCTYPE html> <html lang="en&quo ...
- 浮动IP(FLOAT IP)
主要谈一谈关于浮动IP的东西,介绍下浮动IP是什么 1.为什么要有浮动IP这个东西 现在有一个场景,在一台Linux上部署一个web应用,应用跑在tomcat里面,linux网卡上的ip是 ...
- 二分法求常数E,常数π,根号2
进行单元测试数据____________________________________ public class Test { public static void main(String[] ar ...
- Terraform Detecting Drift
转自:https://www.terraform.io/docs/extend/best-practices/detecting-drift.html 这篇文章主要说明了对于资源如何处理 read&a ...
- 06机器学习实战之SVM
对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...
- FastAdmin 开发学习给输入框加上清除功能
FastAdmin 开发学习给输入框加上清除功能 在社区上有小伙伴询问如果给输入框加上清除功能,因为有时修重新搜索时需要将输入框的内容快速清除,所以这个功能对用户非常友好. 如上图所示这种. 我看了一 ...
- KVM部署、使用、调优
背景介绍 传统数据中心面临的问题: 资源使用率低 资源分配不均 自动化能力差 初始化成本高 云计算: 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计 ...
- WebSocket概念
WebSocket 是什么? WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 ...
- bzoj 4709 [Jsoi2011]柠檬——单调栈二分处理决策单调性
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 题解:https://blog.csdn.net/neither_nor/articl ...