dockerfile的基本功能 docker镜像分层结构
- 开发语言
- 2023-09-03
- 75
大家好,关于dockerfile的基本功能很多朋友都还不太明白,今天小编就来为大家分享关于docker镜像分层结构的知识,希望对各位有所帮助!Docker有什么优势单纯...
大家好,关于dockerfile的基本功能很多朋友都还不太明白,今天小编就来为大家分享关于docker镜像分层结构的知识,希望对各位有所帮助!
Docker有什么优势
单纯的Docker是一个非常难理解的东西,它和虚拟机有些类似,但又不等同于虚拟机,它们的原理是不同的。
虚拟机只是对硬件进行虚拟化,基于物理机的硬件虚拟出一套硬件之后,在这个基础上运行一个完整的操作系统,而Docker是虚拟化的容器,容器虚拟化的是操作系统而不是硬件,容器和容器之间共享同一套操作系统资源。
容器的优势是非常明显的:虚拟机将一台服务器变成多台服务器,每一个VM都拥有整套的操作系统、需要占用大量的空间,所以VM启动缓慢系统也会占用很多的硬件资源。代码、依赖的资源打包在一起形成一个容器,容器没有自己的内核,容器内的应用直接运行在系统的内核上,多个容器可以同时运行共享系统内核,但容器之间又以相互独立的进程在运行。所以容器比虚拟机要轻便很多,几乎瞬间就能启动。
如此这般说Docker的概念还是很抽象,举个例子:Ubuntu的系统搭建的项目要部署到CentOS的服务器上,所有依赖的环境(比如:MySQL、Redis等等)都需要重新安装一遍,并按照部署的要求进行配置。使用Docker只需要一条命令就可以达成,需要MySQL只需要安装一个MySQL的镜像,需要Redis只需要安装一个带Redis的镜像,然后启动这些容器就可以。
容器可以用别人制作的,也可以添加一些自己的软件、修改相应的配置文件做一个镜像,通过这个镜像就可以创建出无数个一模一样的容器。Docker和各大开源项目团队一起维护着庞大高质量的官方镜像,我们可以直接使用或者修改定制后再使用。你还无法体会这样的优势所在,比如通过一个Redis镜像,可以轻松的搭建一个集群。容器更多地用来表示软件的标准化单元,无视物理硬件设施之间的差异部署到任意位置、任意平台,所以容器又被誉为代码集装箱装卸工。
如此这般就不会再出现诸如“这段代码在我机器上运行没有问题”之类的,可以轻松的将在一个平台上运行的应用,迅速的迁移到另一个平台,而不用考虑平台和运行环境的兼容性。
Docker包含了镜像(Image)、容器(Container)、仓库(Repository)Docker的镜像相当于Linux的root文件系统,它提供容器运行所需要的软件、资源、配置参数、库文件等等。容器才是运行的实体,镜像是经过一层层构建定义的,里面不包含任何动态数据,构建完之后就不会再改变,而容器可以创建、启动、停止、暂停、删除。仓库是用来集中存放镜像文件,这样就便于服务器进行统一的管理。
Docker码头装卸工的形象已经深入人心Docker将开源仓库的镜像拉到本地,镜像运行后在本地运行形成容器,这个就是Docker码头装卸工的形象,已经深入人心。它赋予了软件独立性,避免了开发、预演、环境之间的差异。Docker这几年这么火爆是不无道理的,好用所以它就火了。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!
你用docker做过什么好玩或者有逼格的事情
使用Docker搭建Jenkins+python3+selenium\helium项目项目背景
用python3在本地写了一个项目,这个项目采用helium+selenium+chrome进行界面操作,代码放在gitee上托管。现在基本功能已经实现,想在Linux服务器上部署项目代码,实现自动构建。
自动构建解决方案自动构建工具选型:jenkins中间件选型:docker代码运行环境:python3脚本运行工具:Chrome浏览器、chromedriver、helium库Ⅰ、安装dockerLinux系统中安装dockercurl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun
docker镜像国内加速vim/etc/docker/daemon.json
{
"registry-mirrors":[
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
#重启服务
systemctldaemon-reload
systemctlrestartdocker
Ⅱ、安装jenkins在Linux上任意路径,创建一个用于存放Jenkins文件的文件夹"jenkins_py"mkdirjenkins_pydockerrun-itd--name=jenkins_py-p8989:8080-p50001:50000-v$PWD:/var/jenkins_home--privileged=true-urootjenkins/jenkins
访问jenkins:http://ip:8989出现输入密码页面时,获取密码:方法1:#进入容器
dockerexec-it-urootjenkins_py/bin/bash
#查看密码
cat/var/jenkins_home/secrets/initialAdminPassword
方法2:#在当前宿主linux机器上,进入前面自己创建的jenkins_py文件夹
cdsecrets
catinitialAdminPassword
复制密码,填入Web页面的密码框,在选择安装插件页面,点击安装推荐插件,等待插件自动安装
Ⅲ、容器安装必要软件进入容器dockerexec-it-urootjenkins_py/bin/bash
安装更新#安装更新
apt-getupdate
#查看系统
cat/etc/issue
#此时容器默认的系统为debain9
#debain默认的软件源非常慢,可以更换为国内阿里源
#安装vim
apt-getinstall-yvim
apt-getinstall-ywget
#更换源为阿里源
vim/etc/apt/sources.list
debhttp://mirrors.aliyun.com/debian/stretchmainnon-freecontrib
deb-srchttp://mirrors.aliyun.com/debian/stretchmainnon-freecontrib
debhttp://mirrors.aliyun.com/debian-securitystretch/updatesmain
deb-srchttp://mirrors.aliyun.com/debian-securitystretch/updatesmain
debhttp://mirrors.aliyun.com/debian/stretch-updatesmainnon-freecontrib
deb-srchttp://mirrors.aliyun.com/debian/stretch-updatesmainnon-freecontrib
debhttp://mirrors.aliyun.com/debian/stretch-backportsmainnon-freecontrib
deb-srchttp://mirrors.aliyun.com/debian/stretch-backportsmainnon-freecontrib
#更新系统
apt-getupdate
#安装libssl-dev
apt-getinstalllibssl-dev
Ⅳ、配置Web自动化环境下载浏览器百度搜索"chromeforlinux",下载适合debain版本的Chrome浏览器把下载的文件上传到Linux机器下载浏览器驱动下载Chrome浏览器Linux对应版本的驱动把下载的文件上传到Linux机器Jenkins容器中,安装Chrome浏览器#把chrome文件,复制到上面创建的jenkins_py文件夹
cpgoogle-chrome-stable_current_amd64_85.0.4183.102.deb./jenkins_py/
#进入容器
dockerexec-it-urootjenkins_py/bin/bash
cd/var/jenkins_home
chmod+xgoogle-chrome-stable_current_amd64_85.0.4183.102.deb
dpkg-igoogle-chrome-stable_current_amd64_85.0.4183.102.deb
配置浏览器驱动#解压驱动zip包
unzipchromedriver_linux64.zip
#拷贝到jenkins_py文件夹
cpchromedriver./jenkins_py/
#进入容器
dockerexec-it-urootjenkins_py/bin/bash
cd/var/jenkins_home
chmod+xchromedriver
mvchromedriver/usr/bin/
cp/usr/bin/chromedriver/usr/local/bin/
Ⅴ、安装python3安装python3apt-getinstall-ypython3
安装pip#下载pip
wgethttps://bootstrap.pypa.io/get-pip.py
python3get-pip.py
pip3install--upgrade--force-reinstallsetuptools
修改系统默认python版本为python3cd/usr/bin
ls-lpython*
#查看上面的python3的版本
rm-rfpython
ln-spython3.5pythonpython3.5
#修改为上面对于的python3版本*修改pip源
修改pip源vim/etc/pip.conf
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
Ⅵ、jenkins配置任务创建任务配置Git配置构建触发器(可选)配置构建脚本pipinstall-rrequirements.txt执行项目根目录中的requirements.txt文件,自动安装项目需要的库,这样就不用担心代码引入了新库,而Jenkins中不存在,导致报错了。
cp../../tools.ini$PWD/src/conf拷贝配置文件。因为gitee托管项目时,没有提交ini带私密信息的配置文件
pythonmain.py用python执行项目
构建注意:用docker+jenkins来运行selenium的项目,是无图形界面的,所以项目中,浏览器必须采用无头模式
#参考代码
self.options=ChromeOptions()
self.options.add_argument('--headless')
self.options.add_argument('--no-sandbox')
self.options.add_argument('--disable-gpu')
self.options.add_argument('--disable-dev-shm-usage')
start_chrome(headless=True,options=self.options)
好了,项目构建成功。整个构建步骤、方法,你学会了吗?
你有关于详细的Docker入门书籍推荐吗
首先,单纯的只学docker我认为意义不大,docker只是整个devops体系中的一个基本单元,没有容器的编排管理,没有资源监控,没有从代码的开发到构建应用的一条龙服务,单个容器学习没有太多意义。建议先掌握简单的容器命令,了解基本原理,实际操作体验明白实际用法。
然后可以研究研究devops,例如openshift整个工作机制。
详细可参考我最近的OCP学习笔记:https://blog.csdn.net/yingwei13mei/article/details/93627641
docker零基础快速入门通俗易懂
1.了解Docker:首先要了解什么是Docker,它是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
2.安装Docker:在使用Docker之前,你需要先在本地或远程服务器上安装Docker。对于不同的操作系统,步骤略有不同。
3.学习Docker命令:学习Docker的命令行工具是必不可少的一步。通过这些命令行工具可以对Docker进行管理、部署、监控等操作。
4.构建镜像文件:使用Dockerfile来构建镜像文件是很重要的一步。通过语法来定义镜像文件中的内容并构建出想要的应用环境。
5.部署应用:将镜像文件部署到生产或测试服务器上就能够运行你想要的应用了。
怎样使用Docker帮助
使用Docker帮助可以帮助您了解Docker的使用方法和技巧,以及解决在使用Docker过程中可能遇到的问题。以下是使用Docker帮助的步骤:
1.打开Docker官方网站:在浏览器中输入https://www.docker.com/,进入Docker官方网站。
2.进入Docker帮助页面:在Docker官方网站中,点击“Support”菜单,选择“Help”选项,进入Docker帮助页面。
3.浏览Docker帮助文档:在Docker帮助页面中,可以浏览Docker官方提供的各种帮助文档,包括Docker入门指南、Docker命令参考、Docker网络配置、Docker安全等方面的文档。
4.提交问题:如果在使用Docker过程中遇到了问题,可以在Docker帮助页面中点击“Submitarequest”按钮,提交问题并等待Docker官方的回复。
5.参加Docker社区:Docker社区是一个开放的技术交流平台,可以在社区中与其他Docker用户和开发者交流,分享经验和解决问题。
需要注意的是,Docker帮助页面中提供的文档和解决方案可能会因Docker版本和配置的不同而有所差异,具体使用时需要根据实际情况选择相应的文档和解决方案。
docker面试必会6题经典
1.什么是docker?什么是docker镜像?
2.docker与虚拟机有何不同?docker常用命令?docker使用流程?
3.什么是docker容器?docker容器有几种状态?docker容器内部机制?容器与主机之间的数据拷贝?启动容器并挂在目录?
4.Dockerfile中最常见的指令是什么?Dockerfile中的命令COPY和ADD命令有什么区别?
5.如何在生产中监控docker?
6.什么类型的应用程序-无状态或有状态更适合Docker容器?
7.如何使用Docker构建与环境无关的系统?
8.CI(持续集成)服务器的功能是什么?
关于dockerfile的基本功能的内容到此结束,希望对大家有所帮助。
本文链接:http://www.xinin56.com/kaifa/14987.html