如何在Windows系统上部署docker

上次在Windows系统上部署成功Ubuntu系统,这次准备在Windows上部署docker desktop应用

这个应用软件类似于虚拟机,可以在该应用软件上部署多个镜像容器。其最直观的表现就是可以借用Windows和Ubuntu终端来访问docker“模拟的系统”。

Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

  1. 1.

    DockerClient客户端

  2. 2.

    Docker Daemon守护进程

  3. 3.

    Docker Image镜像

  4. 4.

    DockerContainer容器 

Docker部署

Docker部署强烈参考Windows Docker 安装 | 菜鸟教程,在此十分感谢

Docker Desktop安装

0.0

官方下载链接

Docker: Accelerated Container Application Development

docker 推出了不同系统支持的版本,这里我们下载支持Windows的docker desktop。

0.1

注意管理员安装后,需要重启电脑(注意保存资料)

重启后,稍等片刻弹出如下,点击接受,纯个人使用免费

0.2

默认选择自动配置,点击finish

0.3

选择登录或不登录,我这里选择不登录

0.4

如实填写,点击continue

0.5

0.5.1

安装完成后,会在Windows桌面出现一个Docker Desktop小图标

0.5.2

注意!!!

点击Docker Desktop,打开发现持续很长时间,这是因为Docker Desktop有两个依赖没有安装上

Docker Desktop依赖部署

Hyper-V启用

Hyper-V是Windows系统默认自带的虚拟机,如果没有Hyper-V,需要检查自己的系统是否完整

这里提供两种安装方式

第一种,命令行方式

0.0

找到powershell,鼠标右键以管理员身份运行

//PowerShell一般在自己的系统用户名目录下,找到

C:\Users\自己的系统用户名目录下\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

0.1

直接使用管理员打开PowerShell,输入如下命令,该命令用来启动Hyper-V

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

 if(出现如下情况,表明没有启动Hyper-V,输入yes启动),需要重启,注意文件保存!!!

else if(出现如下情况,表明启动了Hyper-V,不需要任何操作,进行下一步)

第二种,窗口勾选方式

0.0

选择电脑桌面右下角,找到如下图标(或者是网络图标),在该图标上点击鼠标右键,打开网络和Internet设置

0.1

弹出如下窗口,点击网络和共享中心

0.2

弹出如下窗口,点击控制面板主页

0.3

弹出如下窗口,点击程序

0.3.1

注意!!!如果弹出的是如下两个窗口,点击查看方式,选中类别

 0.4

点击程序后,弹出如下窗口,点击启用或关闭Windows功能

0.5

弹出如下窗口,找到Hyper-V,左边的+全部展开,都勾选上,点击确定,弹出重启窗口,确定重启,重启后就会启用了。

WSL安装

安装WSL链接,强烈推荐参考,十分感谢

安装 WSL | Microsoft Learn

一、命令行安装

注意!!!默认安装Ubuntu的Windows子系统,如果需要安装其他子系统参考上方链接

0.0

右键管理员权限打开PowerShell,输入如下命令联网安装WSL,之后重启即可

wsl --install

二、手动安装

如果Windows系统更新被禁止或者系统不支持访问MicroSoft网络,或者Windows系统版本受支持过期等愿意,可以手动安装

旧版 WSL 的手动安装步骤 | Microsoft Learn

这里选择安装Ubuntu2204-221101.AppxBundle

0.0

右键安装或者鼠标双击安装

0.1

耐心等待安装完成即可

0.2

输入自定义用户名(除root和不要大写,root是根用户),然后按照提示输入密码,即安装上WSL

0.3

WSL安装成功后,Docker Desktop要想能用,还需要启用WSL,输入如下命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

//或者

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

//并设置默认WSL2。WSL有两个版本,WSL1和WSL2,注意!!!设置如下命令,WSL必须已经启动

 wsl --set-default-version 2

0.4

WSL安装之后,建议重启

Docker部署验证

检测Hyper-V状态

右键管理员权限打开PowerShell,输入如下命令

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

 检测WSL状态

打开自的Ubuntu,方法:从,左下角的放大镜,输入Ubuntu,即可看到

检测docker状态

双击桌面Docker Desktop,出现如下页面,恭喜启动成功

Docker使用

获取Base镜像

Docker是容器,镜像则是工具,获取镜像纳入容器里头,Docker就活了。

(注意这里的镜像是兼容Docker的镜像,并不是iso等格式镜像)

镜像链接:https://hub.docker.com/

查看镜像

检测Docker容器内是否存在镜像,Win+R,在运行窗口输入cmd,打开Windows终端(cmd),输入如下命令

docker images

如果是这种,表明容器内是空的,没有镜像

REPOSITORY:镜像的仓库源

TAG:镜像的标签(同一个仓库源可以有不同的标签,可以代表不同的镜像版本)

