前言
洁洁的个人主页
我就问你有没有发挥!
知行合一,志存高远。
Docker 是一个
开源的应用容器引擎
,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows
操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。此文章为恒川学习笔记了解。
简单来说,Dockerfile就是把我们安装环境的每个步骤和指令,放到一个文件,最后一键执行,最后做成一个你想要的环境。
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
Docker构建三步曲:
Dockerfile 是一个包含创建镜像所有命令的文本文件,通过docker build命令可以根据 Dockerfile 的内容构建镜像,
在介绍如何构建之前先介绍下 Dockerfile 的基本语法结构。
Dockerfile 有以下指令选项:
在当前目录新建一个文件夹docker-run, cd进入到文件夹,touch新建一个Dockerfile,然后vi打开文件,开始编辑
[root@yoyo ~]# mkdir docker-run
[root@yoyo ~]# cd docker-run/
[root@yoyo docker-run]# touch Dockerfile
[root@yoyo 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"]
requirements.txt是python的相关依赖包, 可以通过freeze命令生成
pip3 freeze >requirements.txt
[root@yoyo docker-run]# cat requirements.txt
APScheduler==3.5.3
asn1crypto==0.24.0
atomicwrites==1.3.0
attrs==18.2.0
backports.csv==1.0.7
bcrypt==3.1.7
beautifulsoup4==4.7.1
cached-property==1.5.1
certifi==2018.11.29
cffi==1.12.3
chardet==3.0.4
cryptography==2.7
DBUtils==1.3
defusedxml==0.5.0
diff-match-patch==20181111
Django==2.1.4
django-bootstrap3==11.0.0
django-crispy-forms==1.7.2
django-formtools==2.1
django-import-export==1.2.0
django-ranged-response==0.2.0
django-reversion==3.0.3
django-simple-captcha==0.5.10
django-stdimage==4.0.1
docker==3.7.3
docker-compose==1.24.1
docker-pycreds==0.4.0
dockerpty==0.4.1
docopt==0.6.2
et-xmlfile==1.0.1
future==0.17.1
httplib2==0.12.1
idna==2.7
jdcal==1.4
jsonschema==2.6.0
more-itertools==6.0.0
mysqlclient==1.4.2.post1
odfpy==1.4.0
openpyxl==2.6.1
paramiko==2.6.0
Pillow==5.4.1
pluggy==0.6.0
progressbar2==3.39.3
py==1.7.0
pycparser==2.19
pymssql==2.1.4
PyMySQL==0.9.3
PyNaCl==1.3.0
pytest==3.6.3
python-utils==2.3.0
pytz==2018.7
PyYAML==3.13
requests==2.20.1
six==1.12.0
soupsieve==1.7.3
tablib==0.13.0
texttable==0.9.1
tzlocal==1.5.1
urllib3==1.24.1
websocket-client==0.56.0
xlrd==1.2.0
xlwt==1.3.0
docker build 命令用于使用 Dockerfile 创建镜像。OPTIONS说明:
-t参数设置镜像名称yoyo_pytes和tag标签名称v1,注意最后面有个点.
docker build -t yoyo_pytest:v1 .
[root@yoyo 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 <283340479@qq.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查看生成的镜像
[root@yoyo docker-run]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yoyo_pytest v1 6b4267ce7ac4 21 seconds ago 1.02GB
[root@yoyo docker-run]#
在当前目录新建一个test_h.py文件,写入pytest测试脚本
import pytest
def test_one():
print("正在执行----test_one")
x = "this"
assert 'h' in x
def test_two():
print("正在执行----test_two")
x = "hello"
assert x
def test_three():
print("正在执行----test_three")
a = "hello"
b = "hello world"
assert a in b
if __name__ == "__main__":
pytest.main(["-s", "test_h.py"])
使用docker run运行容器
[root@yoyo docker-run]# docker run -it --rm -v "$PWD":/code yoyo_pytest:v1 test_h.py -s
================================================================== test 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
《Linux私教课:技术内核与企业运维篇》自CentOS 6.x和CentOS 8.x停更以后,国内开源的Linux系统究竟采用什么系统引起了不小的争议。从国外的数据来看,目前Rocky Linux系统已经呈现替代CentOS的趋势。Rocky Linux是一个开源、免费的企业级操作系统,旨在与Red Hat(红帽)公司发布的面向企业用户的Linux系统(Red Hat Enterprise Linux,RHEL)100% Bug级兼容,目前正在社区密集开发中。Rocky Linux是一个社区拥有和管理的企业Linux发行版,提供强大的生产级平台,可作为CentOS停止维护(改为滚动更新的Stream版)后,RHEL的下游Linux系统的替代方案,继承了原CentOS的开源、免费的特点。《Linux私教课:技术内核与企业运维篇》围绕Rocky Linux系统,详细地讲解了使用Rocky Linux系统的各项技术要点和企业实战案例。全书共13章,首先对Rocky Linux系统进行介绍。接下来讲解了目录管理与文件管理、用户管理、权限管理、磁盘管理、进程管理、系统管理、网络管理;然后拓展了知识面,讲解了容器管理的内容。最后讲解了Linux系统内核优化、中小型企业上云解决方案、Prometheus监控系统、Podman企业实战。本书充分考虑到零基础读者的阅读需求,精心提供了笔记、示例代码、学习视频、思维导图等资源。