Docker是什么

Docker是什么

docker是一个改进的容器技术。具体的“改进”体现在,docker为容器引入了镜像,使得容器可以从预先定义好的模版(images)创建出来,并且这个模版还是分层的。

Docker经常被提起的特点:

轻量,体现在内存占用小,高密度

快速,毫秒启动

隔离,沙盒技术更像虚拟机

Docker技术的基础

namespace,容器隔离的基础,保证A容器看不到B容器. 6个名空间:User,Mnt,Network,UTS,IPC,Pid

cgroups,容器资源统计和隔离。主要用到的cgroups子系统:cpu,blkio,device,freezer,memory

unionfs,典型:aufs/overlayfs,分层镜像实现的基础

Docker组件:

docker Client客户端————>向docker服务器进程发起请求,如:创建、停止、销毁容器等操作

docker Server服务器进程—–>处理所有docker的请求,管理所有容器

docker Registry镜像仓库——>镜像存放的中央仓库,可看作是存放二进制的scm

Docker安装

Docker的安装非常简单,支持目前所有主流操作系统,从Mac到Windows到各种Linux发行版
具体参考: docker安装

Docker常见命令

容器相关操作

docker create # 创建一个容器但是不启动它

docker run # 创建并启动一个容器

docker stop # 停止容器运行,发送信号SIGTERM

docker start # 启动一个停止状态的容器

docker restart # 重启一个容器

docker rm # 删除一个容器

docker kill # 发送信号给容器,默认SIGKILL

docker attach # 连接(进入)到一个正在运行的容器

docker wait # 阻塞到一个容器,直到容器停止运行

获取容器相关信息

docker ps # 显示状态为运行(Up)的容器

docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)

docker inspect # 深入容器内部获取容器所有信息

docker logs # 查看容器的日志(stdout/stderr)

docker events # 得到docker服务器的实时的事件

docker port # 显示容器的端口映射

docker top # 显示容器的进程信息

Layx是一款网页弹窗Javript插件 Layx是一款网页弹窗Javript插件

Layx 是一款网页弹窗Javript插件,她将助力于互联网Web开发,提供优质的弹窗体验

Layx是一款网页弹窗Javript插件 32 查看详情 Layx是一款网页弹窗Javript插件

docker diff # 显示容器文件系统的前后变化

导出容器

docker cp # 从容器里向外拷贝文件或目录

docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息

执行

docker exec # 在容器里执行一个命令,可以执行bash进入交互式

镜像操作

docker images # 显示本地所有的镜像列表

docker import # 从一个tar包创建一个镜像,往往和export结合使用

docker build # 使用Dockerfile创建镜像(推荐)

docker commit # 从容器创建镜像

docker rmi # 删除一个镜像

docker load # 从一个tar包创建一个镜像,和save配合使用

docker save # 将一个镜像保存为一个tar包,带layers和tag信息

docker history # 显示生成一个镜像的历史命令

docker tag # 为镜像起一个别名

镜像仓库(registry)操作

docker login # 登录到一个registry

docker search # 从registry仓库搜索镜像

docker pull # 从仓库下载镜像到本地

docker push # 将一个镜像push到registry仓库中

获取Container IP地址(Container状态必须是Up)

docker inspect id | grep IPAddress | cut -d '"' -f 4

获取端口映射

docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' id

获取环境变量

docker exec container_id env

杀掉所有正在运行的容器

docker kill $(docker ps -q)

删除老的(一周前创建)容器

docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm

删除已经停止的容器

docker rm `docker ps -a -q`

删除所有镜像,小心

docker rmi $(docker images -q)

Dockerfile

Dockerfile是docker构建镜像的基础,也是docker区别于其他容器的重要特征,正是有了Dockerfile,docker的自动化和可移植性才成为可能。

不论是开发还是运维,学会编写Dockerfile几乎是必备的,这有助于你理解整个容器的运行。

FROM , 从一个基础镜像构建新的镜像

FROM ubuntu

MAINTAINER , 维护者信息

MAINTAINER William 

ENV , 设置环境变量

ENV TEST 1

RUN , 非交互式运行shell命令

RUN apt-get -y update RUN apt-get -y install nginx

ADD , 将外部文件拷贝到镜像里,src可以为url

ADD   /data/nicescale.tgz

WORKDIR /path/to/workdir, 设置工作目录

WORKDIR /var/www

USER , 设置用户ID

USER nginx

VULUME , 设置volume

VOLUME [‘/data’]

EXPOSE , 暴露哪些端口

EXPOSE 80 443

ENTRYPOINT [‘executable’, ‘param1’,’param2’]执行命令

ENTRYPOINT ["/usr/sbin/nginx"]

CMD [“param1”,”param2”]

CMD ["start"]