IMAGE ID:镜像的ID

CREATED:镜像创建时间

SIZE:镜像大小

0.1

获取镜像有两种方法

0.1.0

如果本地有docker镜像包,直接输入如下命令将镜像推入容器内

docker load -i ./镜像包

0.1.1

我没有,所以我需要联网下载,这里我使用Ubuntu镜像

输入如下命令,会联网下载Ubuntu22.04版本的镜像(如果想下载最新版镜像,不写版本号,直接docekr pull ubuntu即可)

docker pull ubuntu:22.04

docker images //查看是否下载成功

创建Base镜像容器

输入如下命令,来运行Ubuntu22.04镜像,创建一个容器,并命名,使用exec来进入容器(exec进入容器后,使用exit退出容器后,容器不会终止而是在后台运行)

docekr run -itd --name my_ubuntu22.04 ubuntu:22.04

docekr exec -it my_ubuntu22.04 /bin/bash

-i是交互式操作

-t是运行终端

-d是在后台运行

--name表示给ubuntu镜像创建的容器起一个名字,这里我给新创建的容器起名为my_ubuntu22.04

ubuntu:22.04是ubuntu仓库源+版本号的结合体,用来指定为哪一个镜像创建一个容器

查看容器

docker ps -a

CONTAINER ID:容器的ID

IMAGE:创建容器的镜像(一般是仓库源+版本号组成)

COMMAND:运行容器指定要运行的命令终端工具

CREATED:容器被创建的时间

STATUS:容器的状态

PORTS:端口(一般涉及到Web)

NAMES:容器的名字(可以通过--name自定义容器名字)

启动Base镜像容器

启动Base镜像容器有两种

0.0

输入run命令,创建一个新的容器并直接启动和进入容器(run命令会在镜像的基础上创建一个新的容器),没有--name,会自动创建一个容器名字

docker run -it my_ubuntu22.04 /bin/bash

0.1

输入start命令,启动一个已有的容器,不会直接进入容器(如果想直接进入容器,使用docker start -i <容器ID/容器名字>)

docker start <容器ID/容器名字>

进入已启动的Base镜像容器

进入已经启动的容器,一般是因为-d(后台运行)或者start不带-i的缘故,需要进入容器有两种方式

0.0

使用attach命令(退出后,容器会终止)

0.1

使用exec命令(exec命令进入容器,exit后,容器并不会终止,而是在后台继续运行)

退出/停止Base镜像容器

退出容器,直接输入exit即可,停止容器,使用stop即可

重启Base镜像容器

使用restart命令重启容器

导出Base镜像容器

使用export命令导出Base镜像容器到本地

docker export my_ubuntu22.04 > E:\docker-images\Ubuntu22.04.tar

//注意文件夹命名不能带空格,否则导出失败

导入Base镜像容器

0.0

使用import命令导入镜像(会创建一个新的镜像,容器并没有增加)

0.1

使用load命令导入

docker load -i <容器>

//需要注意的是,load导入镜像需要Dockerfile文件,Dockerfile后续在接着讲解

删除

删除容器,使用rm命令

删除镜像,直接打开Docker Desktop应用界面, 点击垃圾桶删除即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA建造者模式详解

建造者模式 1 建造者模式介绍 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 **建造者模式要解决的问题 ** 建造者模式可以将部件和其组装过程分开…

cesium系列篇:Entity vs Primitive 源码解析(从Entity到Primitive)02

上篇文章中&#xff0c;我们介绍了使用viewer.entities.add添加entity之后的信号传递以及最后entity对象被传递到GeometryVisualizer&#xff1b; 这篇文章&#xff0c;我们则介绍如何在逐帧渲染的过程中根据GeometryVisualizer中的entity对象创建相应的primitive 这是下文中…

正点原子--STM32通用定时器学习笔记(2)

1. 通用定时器输入捕获部分框图介绍 捕获/比较通道的输入部分&#xff08;通道1&#xff09; 采样频率&#xff1a;控制寄存器 1(TIMx_CR1)的CKD[1:0] ⬇⬇⬇​​​​​​​滤波方式选择&#xff1a; 捕获/ 比较模式寄存器 1(TIMx_CCMR1)的输入捕获部分⬇​​​​​​​⬇​…

机器人工具箱学习(一)

一、机器人工具箱介绍 机器人工具箱是由来自昆士兰科技大学的教授Peter Corke开发的&#xff0c;被广泛用于机器人进行仿真&#xff08;主要是串联机器人&#xff09;。该工具箱支持机器人一些基本算法的功能&#xff0c;例如三维坐标中的方向表示&#xff0c;运动学、动力学模…

pwn旅行之[WUSTCTF 2020]getshell2(一些小知识)

