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

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.rhkb.cn/news/171103.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dataworks API:调取 MC 项目下所有表单

文章目录 前言Dataworks API 文档解读GetMetaDBTableList 接口文档 API 调试在线调试本地调试运行环境账密问题请求数据进一步处理 小结 前言 最近,我需要对公司的数据资产进行梳理,这其中便包括了Dataworks各个项目下的表单。这些表单,作为…

js中的Formdata数据结构

这里写目录标题 一、基本概念二、常用方法1.append(name, value)、set(name, value)2.get()、getAll()3.has(name)4.delete(name)5.keys(),values(),entries() 三、其他细节1.for of遍历2.转为对象3.结合 URLSearchParams 转为queryString 一、基本概念 FormData 提供了一种表…

【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》

在软考中软件工程模块主要包含以下考点: 文章目录 软件过程模型🌟🌟🌟🌟逆向工程🌟基于构件的软件工程🌟🌟软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…

learning rate

这里写目录标题 learning rate单一固定(one-size-fits-all)的学习率Model训练到驻点很困难(学习率太大不能收敛,学习率太小收敛太慢) 如何客制化学习率?- 引入参数σσ常见的计算方式 - Root mean square&a…

P1868 饥饿的奶牛

根据题意可以知道是一个动态规划,看完数据范围之后可以知道是一个线性DP。 解决方法有点类似于背包问题,枚举背包的每一个空间。 如果把坐标轴上每个点都看成一个块儿,只需要按顺序求出前 i 个块儿的最大牧草堆数,f[i] 就是前i的…

【wespeaker】模型ECAPA_TDNN介绍

本次主要介绍开源项目wespeaker模型介绍 1. 模型超参数 model_args: feat_dim: 80 embed_dim: 192 pooling_func: “ASTP” projection_args: project_type: “softmax” # add_margin, arc_margin, sphere, softmax scale: 32.0 easy_margin: False 2. 模型结构 2.1 Layer…

【Javascript】ajax(阿甲克斯)

目录 什么是ajax? 同步与异步 原理 注意 写一个ajax请求 创建ajax对象 设置请求方式和地址 发送请求 设置响应HTTP请求状态变化的函数 什么是ajax? 是基于javascript的一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下&#xff0c…

一个Entity Framework Core的性能优化案例

概要 本文提供一个EF Core的优化案例,主要介绍一些EF Core常用的优化方法,以及在优化过程中,出现性能反复的时候的解决方法,并澄清一些对优化概念的误解,例如AsNoTracking并不包治百病。 本文使用的是Dotnet 6.0和EF…

HarmonyOS鸿蒙原生应用开发设计- 流转图标

HarmonyOS设计文档中,为大家提供了独特的流转图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的流转图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的图标侵权意外情况等,减…

【Linux】Linux+Nginx部署项目

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.单体项目的部署 0.我们需要将要进行部…

数据结构与算法之矩阵: Leetcode 48. 旋转矩阵 (Typescript版)

旋转图像 https://leetcode.cn/problems/rotate-image/ 描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1 输入&…

评比无代码低代码平台时,可以考虑以下几个方面

无代码低代码平台是近年来兴起的一种软件开发工具,它们旨在帮助非技术人员快速创建应用程序,而无需编写大量的代码。这些平台通过提供可视化的界面和预先构建的组件,使用户能够通过拖放和配置的方式来构建应用程序。选择无代码低代码平台时&a…

【Jenkins 安装】

一:安装文件夹准备 在/home/admin 界面下新建三个文件夹,用来安装tomcat、maven 1.打开,/home/admin目录 cd /home/admin 2.新建三个文件夹 mkdir tomcat mkdir maven 二:安装tomcat 1.打开tomcat目录进行tomcat的安装 访问:h…

微信小程序:点击按钮出现右侧弹窗

效果 代码 wxml <!-- 弹窗信息 --> <view class"popup-container" wx:if"{{showPopup}}"><view class"popup-content"><!-- 弹窗内容 --><text>这是一个右侧弹窗</text></view> </view> <…

8.(vue3.x+vite)组件间通信方式之window挂实例

前端技术社区总目录(订阅之前请先查看该博客) 效果预览 父组件代码 <template><div><div>{{message }}</div><Child

mybatis学习笔记,使用mybatis的几种方式

随着springboot的出现&#xff0c;绝大多数开源框架和中间件都可以通过springboot来整合&#xff0c;并且使用起来非常简单&#xff0c;但是&#xff0c;今天要介绍的是mybatis原生的使用方法。并且分享一下在结合官网学习过程中遇到的问题。 目录 准备工作 数据库版本说明 …

在VMware Workstation Pro安装win7

1.下载 地址 2.创建虚拟机 3.选择需要安装的系统镜像 4.选择系统版本 通常情况下选择 Windows 7 Ultimate 旗舰版&#xff0c;点击下一步&#xff0c;若提示产品密钥&#xff0c;则忽略 5.虚拟机命名 虚拟机保存位置保持默认即可&#xff0c;如果有需求可以更换位置 6…

机架式服务器介绍

大家都知道服务器分为机架式服务器、刀片式服务器、塔式服务器三类&#xff0c;今天小编就分别讲一讲这三种服务器&#xff0c;第一篇先来讲一讲机架式服务器的介绍。 机架式服务器定义&#xff1a;机架式服务器是安装在标准机柜中的服务器&#xff0c;一般采用19英寸的标准尺寸…

竞赛选题 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人脸表情识别系…

Mysql数据库 4.SQL语言 DQL数据查询语言 查询

DQL数据查询语言 从数据表中提取满足特定条件的记录 1.单表查询 2.多表查询 查询基础语法 select 关键字后指定要查询到的记录的哪些列 语法&#xff1a;select 列名&#xff08;字段名&#xff09;/某几列/全部列 from 表名 [具体条件]&#xff1b; select colnumName…