学会Docker之——界面化操作(Docker Desktop)

news2024/9/24 23:29:57

Docker Desktop 是一款用于在桌面环境下开发、构建和容器化应用程序的工具。它适用于 Windows 和 Mac 操作系统,让开发人员可以轻松地在本地环境中创建和运行容器,并与 Docker Hub 和其他容器注册表进行交互。Docker Desktop集成了Docker Engine,Docker Compose 和Docker CLI 工具,可以让用户更加简单地创建和管理 Docker 容器。

  • Docker Engine是Docker的核心组件,是一种轻量级容器化技术,可在单个主机或云环境中运行容器。它允许应用程序在容器中打包、分发和运行,使应用程序的部署和管理更加简单和可靠。Docker Engine包括了Docker守护进程和Docker CLI,可以一起使用来构建、运行和管理Docker容器。
  • Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件来配置应用程序的服务,并在单个命令下启动和停止容器。Docker Compose可以使开发者轻松地将应用程序的各个组件(例如,数据库、Web服务器和应用程序)一起进行管理,而无需手动地创建、运行和连接各个容器。使用Docker Compose可以帮助开发者快速建立环境,提高部署速度和开发效率。
  • Docker CLI(Command Line Interface)是用于与Docker引擎进行交互的命令行工具,它提供了一组命令和选项,可以用于管理Docker容器、镜像、网络和数据卷等。Docker CLI是Docker生态系统中最基本、最常用的工具之一,可以通过命令行轻松地创建、运行、停止和删除Docker容器,以及构建、推送和拉取Docker镜像。

本篇介绍在Docker Desktop 上的一些操作。

多容器应用

Docker提供了一个工具: Docker Compose , 可以实现通过一条命令启动多个容器。
接下来就以一个实例来演示Docker Compose的使用。

  1. 从Git 拉取multi-container-app 项目
git clone https://github.com/docker/multi-container-app

这是一个使用ExpressJS和Node构建的简单todo应用程序。所有todo都保存在MongoDB数据库中。
在这里插入图片描述

  1. compose.yaml 配置文件
    从Git 复制的目录中有一个compose.yaml,这个文件就是告诉Dockers如何运行应用。
    在这里插入图片描述

该文件的内容如下:

在这里插入图片描述

  1. 运行应用
docker compose up -d 

在项目路径运行,这个命令会构建和运行在compose 文件中列出的所有服务。

  • -d 用于告诉docker compose 以 detached模式运行
  1. 在前端查看效果
    在Docker Destop中, 可以看到todo-app 和todo-database两个容器在运行。
    选择link localhost:3000

在这里插入图片描述

http://localhost:3000/
在这里插入图片描述

  1. 删除
    将配置存储在Compose文件中还有另一个优点,可以轻松地删除所有内容并重新启动。

只需选择应用程序堆栈,然后在Docker Desktop上选择Delete。当您想重新启动时,请再次在项目文件夹中运行docker compose up。这将重新启动应用程序。请注意,当数据库容器被删除时,创建的任何todo也会丢失。

在这里插入图片描述

持久化容器的数据 (volumn)

Docker将容器中的所有内容、代码和数据与本地文件系统隔离开来。这意味着,当在Docker Desktop中删除容器时,其中的所有内容都将被删除。
有时,可能希望持久化容器生成的数据。此时可以使用卷(volumn)。

在这里插入图片描述

这里沿用上面的multi-container-app 的例子。
如果要在删除容器后仍保留数据,可以使用卷。卷是本地文件系统中的一个位置,由Docker管理。
在这里插入图片描述

要向该项目添加卷,只需转到compose.yaml文件并取消注释以下行:

todo-database:
    # ...
    volumes:
      - database:/data/db
                      
# ...
volumes:
  database:

嵌套在todo-database中的volumes元素告诉Compose将名为database的卷装载到todo-data服务的容器中的/data/db。
顶级卷元素定义并配置名为卷的数据库,Compose文件中的任何服务都可以使用该数据库。
现在,无论多久删除和重新启动一次容器,数据都是持久的,并且可以通过装载数据库卷对系统上的任何容器进行访问。Docker将检查一个卷,如果没有,则创建一个卷。
使用项目目录中的docker compose-up命令运行此应用程序。