题目分析1 首先打开这个题目的链接的时候&#xff0c;看到了ret2syscall&#xff0c;以为是一个纯正的syscall的题&#xff0c;结果&#xff0c;做的时候发现这个题的危险函数限制的字符串个数不足以写入syscall需要的所有地址&#xff0c;所以&#xff0c;这里参考dalao们的方…

时光峰峦文物璀璨,预防性保护筑安全

在璀璨的历史长河中&#xff0c;珍贵文物如同时间的印记&#xff0c;承载着过往的辉煌。《人文山水时光峰峦——多彩贵州历史文化展》便是这样一场文化的盛宴&#xff0c;汇聚了众多首次露面的宝藏。然而&#xff0c;文物的保存对环境要求极为苛刻&#xff0c;温湿度波动都可能…

python coding with ChatGPT 打卡第18天| 二叉树:从中序与后序遍历序列构造二叉树、最大二叉树

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

clickhouse计算前后两点间经纬度距离

问题 计算如图所示前后两点经纬度的距离&#xff1f; 方法 1、用开窗函数将如图所示数据下移一行 selectlongitude lon1,latitude lat1,min(longitude) over(order by time1 asc rows between 1 PRECEDING and 1 PRECEDING) lon2,min(latitude) over(order by time1 asc row…

CentOS 7安装Nodejs

说明&#xff1a;本文介绍如何在云服务器上CentOS 7操作系统上安装Nodejs。以及安装过程中遇到的问题。 下载压缩包&解压 首先&#xff0c;先去官网下载Linux版本的Node。 将下载下来的压缩包&#xff0c;上传到云服务器上&#xff0c;解压。配置环境变量。 &#xff08…

Stable Diffusion 模型下载:Schematics(原理图)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 “Schematics”是一个非常个性化的LORA&#xff0c;我的目标是创建一个整体风格&#xff0c;但主要面向某些风格美学&#xff0c;因此它可以用于人物、物体、风景等…

CGAL-3D 凸包算法

3D 凸包算法 一、概述二、静态凸包构造1. Traits 特征类2. 极端点3. 半空间相交4. 凸性检验 三、动态凸包构造四、性能 一、概述 一个点集 S∈R3 是凸的&#xff0c;如果对于任意两点 p 和 q 在集合中&#xff0c;具有端点的线段 p 和 q 包含在 S。集合的凸包 P 包含点集 S 的最…

Leetcode21:合并两个有序链表

一、题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]输入&#…

ubuntu篇---ubuntu安装python3.9

ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1&#xff1a;使用apt在线安装 1.更新软件包列表并安装必备组件&#xff1a; $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…

ORM模型类

模型 创建两个表 创建模型类 from django.db import models# Create your models here. class BookInfo(models.Model):name models.CharField(max_length10, uniqueTrue) # 书名pub_date models.DateField(nullTrue) # 发布时间read_count models.IntegerField(default…

TCP 粘包/拆包

文章目录 概述粘包拆包发生场景解决TCP粘包和拆包问题的常见方法Netty对粘包和拆包问题的处理小结 概述 TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中&#xff0c;比如RPC框架、Netty等 TCP 粘包/拆包 就是你基于 TCP 发送数据的时候&#xff0c;出现了多个字符串“粘”…

查看网络配置的ipconfig命令

ipconfig是调试计算机网络的常用命令&#xff0c;通常大家使用它显示计算机中网络适配器的IP地址、子网掩码及默认网关。其实这只是ipconfig的不带参数用法&#xff0c;而它的带参数用法&#xff0c;在网络中应用也是相当不错的。 1.语法 ipconfig [/all] [/renew[Adapter]] [/…

(四)elasticsearch 源码之索引流程分析

https://www.cnblogs.com/darcy-yuan/p/17024341.html 1.概览 前面我们讨论了es是如何启动&#xff0c;本文研究下es是如何索引文档的。 下面是启动流程图&#xff0c;我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求&…

【Java八股面试系列】JVM-class文件结构

Class文件结构总结 根据 Java 虚拟机规范&#xff0c;Class 文件通过 ClassFile 定义&#xff0c;有点类似 C 语言的结构体。我们之前都是使用javap命令来对字节码文件进行反编译查看的&#xff0c;我们可以使用WinHex软件&#xff08;Mac平台可以使用010 Editor&#xff09;来…

如何决定K8S Pod的剔除优先级

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;当节点资源面临压力时&#xff0c;如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后&#xff0c;引入了基于Pod优先级的调度策略&#xff0c;即Pod Priority Preemption。这种策略允许在资源不足的情况下&a…

git命令远程仓库推送本地项目报错了,解决方案

如果你在使用git命令上传本地项目到远程仓库遇到了如下错误&#xff1a; Updates were rejected because the tip of your current branch is behind。n 别慌&#xff0c;肯定是你的远程仓库里面有原始文件&#xff0c;需要你提前进行一下合并操作&#xff0c;然后才能使用pu…