docker创建、启动container时执行的命令,如果设置了ENTRYPOINT,则CMD将作为参数

Dockerfile最佳实践

尽量将一些常用不变的指令放到前面

CMD和ENTRYPOINT尽量使用json数组方式

通过Dockerfile构建image

docker build csphere/nginx:1.7 .

镜像仓库Registry

镜像从Dockerfile build生成后,需要将镜像推送(push)到镜像仓库。企业内部都需要构建一个私有docker registry,这个registry可以看作二进制的scm,CI/CD也需要围绕registry进行。

部署registry

mkdir /registrydocker run  -p 80:5000  -e STORAGE_PATH=/registry  -v /registry:/registry  registry:2.0

推送镜像保存到仓库

假设192.168.1.2是registry仓库的地址:

docker tag  csphere/nginx:1.7 192.168.1.2/csphere/nginx:1.7docker push 192.168.1.2/csphere/nginx:1.7

以上就是Docker是什么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/561353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 01:09:44
下一篇 2025年11月10日 01:15:46

相关推荐

  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • 相对于绝对定位的参照方法

    绝对定位是CSS中常用的定位方法之一,通过指定元素相对于其最近的”已定位”祖先元素的偏移位置,来控制元素在页面上的位置。本文将介绍绝对定位的基本概念并提供具体的代码示例,帮助读者更好地理解和应用这一参照方法。 绝对定位指的是通过设置元素的position属性为absolute…

    2025年12月24日 好文分享
    000
  • CSS3学习的必备基础知识和技巧

    CSS3学习的必备基础知识和技巧 CSS3是指级联样式表(Cascading Style Sheets)的第三个版本。它是网页设计中不可或缺的一部分,用于控制网页的样式和布局。CSS3带来了很多新的特性和技巧,让我们的网页变得更加出色和专业。本文将介绍CSS3的一些基础知识和常用技巧,并通过代码示例…

    2025年12月24日
    000
  • Selenium headless模式下动态菜单与复选框的交互策略

    本文旨在解决Selenium在无头浏览器模式下,无法直接点击隐藏或动态生成的复选框(input)的问题。通过分析HTML结构和Selenium的交互机制,文章提出并详细阐述了点击关联的“元素作为有效替代方案,并结合`execute_script`方法和适当的等待策略,提供了一套完整的解决方案和最佳…

    2025年12月23日
    000
  • Selenium自动化:在无头Chrome中点击自定义选择菜单的策略

    本文将详细介绍如何在Selenium无头Chrome浏览器环境中,有效处理具有复杂HTML结构的自定义选择菜单。针对直接点击`input`元素可能遇到的`TimeoutException`问题,教程将提供一种可靠的解决方案:通过点击与`input`关联的`label`元素来实现菜单选项的精确选择,并…

    2025年12月23日
    000
  • 使用Selenium在无头Chrome中交互动态菜单和复选框的策略

    本文深入探讨了在selenium无头chrome环境下,如何高效且稳定地与动态加载的菜单及复选框进行交互。核心策略包括配置无头浏览器以确保元素可见性,以及在面对直接点击`input`元素失效时,转而定位并点击其关联的`label`元素,并结合显式等待机制,以克服因元素隐藏或javascript事件绑…

    2025年12月23日
    000
  • GitLab CI管道测试,HTML+CSS集成部署零出错!

    首先检查.gitlab-ci.yml配置是否正确,依次设置stages为build、test、deploy;在build阶段安装依赖并生成资源;在test阶段通过htmlhint和stylelint进行静态检查;启用node_modules缓存提升速度;部署时将dist目录上传至GitLab Pag…

    2025年12月23日
    000
  • 解决HTML表单提交后出现HTTP 405错误

    本文旨在帮助开发者解决HTML表单提交后出现HTTP 405错误的问题。该错误通常表示服务器不允许使用POST方法,这通常发生在服务器未配置支持PHP或仅用于提供静态文件时。本文将详细介绍该错误的原因,并提供解决方案,确保PHP脚本能够正确处理表单数据。 理解HTTP 405错误 HTTP 405错…

    2025年12月23日
    000
  • HTML浏览器兼容漏洞怎么检测_不同浏览器渲染差异引发漏洞检测技巧

    检测HTML浏览器兼容性漏洞需结合自动化测试、手动验证、代码审查与安全思维,利用云平台、开发者工具及CI/CD流程,在多环境验证渲染一致性,防范因引擎差异导致的功能异常与安全风险。 HTML浏览器兼容性漏洞,尤其是由不同浏览器渲染差异引起的,本质上是前端代码在不同解析引擎下表现不一致,可能导致功能失…

    2025年12月23日
    000
  • 解决HTML表单提交时出现的HTTP 405错误

    本文旨在帮助开发者解决在HTML表单提交到PHP脚本时遇到的HTTP 405错误。该错误通常表示服务器不允许使用POST方法,这通常是因为服务器未配置为支持PHP处理。本文将详细介绍该错误的原因,并提供多种解决方案,确保表单数据能够正确提交和处理。 HTTP 405错误详解 HTTP 405 Met…

    2025年12月23日
    000
  • html如何运行php_HTML与PHP混合(表单/动态内容)运行与交互方法

    要运行PHP需配置服务器环境,使用.php文件并通过localhost访问,PHP与HTML可混合编写,表单数据用$_POST/$_GET处理并防XSS,推荐XAMPP等集成环境部署,关键在于正确配置和扩展名。 HTML本身是静态标记语言,无法直接运行PHP代码。PHP是一种服务器端脚本语言,必须通…

    2025年12月23日 好文分享
    000
  • 解决Flask应用中常见的404错误:IP地址与端口配置指南

    本文旨在解决flask应用中常见的404错误,尤其当路由配置看似正确却依然出现此问题时。核心内容聚焦于检查并正确配置flask应用的访问ip地址和端口,强调了使用`app.run(host=”0000″, port=your_port)`的重要性,并简要提及了防火墙作为潜在的…

    2025年12月23日
    000
  • 掌握Selenium与BeautifulSoup协同抓取动态加载数据

    本文旨在解决使用beautifulsoup抓取动态加载网页内容时遇到的问题,特别是当html中显示占位符而非实际数据时。教程将详细阐述如何结合selenium的webdriverwait和预期条件,有效等待并提取由javascript动态渲染的网页元素,确保成功获取所需数据,并提供完整的代码示例及最…

    2025年12月23日
    000
  • html编辑器如何docker开发 html编辑器容器化环境的配置

    使用Docker可快速搭建HTML编辑器开发环境。基于node:18-alpine创建镜像,通过docker-compose配置服务,挂载本地代码实现热重载,集成monaco-editor组件,并配置命名卷editor_data持久化保存用户数据,确保开发高效且数据不丢失。 如果您希望在本地快速搭建…

    2025年12月23日
    000
  • HTML在线运行环境搭建_HTML在线运行环境配置详细步骤

    1、通过Node.js安装http-server可快速搭建本地静态服务器预览HTML;2、VS Code的Live Server插件支持实时热更新预览;3、Nginx适用于部署稳定高效的HTML在线服务;4、Docker容器化方案便于环境迁移与隔离,提升部署灵活性。 如果您希望在本地或服务器上搭建一…

    2025年12月22日
    000
  • HTML在线运行安全性分析_确保HTML在线运行代码安全指南

    答案:为保障HTML在线运行环境安全,需采取五项措施:一、通过iframe沙箱和Docker隔离运行环境;二、使用DOMPurify过滤恶意标签与事件属性;三、配置CSP响应头限制资源加载;四、禁用客户端存储与网络请求API;五、定期审计依赖组件并更新漏洞库,确保系统持续安全。 如果您在开发或测试环…

    2025年12月22日
    000
  • HTML表单如何实现端到端测试?怎样模拟用户完整流程?

    端到端测试需模拟用户填写至提交全过程,确保数据正确传递与处理。Selenium、Cypress、Playwright可选,Selenium生态成熟但配置复杂,Cypress轻量适合前端团队但跨域受限,Playwright支持多浏览器且性能优。选择应基于技术栈与团队经验。动态数据如验证码可在测试环境禁…

    2025年12月22日
    000
  • Python网络爬虫:处理JavaScript动态加载内容的策略

    在进行网页数据抓取时,传统的BeautifulSoup结合Requests库仅能获取页面的静态HTML内容。然而,现代网站普遍采用JavaScript动态加载数据,导致BeautifulSoup无法捕获这些渲染后的内容,例如表格数据。本文将深入探讨这一问题,并提供利用Selenium等工具来模拟浏览…

    2025年12月22日
    000
  • HTML表单如何实现容器化部署?怎样用Docker打包表单?

    要将html表单容器化,实际上是指容器化其依赖的web服务器或后端应用。对于纯静态表单,最直接的做法是使用nginx容器托管文件:准备html等静态资源,编写dockerfile将文件复制到nginx镜像中并暴露80端口,通过docker build和docker run命令即可在http://lo…

    2025年12月22日
    000
  • 表单中的Kubernetes怎么支持?如何管理表单的扩展?

    kubernetes通过部署容器化表单处理服务、利用hpa自动扩展、结合数据库持久化方案、实施微服务与队列架构实现表单扩展管理,使用应用程序验证与ingress tls保障安全性,通过日志、指标、追踪等手段监控调试,借助helm实现部署标准化,集成无服务器平台实现事件驱动处理,采用gitops进行配…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信