Docker安装使用教程

news/2025/3/17 13:55:16/文章来源:https://www.cnblogs.com/zwh1120/p/18233220

Docker安装使用教程

Docker是什么

Docker是一个容器化开源平台,它使开发者可以再容器中封装应用程序,以及其依赖的所有组件,包括操作系统、库文件、环境变量等,并以轻量级、可移植的方式进行交付和部署.

Docker的三大核心概念是:

镜像(Image):镜像是Docker的基本构建块,它是一个只读的模板或蓝图,用于创建Docker容器。镜像包含了运行应用所需的操作系统、应用程序代码、运行时依赖项以及各种配置文件。你可以使用Docker命令从镜像创建容器。

容器(Container):容器是基于镜像创建的运行实例。每个容器都是一个独立的、安全隔离的运行环境,其中包含了必要的运行时组件和应用程序。容器可以启动、启动、停止、删除并重启。

仓库(Registry):仓库是用于存储和分享Docker镜像的地方。Docker Hub是官方的公共仓库,你可以在其中找到大量的官方和社区创建的镜像。此外,你还可以搭建自己的私有仓库来存储和管理自己的镜像。

为什么选择Docker

容器是一种轻量级的虚拟技术(是第二代云计算技术),但是与传统虚拟机不同,容器的技术更加高效,轻量因为它们共享主机操作系统的内核,相互之间的隔离程度更低.Docker利用Linux内核的cgroups和命名空间等特性,提供了一种隔离的运行环境,应用程序可以在容器内部独立运行,互不影响。

容器类似于是汽车,docker则类似于是一个知名的汽车品牌,但是docker起步比较早,并且发展迅速.

有点老大哥的感觉,虽然存在一些问题(比如,占用资源,安全性漏洞可能会导致宿主机的安全问题,需要用到数据卷来解决持久化问题,存在一定的学习曲线和复杂性).有类似的容器技术在此基础上做出了优化,但是奈何docker功能过于强大,目前docker容器技术依旧是主流.

在一般情况下,容器,镜像,应用程序之间的关系是一对一的,目的是,更加容易管理和维护,降低了相互干扰的风险.

但是在特殊情况下,可以使一对多的关系,但是要保证多个之间相互没有冲突,并每个都可以独立启动和停止.

docker技术的出现解决了那些问题:

1:应用程序与环境的一致性:在传统的应用程序部署中,由于生产,开发,测试,的环境不同所以时常会出现程序无法正常运行的问题.Docker 使用容器化技术,将应用程序及其依赖项打包成容器,使得应用程序能够在不同的环境中以相同的方式运行,保证了应用程序环境的一致性。

2快速部署和交付:传统的应用程序部署通常需要手动配置环境、安装软件和调整参数,耗时且容易出错。Docker 提供了一种快速部署和交付应用程序的方式,通过使用容器镜像,可以快速地在目标主机上启动一个容器,并将应用程序及其依赖项一并交付,极大地简化了部署过程,提高了交付效率。

3资源利用率优化:传统的虚拟化技术通过在物理主机上运行多个虚拟机来实现资源的利用率优化。然而,每个虚拟机都需要运行一个完整的操作系统,占用了较多的资源。Docker 使用操作系统级别的虚拟化技术,共享主机操作系统内核,多个容器可以运行在同一个宿主机上,实现了更高的资源利用率。

4运维简化:Docker 提供了一套简单易用的命令行接口和管理工具,使得容器的创建、启动、停止和管理变得非常方便。通过使用 Docker,开发人员和运维团队可以更好地协作,简化应用程序的部署和管理流程,减少了运维的工作量。

安装教程:

下载Docker客户端

https://www.docker.com/products/docker-desktop

开启虚拟化

打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,点击确定后,启用完毕会提示重启系统,我们可以稍后再重启。

descript

安装WSL2(Windows Subsystem for Linux)

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

配置阿里云镜像加速

获取阿里云镜像加速器地址

登录阿里云

阿里云-计算,为了无法计算的价值 (aliyun.com)

descript

descript

descript

descript

配置Docker客户端加速器

打开Docker客户端

右键点击任务栏Docker,点击Settings,找到Docker Engine 添加

"registry-mirrors": [

"https://xxxx.xxxx.aliyuncs.com"(阿里云镜像加速器地址)

]

descript

参考文档:

(2条消息) win10安装docker教程_Bruce-li__的博客-CSDN博客

(2条消息) window11安装docker小白教程_windows11安装docker_在养一只虎纹�的博客-CSDN博客

项目部署

后端API项目

Web解决方案 右键新增支持Docker 生成Dockerfile 文件 (将本地的需要的依赖项以及配置进行说明,在Docker创建镜像时使用).

descript

将Dockerfile文件放到与控制器文件同等目录下 在资源文件框中输入cmd

进入命令提示符: docker build -t 镜像名 .(最后的点不能少)

输入 docker images 查看镜像是否生成

创建容器将镜像放到容器上运行

docker run -d --name 容器名称 -p 端口号:端口号 镜像名称 也可以在客户端进行操作 点击左侧images 找到生成的镜像 点击三角符号运行 配置端口号

docker ps 查看正在运行的容器

docker ps -a 查看所有的容器

容器正常运行即可访问接口

也可以通过 docker exec -it 容器名称 /bin/bash 进入容器内部 (一般用于前端执行命令)

前端Vue 项目

  1. 在项目目录下创建Dockerfile 文件 (大小写需要严格遵循)

descript

  1. 构建Dockerfile

# 使用基础的 Node.js 镜像作为基础镜像(根据项目实际需要node版本更改)

descript

FROM node:19

# 设置工作目录

WORKDIR /app

# 复制 package.json 和 package-lock.json 到工作目录

COPY package*.json ./

