Docker安装部署和常用命令

news2024/11/25 10:52:10

Docker 是一种开源的平台,旨在帮助开发者和运维人员更轻松地创建、部署和运行应用程序。通过将应用程序及其依赖项打包到一个名为容器的标准化单位中,Docker 提供了一种轻量级的虚拟化解决方案。与传统虚拟机相比,Docker 容器可以在同一主机上运行,且相互隔离,启动速度非常快,并且占用的资源极少。
在这里插入图片描述

Docker 的安装与部署

在这里插入图片描述

要开始使用 Docker,第一步是安装 Docker 引擎。根据不同的操作系统,安装流程会有所不同。以下是常用操作系统上的 Docker 安装步骤:

在 Windows 上安装 Docker
  1. 确认系统要求:Docker for Windows 需要 Windows 10 64 位专业版、企业版或教育版。确保你的系统满足运行 Hyper-V 的要求。

  2. 下载 Docker Desktop:访问 Docker 的官方网站,下载适用于 Windows 的 Docker Desktop 安装包。

  3. 安装 Docker Desktop:运行下载的安装包,按照安装向导进行操作,需要重启计算机以完成 Hyper-V 的启用。

  4. 启动 Docker Desktop:重启后,启动 Docker Desktop。在系统托盘中,你应该会看到 Docker 的鲸鱼图标,这表示 Docker 正在运行。

  5. Docker 命令行测试:打开命令提示符或 PowerShell,输入 docker --version 来检查是否安装成功。如果看到 Docker 版本号,说明安装成功。

在 macOS 上安装 Docker

在这里插入图片描述

  1. 确认系统要求:Docker for Mac 需要 macOS Yosemite 10.10 及更高版本,且需要支持 Intel 的 CPU,2010 年之后的 Mac 应该普遍支持。

  2. 下载 Docker Desktop:同样从 Docker 的官方网站下载适用于 macOS 的 Docker Desktop。

  3. 安装 Docker Desktop:打开下载的 .dmg 文件并将 Docker 图标拖放到应用程序文件夹中。

  4. 启动 Docker Desktop:在应用程序中找到并启动 Docker,你会在菜单栏看到 Docker 的图标。如果是首次安装,会有一些许可协议需要同意。

  5. 命令行测试:打开终端,输入 docker --version 以验证安装是否成功。

在 Linux 上安装 Docker(以 Ubuntu 为例)

在这里插入图片描述

  1. 更新软件包:在终端中运行以下命令:

    sudo apt-get update
    
  2. 安装依赖包:安装 apt 以允许使用 HTTPS 存储库:

    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    
  3. 添加 Docker 的官方 GPG 密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
  4. 设置稳定版本的 Docker 源

    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  5. 安装 Docker CE

    sudo apt-get update
    sudo apt-get install docker-ce
    
  6. 启动和验证 Docker:首先启动 Docker,然后验证其安装:

    sudo systemctl start docker
    sudo docker --version
    

Docker 常用命令详解

在这里插入图片描述

安装完 Docker 后,了解 Docker 的常用命令是使用 Docker 的关键,以下是一些基本但非常有用的 Docker 命令:

  1. docker --version:查看 Docker 的版本信息。

  2. docker info:查看 Docker 系统的详细信息,包括容器数量、镜像数量、存储驱动、运行时等。

  3. docker images:显示已下载的 Docker 镜像列表。

  4. docker pull <image>:从 Docker Hub 上下载镜像。可以指定具体的镜像名称比如 nginx,或加上版本号如 nginx:1.19

  5. docker run <image>:创建一个容器并启动它。例如,docker run hello-world 会启动一个简单的示例容器。

  6. docker ps:显示当前正在运行的容器列表。可以加上 -a 选项显示所有容器,包括未运行的。

  7. docker stop <container_id>:停止运行中的容器,需要提供容器 ID 或名称。

  8. docker start <container_id>:启动一个已停止的容器。

  9. docker rm <container_id>:删除一个已停止的容器。

  10. docker rmi <image_id>:删除一个本地镜像。

  11. docker exec -it <container_id> /bin/bash:进入运行中的容器中执行命令,可以用于调试或查看容器内部状态。

  12. docker build -t <tag_name> .:根据当前目录下的 Dockerfile 构建镜像,并打上标签。

  13. docker-compose up:基于 docker-compose.yml 文件来启动一个多容器应用,可以一次性启动多个服务。

  14. docker-compose down:停止并删除由 docker-compose 启动的容器和网络。

Docker 的优势与应用

在这里插入图片描述

Docker 的核心优势在于它的轻量级和便于扩展的特性。容器本身是独立的,可以在任何支持 Docker 的地方运行,开发人员可以在开发环境中构建和测试容器,在发布时保持一致。

