Docker的Dockerfile

Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像。

1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;

2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;

3、对于运维人员:在部署时,可以实现应用的无缝移植。

1、常用命令

Dockerfile中使用频繁的命令

命令 作用
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录(一进容器就进这个目录)
# 举例:实际Dockerfile是什么样子的

# 文件名必须叫 Dockerfile

FROM python:3.6
MAINTAINER lqz
RUN pip install django==1.11.9 -i https://pypi.doubanio.com/simple
RUN mkdir /home/donner # 创建这个文件夹
WORKDIR /home # 进入容器后直接进入home目录
ADD a.tar # 等价于先copy a.tar再 tar a.tar解压

2、使用Dockerfile创建镜像

当你有了Dockerfile文件后,你就可以通过这个文件创建镜像了。

# 通过Dockerfile创建镜像。注意后边的空格和点,不要省略
docker build -t='镜像名' . [root@alicentos ~/test]# docker build -t='django1.11.9' .
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM python:3.6
---> 1daf62e8cab5
Step 2/5 : MAINTAINER donner
---> Running in 6f9c77f42cc8
Removing intermediate container 6f9c77f42cc8
---> 918405cff10a
Step 3/5 : RUN pip install django==1.11.9 -i https://pypi.doubanio.com/simple
---> Running in 07e621fba5b9
Looking in indexes: https://pypi.doubanio.com/simple
Collecting django==1.11.9
Downloading https://pypi.doubanio.com/packages/c8/a6/291039f0ce4b9818e0399359866337e6dfe9c0e23d8d94f00e657edbfcd8/Django-1.11.9-py2.py3-none-any.whl (6.9 MB)
Collecting pytz
Downloading https://pypi.doubanio.com/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509 kB)
Installing collected packages: pytz, django
Successfully installed django-1.11.9 pytz-2019.3
Removing intermediate container 07e621fba5b9
---> 01367e1b5832
Step 4/5 : RUN mkdir /home/donner
---> Running in 705bd8f7ab90
Removing intermediate container 705bd8f7ab90
---> 9d8734c77e0b
Step 5/5 : WORKDIR /home
---> Running in d3f874dfba6a
Removing intermediate container d3f874dfba6a
---> 8dec7aace37d
Successfully built 8dec7aace37d
Successfully tagged django1.11.9:latest
[root@alicentos ~/test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
django1.11.9 latest 8dec7aace37d 10 seconds ago 950MB
[root@alicentos ~/test]#
[root@alicentos ~/test]# docker run -it --name=mydjango django1.11.9 /bin/bash
root@9dd41dc07634:/home# ls
donner
root@9dd41dc07634:/home# pip list
Package Version
---------- -------
Django 1.11.9
pip 20.0.2
pytz 2019.3
setuptools 45.2.0
wheel 0.34.2
root@9dd41dc07634:/home# 然后就可以通过这个镜像创建容器了!

Dockerfile怎么用的更多相关文章

  1. 如何用Dockerfile创建镜像

    本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5181222.html 创建镜像的目的 首先说DockerHub或其它一些镜像仓库已经提供了够多的镜像,有 ...

  2. Dockerfile初探

    git上的asp.net samples工程已经写好了docker file,内容是如下   //任何dockersfile都要以FORM开头,约定是用大写. FROM microsoft/aspne ...

  3. ubuntu 16.04 Dockerfile 安装mysql

    默认上MariaDB的包并没有在Ubuntu仓库中.要安装MariaDB,我们首先要设置MariaDB仓库. 配置MariaDB 仓库 # apt-get install software-prope ...

  4. 分析Mysql 5.6的Dockerfile

    Docker官方的Mysql镜像的Dockerfile托管在Github上,地址如下: https://github.com/docker-library/mysql/tree/5836bc9af9d ...

  5. 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

    Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...

  6. Docker dockerfile创建Eclipse镜像初试

    抽空初步阅读了Docker技术入门与实战 [Kindle电子书] http://www.cnblogs.com/2018/p/4600116.html 现在想首先在开发环境下引入统一的环境,由于开发中 ...

  7. 安装Nginx的Dockerfile实例

    #################################################Dockerfile to build Nginx Installed Containers##Bas ...

  8. 测试dockerfile

    测试dockerfile是否ok(比如我的Dockerfile在deploy目录下) docker build -t my_image -f deploy/Dockerfile . docker im ...

  9. 通过Dockerfile建立.NET Core mvc Image

    生成.NET core mvc code docker run -itd microsoft/dotnet:latestdocker psdocker attach containeridmkdir ...

  10. .Net Core+cenos7+Docker+Dockerfile 部署实践

    因为这段时间比较忙,同时也在抽时间将开发框架转移到 .net Core 上 所以写博客的时间就少了,这次我利用dockerfile成功将.net Core程序部署到了cenos7容器中,特抽时间把我的 ...

随机推荐

  1. HanLP 下载和配置

    方式一.Maven 为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入: <dependency> <groupId>com.hankcs</ ...

  2. Aery的UE4 C++游戏开发之旅(5)字符&字符串

    目录 TCHAR 字符 使用TEXT()宏包裹字符串字面量 转换字符编码 FString 字符串 FString 剖析 FString 使用 FName 字符串 FName 剖析 FName 使用 F ...

  3. A - A Flipping Game

    这道题判断如何选择区间进行01变换让数列中的1个数最多,可以用暴力做法来做,每选择一个区间求出一个值,最后找到一个最大值. Iahub got bored, so he invented a game ...

  4. hdu 1696 Oulipo(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意 查询字符串 $p$ 在字符串 $s$ 中出现了多少次,可重叠. 题解 KMP模板题. Ti ...

  5. Codeforces Round #547 (Div. 3) D. Colored Boots (贪心,模拟)

    题意:有两个字符串,两个字符串中的相同字符可以相互匹配,\(?\)可以和任意字符匹配,输出最大匹配的字符数量和它们分别两个字符串中的位置. 题解:很容易贪心,我们先遍历第一个字符串,然后在第二个字符串 ...

  6. python中schedule模块的简单使用 || importlib.import_module动态导入模块

    1 import schedule 2 import time 3 4 def start(): #定义一个函数 5 print("****") 6 7 8 if __name__ ...

  7. Kafka官方文档V2.7

    1.开始 1.1 简介 什么是事件流? 事件流相当于人体的中枢神经系统的数字化.它是 "永远在线 "世界的技术基础,在这个世界里,业务越来越多地被软件定义和自动化,软件的用户更是软 ...

  8. 二进制安装kubernetes(七) 部署知识点总结

    1.k8s各个组件之间通信,在高版本中,基本都是使用TSL通信,所以申请证书,是必不可少的,而且建议使用二进制安装,或者在接手一套K8S集群的时候,第一件事情是检查证书有效期,证书过期或者TSL通信问 ...

  9. codeforces 1000C - Covered Points Count 【差分】

    题目:戳这里 题意:给出n个线段,问被1~n个线段覆盖的点分别有多少. 解题思路: 这题很容易想到排序后维护每个端点被覆盖的线段数,关键是端点值不好处理.比较好的做法是用差分的思想,把闭区间的线段改为 ...

  10. Inkscape 太慢

    问题: 在画板上图像较多时, 会在粘贴 / 删除 时会陷入长时间的等待 解决: 最佳: Ubuntu上面的比windows上的快上几十倍, 测试比较, 感觉并不是Ubuntu上多用了GPU, 总之, ...