docker compose up -d

现在,当在本地系统上开发应用程序时,可以利用容器的环境。在本地系统上对应用程序所做的任何更改都会反映在容器中。在本地目录中,在IDE或文本编辑器中打开app/views/todos.js,更新Enter your task字符串,然后保存文件。访问或刷新localhost:3001⁠ 查看更改。

从容器访问本地文件夹

Docker将容器中的所有内容、代码和数据与本地文件系统隔离开来。
有时,可能希望容器访问系统上的目录。这是您使用绑定装载的时候。

git clone https://github.com/docker/bindmount-apps

如果您想访问系统上的数据,可以使用绑定装载。绑定装载允许您将主机文件系统中的一个目录共享到容器中。

要向该项目添加绑定装载,只需转到compose.yaml文件并取消注释以下行:

todo-app:
    # ...
    volumes:
      - ./app:/usr/src/app
      - /usr/src/app/node_modules

volumes元素告诉Compose装载本地文件夹/应用程序到todo应用程序服务容器中的/usr/src/app。这个特定的绑定装载覆盖容器中/usr/src/app目录的静态内容,并创建所谓的开发容器。第二条指令/usr/src/app/nod_module防止绑定装载覆盖容器的node_modules目录,以保留容器中安装的包。

应用的容器化

使用容器时,通常需要创建一个Dockerfile来定义映像,并创建一个compose.yaml文件来定义如何运行映像。
为了帮助您创建这些文件,Docker有一个名为docker init的命令。在项目文件夹中运行此命令,Docker将创建所需的所有文件。

docker init

Docker会检测你项目的语言,并提示你选择一种语言。如果语言在列表中,则可以选择该语言;如果语言不在列表中则可以选择“其他”。

docker init将引导解决几个问题,以便使用合理的默认值配置项目

一旦回答了所有的问题,你可以运行docker compose来运行你的项目。

然而,为项目创建的Dockerfile和compose.yaml文件可能需要额外的更改。在这种情况下,可能需要查找Dockerfile引用⁠ 和撰写文件引用⁠ 在我们的文档中。

发布镜像

1.登录 Docker
在这里插入图片描述

  1. 重命名镜像
docker tag docker/welcome-to-docker YOUR-USERNAME/welcome-to-docker
  1. 发布进行到Docker Hub
    在镜像的Action 列, 选择 Show Image action 图标, 单击后在弹出菜单选择 “Push to Hub”
    在这里插入图片描述

  2. 进入Dockers Hub的地址就可以看到发布的镜像了。 https://hub.docker.com/

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

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

相关文章

C语言文件操作(详解)

💓博客主页:江池俊的博客⏩收录专栏:C语言进阶之路👉专栏推荐:✅C语言初阶之路 ✅数据结构探索✅C语言刷题专栏💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论&#x…

Maven历史版本下载

网址: https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/

个人博客测试报告

目录 一、项目背景 二、项目功能 三、测试计划 功能测试 1、测试用例 ​编辑 2、 实际执行测试的部分操作步骤/截图 3、发现的bug 自动化测试 博客访问连接 一、项目背景 个人博客系统采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据&#xf…

文心一言简单体验

百度正式发布文心一言,文心一言 这里的插件模式挺有意思: 测试了一下图解说明,随意上传了一张图片: 提供图解让反过来画,抓住了部分重点,但是还是和原图有比较大的差异! 百宝箱 暂未逐个体验&am…

台灯应该买什么样的才能护眼?五款专业的护眼台灯推荐

台灯主要还是以护眼台灯为主,因为不仅色谱丰富,贴近自然色的全光谱色彩,通常显色指数都能达到Ra95以上,显色能力特别强,而且还具有其他防辐射危害、提高光线舒适度的特性,比如侧发光技术、漫反射技术等大大…

Windows更新强制关闭

使用管理员身份运行cmd或者使用powershell 执行下述命令 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 36525 /f可以看到更新选项中可以截止到2123年,我感觉比我生命的终点要靠后了! …

设树B是一棵采用链式结构存储的二叉树,编写一个把树 B中所有结点的左、右子树进行交换的函数 中国科学院大学2015年数据结构(c语言代码实现)