# 安装项目依赖(根据不同版本Node 安装依赖包命令适当更改)

RUN npm install

# 将项目文件复制到工作目录

COPY . .

# 构建 Vue 项目

RUN npm run build

# 暴露容器的端口号

EXPOSE 8080

# 运行应用

CMD ["npm", "run", "serve"]

  1. 打开Dockerfile所在文件(用资源管理器打开) 地址栏输入Cmd进入命令提示符

descript

  1. 输入docker build -t 镜像名称 .

descript

  1. docker images 查看生成镜像

descript

  1. docker run -d --name 容器名称 -p 端口号:端口号 镜像Id

descript

运行容器成功,访问端口.

Docker常用命令

镜像相关操作:

  • docker images:列出本地的镜像列表。
  • docker pull <image_name>:从镜像仓库中下载指定的镜像。
  • docker build -t <image_name> <Dockerfile_path>:根据 Dockerfile 构建新的镜像。
  • docker push <image_name>:将本地镜像推送到镜像仓库。
  • docker rmi <image_name>:删除指定的镜像。

容器相关操作:

  • docker run <image_name>:基于镜像创建并运行新的容器。
  • docker ps:列出正在运行的容器列表。
  • docker stop <container_id>:停止指定的容器。
  • docker start <container_id>:启动已经停止的容器。
  • docker restart <container_id>:重启指定的容器。
  • docker rm <container_id>:删除指定的容器。
  • docker exec -it <container_id> <command>:在正在运行的容器中执行命令。

docker exec -it /bin/bash 进入容器内部

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

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

相关文章

未来5年,只有这种产品团队才能开启上帝视角【玩转IPD】

一家企业如何在波涛汹涌的市场浪潮中站稳脚跟?一个团队如何快速识别风险发现机遇,成为行业的标杆?一家企业如何在波涛汹涌的市场浪潮中站稳脚跟?一个团队如何快速识别风险发现机遇,成为行业的标杆?市场瞬息万变,如何准确地响应市场动向,紧跟用户需求?这些问题,已成为…

Linux 部署 MinIO(远程服务器)

1. 下载安装 进入 Linux 内# 我习惯放在local下 cd /usr/local/# 新建目录 mkdir minio # 进入目录 cd minio下载路径:# 下载地址 wget https://dl.min.io/server/minio/release/linux-amd64/minio授权:# 授权 chmod +x minio 2. 自定义配置 自定义账号与登录密码,直接在本…

STM32H743 ADC+DMA

1.** STM32CubeMX 配置如下:** ADC: 配置通道配置ADC的工作模式,这里用到了DMA使用ADC中断DMA2的通道4对应ADC2GPIO的配置,没有配置上下拉DMA配置:用STM32H743用DMA传输ADC的数据会有一个需要注意的点,需要将传输数据的buf配置在固定的某一段RAM中。 #define ADC_CONVERTE…

裁剪的3种方式,CSS 如何隐藏移动端的滚动条?

在移动端开发中,经常会碰到需要横向滚动的场景,例如这样的但很多时候是不需要展示这个滚动条的,也就是这样的效果,如下你可能想到直接设置滚动条样式就可以了,就像这样::-webkit-scrollbar {display: none; }目前来看好像没什么问题,但在某些版本的 iOS 上却无效(具体待…

golang使用OpenCC繁简转换

https://github.com/longbridgeapp/opencc main.go package mainimport ("fmt""log""github.com/longbridgeapp/opencc" )func main() {s2t, err := opencc.New("s2t")if err != nil {log.Fatal(err)}in := `我来测试一下简转繁`out, …

visual studio 插件开发 - 项目介绍

1.项目结构 创建步骤: 1.创建名为 xxxx 的 VSIX 项目。 可以通过搜索“vsix”在“新建项目”对话框中找到 VSIX 项目模板。2.项目打开时,添加名为 FirstCommand 的自定义命令项模板。创建好一个 vsix 项目后最简单的结构:XXXXPackage.cs 称为 Package 类。 Visual Studio 调…

ASP.NET Core应用程序9:使用内置的标签助手

ASP.NET Core 提供了一组内置的标签助手,可以应用最常用的元素转换。使用了内置的标签助手,就不必像前一章一样自己创建自定义标签助手。本章描述了基本的内置标签助手,并解释了它们是如何用于转换锚、链接、脚本和图像元素的。还解释了如何缓存内容部分以及如何根据应用程序…

自媒体--视频技巧

多个图片+文字做视频

mybatis - [07] 模糊查询

题记部分 (1)mapper类 List<User> getUserLike(String value); (2)mapper.xml <!-- 写法1 --> <select id="getUserLike" resultType="com.harley.pojo.User">select * from user where name like #{value} </select><!-- …

sqlserver 通过压缩bak文件实现从服务器还原数据库《数据差异数个小时》

十年河东,十年河西,莫欺少年穷 学无止境,精益求精 1、备份主服务器数据库并压缩public void DbBack(){var bakname = @"ChargeDB_" + DateTime.Now.ToString("yyyyMMdd") + ".bak";string filepath = @"D:\dbback\" + bakname;if (…

nuxt简单入门安装

参考:https://www.jianshu.com/p/fd99718a63e9 @目录概要具体流程小结 概要 听说直接使用vue写前端对百度的seo不够友好,于是便考虑使用nuxt生成静态化来处理 具体流程 首先你的本机环境要有npm,如下图然后可以使用npx安装nuxt,npx是npm5点几就支持的了,但是我这一开始还不…

工作记录02

1.升降摄像头项目踩坑,红外串口接收时,linux系统下使用read函数是非阻塞接收,当需要接收多字节数据时,会出现只接收到第一个字节的情况 解决办法:改为一次接收一个字节并且加入判断,当需要的数据都接收完全再进行处理或返回