企业网站seo手机,青岛建站价格,顺口的广告公司的名字,台州超值营销型网站建设地址作者简介#xff1a; 辭七七#xff0c;目前大一#xff0c;正在学习C/C#xff0c;Java#xff0c;Python等 作者主页#xff1a; 七七的个人主页 文章收录专栏#xff1a; 七七的闲谈 欢迎大家点赞 #x1f44d; 收藏 ⭐ 加关注哦#xff01;#x1f496;#x1f… 作者简介 辭七七目前大一正在学习C/CJavaPython等 作者主页 七七的个人主页 文章收录专栏 七七的闲谈 欢迎大家点赞 收藏 ⭐ 加关注哦 前言 Docker 是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 利用Dockerfile制作个人的镜像文件 1. Dockerfile简介2. Dockerfile相关指令3. Dockerfile编写4. requirements.txt5. build构建镜像文件6. run运行容器 1. Dockerfile简介 Dockerfile是用来构建Docker镜像的构建文件是由一系列命令和参数构成的脚本。此文章为恒川学习笔记了解。 简单来说Dockerfile就是把我们安装环境的每个步骤和指令放到一个文件最后一键执行最后做成一个你想要的环境。
Dockerfile是用来构建Docker镜像的构建文件是由一系列命令和参数构成的脚本。
Docker构建三步曲
编写dockerfile文件docker build 构建image镜像文件docker run 运行容器
2. Dockerfile相关指令 Dockerfile 是一个包含创建镜像所有命令的文本文件通过docker build命令可以根据 Dockerfile 的内容构建镜像 在介绍如何构建之前先介绍下 Dockerfile 的基本语法结构。 Dockerfile 有以下指令选项:
FROM 基础镜像当前新镜像是基于哪个镜像的MAINTAINER 镜像维护者的姓名和邮箱地址RUN 容器构建时需要运行的命令CMD 指定一个容器启动时要运行的命令。 dockerfile中可以有多个CMD指令但只有最后一个生效CMD会被docker run之后的参数替换。EXPOSE 当前容器对外暴露的端口号ENV 用来在构建镜像过程中设置环境变量ADD 将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包COPY COPY:类似ADD,拷贝文件和目录到镜像中但是它只是拷贝不会自动处理URL和解压tar压缩包。ENTRYPOINT 指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样都是在指定容器启动程序及参数。VOLUME 容器数据卷用于数据保存和持久化工作USER 指定运行容器时的用户名或UID后续的 RUN 也会使用指定用户WORKDIR 指定在容器创建后终端默认登录进来工作目录一个落脚点ONBUILD 当构建一个被继承的Dockerfile时运行命令父镜像在被子继承后父镜像的onbuild被触发。
3. Dockerfile编写
在当前目录新建一个文件夹docker-run cd进入到文件夹touch新建一个Dockerfile然后vi打开文件开始编辑
[rootyoyo ~]# mkdir docker-run
[rootyoyo ~]# cd docker-run/
[rootyoyo docker-run]# touch Dockerfile
[rootyoyo docker-run]# vi Dockerfile编辑内容如下
# 更新pip
RUN pip install --upgrade pip # 工作目录
WORKDIR /code
ADD . /code# pip安装依赖包
RUN pip install -r requirements.txt# 传递参数
ENTRYPOINT [pytest]# 默认显示help帮助信息
CMD [--help]4. requirements.txt
requirements.txt是python的相关依赖包, 可以通过freeze命令生成 pip3 freeze requirements.txt [rootyoyo docker-run]# cat requirements.txt
APScheduler3.5.3
asn1crypto0.24.0
atomicwrites1.3.0
attrs18.2.0
backports.csv1.0.7
bcrypt3.1.7
beautifulsoup44.7.1
cached-property1.5.1
certifi2018.11.29
cffi1.12.3
chardet3.0.4
cryptography2.7
DBUtils1.3
defusedxml0.5.0
diff-match-patch20181111
Django2.1.4
django-bootstrap311.0.0
django-crispy-forms1.7.2
django-formtools2.1
django-import-export1.2.0
django-ranged-response0.2.0
django-reversion3.0.3
django-simple-captcha0.5.10
django-stdimage4.0.1
docker3.7.3
docker-compose1.24.1
docker-pycreds0.4.0
dockerpty0.4.1
docopt0.6.2
et-xmlfile1.0.1
future0.17.1
httplib20.12.1
idna2.7
jdcal1.4
jsonschema2.6.0
more-itertools6.0.0
mysqlclient1.4.2.post1
odfpy1.4.0
openpyxl2.6.1
paramiko2.6.0
Pillow5.4.1
pluggy0.6.0
progressbar23.39.3
py1.7.0
pycparser2.19
pymssql2.1.4
PyMySQL0.9.3
PyNaCl1.3.0
pytest3.6.3
python-utils2.3.0
pytz2018.7
PyYAML3.13
requests2.20.1
six1.12.0
soupsieve1.7.3
tablib0.13.0
texttable0.9.1
tzlocal1.5.1
urllib31.24.1
websocket-client0.56.0
xlrd1.2.0
xlwt1.3.05. build构建镜像文件
docker build 命令用于使用 Dockerfile 创建镜像。OPTIONS说明
-f :指定要使用的Dockerfile路径-pull :尝试去更新镜像的新版本-quiet, -q :安静模式成功后只输出镜像 ID-tag, -t: 镜像的名字及标签通常 name:tag 或者 name 格式可以在一次构建中为一个镜像设置多个标签。
-t参数设置镜像名称yoyo_pytes和tag标签名称v1注意最后面有个点. docker build -t yoyo_pytest:v1 . [rootyoyo docker-run]# docker build -t yoyo_pytest:v1 .
Sending build context to Docker daemon 11.78kB
Step 1/8 : FROM python:3.6--- cfcdf565ff94
Step 2/8 : MAINTAINER yoyo 283340479qq.com--- Using cache--- f523b919fcf9
Step 3/8 : RUN pip install --upgrade pip--- Using cache--- 3399b50dab4e
Step 4/8 : WORKDIR /code--- Using cache--- 7223a20e17fd
Step 5/8 : ADD . /code--- 650b554ccd6c
Step 6/8 : RUN pip install -r requirements.txt--- Running in 0e49d444f7d8运行过程中可以看到按步骤运行如Step 1/8
运行完成后可以通过docker images查看生成的镜像
[rootyoyo docker-run]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yoyo_pytest v1 6b4267ce7ac4 21 seconds ago 1.02GB
[rootyoyo docker-run]#6. run运行容器
在当前目录新建一个test_h.py文件写入pytest测试脚本
import pytest
def test_one():print(正在执行----test_one)x thisassert h in xdef test_two():print(正在执行----test_two)x helloassert xdef test_three():print(正在执行----test_three)a hellob hello worldassert a in bif __name__ __main__:pytest.main([-s, test_h.py])使用docker run运行容器
-it -t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开.-rm 容器退出时自动清除容器。-rm选项不能与-d同时使用-v 将容器的工作目录/code挂载到宿主机的$PWD也就是当前目录yoyo_pytest:v1 容器名称和tag名称test_h.py 后面跟着需要执行的脚本名称
[rootyoyo docker-run]# docker run -it --rm -v $PWD:/code yoyo_pytest:v1 test_h.py -stest session starts
platform linux -- Python 3.6.9, pytest-3.6.3, py-1.7.0, pluggy-0.6.0
rootdir: /code, inifile:
collected 3 items test_h.py 正在执行----test_one
.正在执行----test_two
.正在执行----test_three
.
3 passed in 0.01 seconds 关于【Docker】用Dockerfile制作个人的镜像文件的详解七七就先分享到这里了如果你认为这篇文章对你有帮助请给七七点个赞吧如果发现什么问题欢迎评论区留言