1. 轻量级虚拟化

Docker 的容器化技术只包含应用程序及其依赖项,而不包括操作系统的内核,因此比传统虚拟机占用的资源要少得多。这种轻量级的特性使 Docker 可以在同一主机上运行更多实例,同事启动速度几乎是瞬时的。

2. 一致的运行环境

使用 Docker,开发人员可以很容易地在不同的环境中复现同样的运行条件,从而消除“在我机器上可以运行”的问题。通过 Dockerfile 定义应用的依赖,可以轻松构建和分享开发环境,实现开发、测试与生产的环境一致性。

3. 高效的持续集成/持续交付(CI/CD)

Docker 的镜像构建和容器重用功能加速了持续集成和持续交付管道的速度。开发人员可以更快地生成测试环境,并将代码更快速地推送至生产环境。

4. 微服务架构的支持

随着微服务成为现代软件开发架构的趋势,Docker 提供了自动化的部署解决方案,能为设计和管理复杂的微服务架构提供基础设施支持。

生态系统及云端部署

Docker 的生态系统包括许多工具和库来支持开发人员的工作流,如 Docker Compose、Docker Swarm、Kubernetes 等。在大型集群管理和编排中,Kubernetes 无疑是最广泛使用的一个解决方案,它能够实现跨多个主机的容器管理。

在云端,主流的云服务提供商包括 AWS、Azure 和 Google Cloud 都提供 Docker 的托管环境,允许用户在云平台上轻松部署和扩展他们的容器化应用程序。

持续发展的社区和未来发展

Docker 的开源特性使得它拥有一个强壮且活跃的社区。社区成员贡献新的特性、报修漏洞,并提供各种各样的工具和实践以丰富 Docker 的应用。对于未来的发展,Docker 将继续与微服务,DevOps、人工智能和物联网紧密结合,为新兴技术提供更加优雅的解决方案。

综上所述,Docker 是当代软件开发和部署的革命性工具。它不仅提高了软件交付的效率,还极大地增强了应用的可移植性和扩展性。随着技术的不断演进,Docker 是积极改变每个开发者及运维者工作的工具,为新时代的软件开发注入了新的活力。

//python 因为爱,所以学
print("Hello, Python!")

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GoogleNet原理与实战

在2014年的ImageNet图像识别挑战赛中&#xff0c;一个名叫GoogLeNet 的网络架构大放异彩。以前流行的网络使用小到11&#xff0c;大到77的卷积核。本文的一个观点是&#xff0c;有时使用不同大小的卷积核组合是有利的。 回到他那个图里面你会发现,这里的一个通过我们最大的池化…

12条职场经验总结

01 事干得好不好尚且不说&#xff0c;但是话一定要说得漂亮。 比如&#xff0c;当领导给你安排工作的时候&#xff0c;你一定要非常积极地响应&#xff0c;拍着胸脯跟领导说“放心吧”。至于后续到底怎么干&#xff0c;再结合实际情况有的放矢地把握。 02 当别人夸奖你的时…

记录使用crypto-js、jsencrypt实现js加密的方法

实用为主&#xff0c;直接上干货。 使用工具&#xff1a;pycharm专业版2020.3.2。 记录通过crypto-js模块、jsencrypt模块两种方式实现加密。 本文在pycharm中新建一个项目&#xff0c;一步一步记录实现步骤。 一、新建pycharm项目并新建两个js文件&#xff0c;分别命名为c…

Python 工具库每日推荐 【Requests】

文章目录 引言Python网络库的重要性今日推荐:Requests工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例1:获取天气信息案例分析案例2:文件上传案例分析高级特性会话和Cookie处理自定义请求头超时设置代理设置扩展阅读与资源优缺点分析优点:缺…

Markdown 语法详解大全(超级版)(三)——甘特图语法详解

Markdown 语法详解大全(超级版)&#xff08;三&#xff09;——甘特图语法详解 Markdown 语法详解大全(超级版)&#xff08;一&#xff09; Markdown 语法详解大全(超级版)&#xff08;二&#xff09; Markdown 语法详解大全(超级版)&#xff08;三&#xff09; Markdown 语法…