本题代码如下 void swap(tree* t) {if (*t)// 如果当前节点非空 {treenode* temp (*t)->lchild;// 临时存储左子节点 (*t)->lchild (*t)->rchild;// 将右子节点赋值给左子节点(*t)->rchild temp;// 将临时存储的左子节点赋值给右子节点 swap(&(*t)->l…

c语言进制的转换10进制转换2进制

c语言进制的转换之10进制转换2进制 c语言10进制转换2进制 c语言进制的转换之10进制转换2进制一、10进制转换2进制的方法 一、10进制转换2进制的方法 十进制转二进制: 除二反序取余法:将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果 END

机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)

KNN-手写数字数据集: 使用sklearn中的KNN算法工具包( KNeighborsClassifier)替换实现分类器的构建,注意使用的是汉明距离; 运行结果:(大概要运行4分钟左右) 代码: import pandas as…

JavaWeb——Servlet原理、生命周期、IDEA中实现一个Servlet(全过程)

6、servlet 6.1、什么是servlet 在JavaWeb中,Servlet是基于Java编写的服务器端组件,用于处理客户端(通常是Web浏览器)发送的HTTP请求并生成相应的HTTP响应。Servlet运行在Web服务器上,与Web容器(如Tomcat&…

警惕!又2本期刊被“On Hold”!

【SciencePub学术】 此前,继一本SSCI期刊被取消“On hold”标识后,仍处于“On Hold”状态的期刊有6本,其中包括4本SCI期刊和2本ESCI期刊。近日,经小编查询,又新增2本“On Hold”期刊,详情如下:…

实例演示:拉格朗日乘子法(Lagrange multiplier method)

拉格朗日乘子法(Lagrange multiplier method)是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有d个变量与k个约束条件的最优化问题转化为具有dk个变量的无约束优化问题求解。这种方法将一个有n个变量与k个约束条件的…

以数据赋能,星辰天合推进智慧化校园建设

近日,上海市高等教育学会校园网络专业委员会 2023 年度学术年会在上海举办,本次会议以“数智赋能教育 生成美好未来”为主题,围绕 AI 与教育融合、高校数字化转型创新发展等内容进行了专业研讨。 XSKY星辰天合解决方案总监李瑞宇作了《应用融…

ETHERNET/IP从站转CANOPEN主站连接AB系统的配置方法

你还在为配置网关的ETHERNET/IP从站和CANOPEN主站发愁吗?今天来教你解决办法! 一,首先,配置网关的ETHERNET/IP从站,需要使用AB系统的配置方法,具体步骤如下 1,使用 AB 系统配置网关的 ETHERNET/…

Leetcode—547.省份数量【中等】

2023每日刷题(八) Leetcode—547.省份数量 实现代码 static int father[210] {0};int Find(int x) {if(x ! father[x]) {father[x] Find(father[x]);}return father[x]; }void Union(int x, int y) {int a Find(x);int b Find(y);if(a ! b) {fathe…

【java学习—八】单例设计模式(5)

文章目录 1. 相关概念2. 单例设计模式-饿汉式3. 单例设计模式-懒汉式4. 总结 1. 相关概念 单例:只有一个实例(实例化对象) 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的…

MTC怎么办理?什么产品需要做MTC?

什么是MTC认证? 欧盟MTC认证也叫EN 10204认证,也叫承压材质认证。主要是对金属,钢材的一个追溯来源。 对于所有风险等级压力设备的承压部件材料及直接焊接到承压部件上的附件, 压力设备制造商必须通过向材料制造商索要保证其可追溯…

Android 应用流量监控实践

背景 得物Apm系统本身包含网络接口性能监控的能力,但接口监控主要关注的是接口的耗时、异常率等信息,没有流量消耗相关维度的统计信息,并且一部分流量消耗可能来自于音视频等其他特殊场景,在接口监控的盲区外。 为了了解用户目前…

EPB功能开发与测试(基于ModelBase实现)

ModelBase是经纬恒润开发的车辆仿真软件,包含两个大版本:动力学版本、智能驾驶版本。动力学版包含高精度动力学模型,能很好地复现车辆在实际道路中运行的各种状态变化,可用于乘用车、商用车动力底盘系统算法开发、控制器仿真测试&…