跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Docker
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{Infobox software | name = Docker | logo = Docker logo.png | caption = Docker标志 | developer = Docker, Inc. | released = {{Start date and age|2013|03|13}} | programming language = [[Go]] | operating system = [[Linux]], [[Windows]], [[macOS]] | genre = 容器化平台 | license = Apache License 2.0 | website = {{URL|https://www.docker.com}} }} '''Docker'''是一个开源的容器化平台,用于开发、部署和运行应用程序。它通过容器技术实现了应用程序与其运行环境的隔离,使应用程序能够在任何支持Docker的环境中一致地运行。 == 概述 == Docker利用操作系统级的虚拟化技术(称为"容器")来打包和运行应用程序及其依赖项。与传统的[[虚拟机]]相比,Docker容器更加轻量级,因为它们共享主机操作系统内核,而不需要为每个应用程序运行完整的操作系统。 Docker的主要组件包括: * '''Docker Engine''' - 核心容器运行时 * '''Docker Hub''' - 容器镜像的公共注册中心 * '''Docker Compose''' - 用于定义和运行多容器应用的工具 * '''Docker Swarm''' - 原生的集群和编排工具 == 核心概念 == === 镜像(Image) === Docker镜像是只读模板,包含创建Docker容器的指令。镜像通常基于其他镜像构建,并添加额外的自定义层。 === 容器(Container) === 容器是镜像的可运行实例。可以使用Docker API或CLI创建、启动、停止、移动或删除容器。 === 仓库(Repository) === Docker仓库是存储Docker镜像的地方。公共仓库如[[Docker Hub]]允许用户共享镜像,也可以设置私有仓库。 == 安装与配置 == Docker支持多种操作系统平台: === Linux安装 === <syntaxhighlight lang="bash"> # Ubuntu安装示例 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io </syntaxhighlight> === Windows/macOS安装 === Windows和macOS用户可以从Docker官网下载Docker Desktop应用程序,它提供了图形界面和命令行工具。 == 基本使用 == === 运行第一个容器 === <syntaxhighlight lang="bash"> # 从Docker Hub拉取官方nginx镜像 docker pull nginx # 运行nginx容器 docker run -d -p 8080:80 --name my-nginx nginx </syntaxhighlight> 此命令会: 1. 从Docker Hub下载nginx镜像(如果本地不存在) 2. 在后台运行容器(-d选项) 3. 将容器内的80端口映射到主机的8080端口(-p选项) 4. 为容器指定名称"my-nginx"(--name选项) === 常用命令 === {| class="wikitable" |- ! 命令 !! 描述 |- | <code>docker ps</code> || 列出运行中的容器 |- | <code>docker images</code> || 列出本地镜像 |- | <code>docker build</code> || 根据Dockerfile构建镜像 |- | <code>docker exec</code> || 在运行中的容器内执行命令 |- | <code>docker logs</code> || 查看容器日志 |} == Dockerfile == Dockerfile是用于构建Docker镜像的文本文件,包含一系列指令。 示例Dockerfile: <syntaxhighlight lang="dockerfile"> # 使用官方Python运行时作为父镜像 FROM python:3.8-slim # 设置工作目录 WORKDIR /app # 将当前目录内容复制到容器的/app目录 COPY . /app # 安装requirements.txt中指定的依赖 RUN pip install --trusted-host pypi.python.org -r requirements.txt # 容器启动时运行app.py CMD ["python", "app.py"] </syntaxhighlight> 构建镜像: <syntaxhighlight lang="bash"> docker build -t my-python-app . </syntaxhighlight> == Docker Compose == Docker Compose用于定义和运行多容器Docker应用程序。使用YAML文件配置应用程序的服务。 示例docker-compose.yml: <syntaxhighlight lang="yaml"> version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" </syntaxhighlight> 启动服务: <syntaxhighlight lang="bash"> docker-compose up </syntaxhighlight> == 实际应用场景 == === 微服务架构 === Docker非常适合[[微服务]]架构,每个服务可以运行在独立的容器中,便于开发、测试和部署。 === 持续集成/持续部署(CI/CD) === Docker容器可以确保开发、测试和生产环境的一致性,简化[[CI/CD]]流程。 === 本地开发环境 === 开发者可以使用Docker快速搭建复杂的开发环境,而不必在本地安装所有依赖。 == 与Kubernetes的关系 == [[Kubernetes (k8s)]]是一个开源的容器编排系统,常用于管理大规模的Docker容器集群。Docker提供了容器运行时,而Kubernetes负责容器的调度、扩展和管理。 == 优势与局限 == === 优势 === * 环境一致性 * 资源利用率高 * 快速部署和扩展 * 易于版本控制和回滚 === 局限 === * 安全性考虑(容器共享主机内核) * 不适合所有类型的应用(如需要特定内核功能的应用程序) * 存储管理可能复杂 == 参见 == * [[Kubernetes (k8s)]] - 容器编排系统 * [[容器技术]] - Docker背后的核心技术 * [[微服务]] - Docker常见的应用场景 * [[CI/CD]] - 持续集成/持续部署 == 参考资料 == {{Reflist}} [[Category:容器技术]] [[Category:软件开发工具]] [[Category:部署工具]] [[Category:开源软件]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Infobox
(
编辑
)
模板:Infobox software
(
编辑
)
模板:Infobox software/simple
(
编辑
)
模板:MONTHNAME
(
编辑
)
模板:MONTHNUMBER
(
编辑
)
模板:Main other
(
编辑
)
模板:Plainlist
(
编辑
)
模板:Plainlist/styles.css
(
编辑
)
模板:Reflist
(
编辑
)
模板:Reflist/styles.css
(
编辑
)
模板:Start date and age
(
编辑
)
模板:Template link expanded
(
编辑
)
模板:Template other
(
编辑
)
模板:Time ago
(
编辑
)
模板:Tlx
(
编辑
)
模板:Trim
(
编辑
)
模板:URL
(
编辑
)
模板:Wikidata
(
编辑
)
模板:Yesno
(
编辑
)
模块:Arguments
(
编辑
)
模块:Check for unknown parameters
(
编辑
)
模块:Date
(
编辑
)
模块:Infobox
(
编辑
)
模块:Infobox/styles.css
(
编辑
)
模块:InfoboxImage
(
编辑
)
模块:Template link general
(
编辑
)
模块:Time ago
(
编辑
)
模块:URL
(
编辑
)
模块:Wd
(
编辑
)