[Linux#61][UDP] port | netstat | udp缓冲区 | stm32

目录 0. 预备知识 1. 端口号的划分范围 2. 认识知名端口号 3. netstat 命令 4. pidof 命令 二.UDP 0.协议的学习思路 1. UDP 协议报文格式 报头与端口映射&#xff1a; 2. UDP 的特点 面向数据报&#xff1a; 3. UDP 的缓冲区 4. UDP 使用注意事项 5. 基于 UDP 的…

栈的介绍与实现

一. 概念与结构 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶&#xff0c;另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out的原则。 压栈&#xff1a;栈的插…

平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗

注意无源代表你立方程那个点xyzt处没有源&#xff0c;电场磁场也是这个点的。 j电流面密度&#xff0c;电流除以单位面积&#xff0c;ρ电荷体密度&#xff0c;电荷除以单位体积。 j方程组有16个未知数&#xff0c;每个矢量有三个xyz分量&#xff0c;即三个未知数&#xff0c;…

k8s的简介和部署

一、k8s简介 在部署应用程序的方式上面&#xff0c;主要经历了三个阶段&#xff1a; 传统部署:互联网早期&#xff0c;会直接将应用程序部署在物理机上优点:简单&#xff0c;不需要其它技术的参与缺点:不能为应用程序定义资源使用边界&#xff0c;很难合理地分配计算资源&…

fiddler抓包18-1_导出jmeter脚本(jmx文件)

课程大纲 方法1 ① 下载2个扩展文件&#xff0c;FiddlerExtensions.dll和FiddlerExtensions.pdb&#xff0c;到Fiddler根目录中的“ImportExport”下&#xff0c;重启Fiddler。 下载链接: https://pan.baidu.com/s/1qtLoaiTd-VfHFb3UIPoSZw?pwdtwcu提取码: twcu ② Fiddler导…

UIAbility组件

一、作用 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件 1、每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。 如果开发者希望在任务视图中看到一个任务,建议使用“一个UIAbility+多个页面”的方…

Qt教程(002):Qt项目创建于框架介绍

二、创建Qt项目 2.1 创建项目 【1、New Project】 【2、选择Qt Widgets Application】 【3、设置项目名称和保存路径】 注意&#xff0c;项目名称和路径不要带中文。 【4、选择QWidget】 带菜单栏的窗口QMainWindow空白窗口QWidget对话框窗口QDialog 【5、编译】 2.2 项目框…

No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史

大家好&#xff01;作为一个喜欢探索本质的INTP&#xff0c;我整理了一份简明易懂的Web安全笔记。希望能帮助你轻松掌握这个领域的核心知识。 这份笔记涵盖了Web发展的历程&#xff0c;从静态的Web 1.0到智能化的Web 3.0。我们将探讨URL和HTTP协议&#xff0c;揭示它们在网络中…

【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。

【深度学习基础模型】神经图灵机&#xff08;Neural Turing Machines, NTM&#xff09;详细理解并附实现代码。 【深度学习基础模型】神经图灵机&#xff08;Neural Turing Machines, NTM&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】神经图灵机&#xf…

利用条件概率解决“两个孩子的性别问题”

利用条件概率解决“两个孩子的性别问题”&#xff1a;深入分析与扩展 在日常生活中&#xff0c;概率问题常常会带来直观上的困惑&#xff0c;尤其是在涉及到条件概率的时候。今天我们讨论的这个问题是一个非常经典的例子&#xff1a;已知一对父母有两个孩子&#xff0c;其中一…

二叉树的中序&后序遍历——非递归版本

1.题目解析 题目来源&#xff1a;二叉树的中序遍历——力扣 测试用例 题目来源&#xff1a;二叉树的后序遍历——力扣 测试用例 2.算法原理 中序遍历 中序遍历&#xff1a;左子树->根节点->右子树 与之前前序遍历的思路基本相同&#xff0c;不过需要注意的是中序变量需要…

今日指数项目股票Code联想推荐功能实现

股票Code联想推荐 1 股票Code联想推荐功能介绍 1) 原型效果 输入框输入股票编码后&#xff0c;显示关联的股票信息; 2&#xff09;接口定义说明 接口说明&#xff1a; 功能描述&#xff1a;根据输入的个股代码&#xff0c;进行模糊查询&#xff0c;返回证券代码和证券名称…

Redis中GEO数据结构实现附近商户搜索

Redis的版本必须是6.2以上 在测试类中将数据导入Redis Testvoid loadShopData(){//1.查询店铺信息List<Shop> list shopService.list();//2.把店铺分组&#xff0c;按照typeId分组&#xff0c;typeId一致的放到一个集合Map<Long, List<Shop>> map list.s…

Spring Boot 三层架构开发模式入门

在 Spring Boot 项目中&#xff0c;构建清晰、易于维护的代码结构至关重要。传统业务逻辑方式往往将所有代码混杂在一起&#xff0c;导致代码难以理解、修改和扩展。三层架构模式的出现正是为了解决这些问题&#xff0c;让我们深入了解它带来的改变。 一、传统业务逻辑方式 假…