如何在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.mzph.cn/news/670041.shtml

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

相关文章

【数据结构与算法】之排序系列-20240205

这里写目录标题 一、1346. 检查整数及其两倍数是否存在二、1365. 有多少小于当前数字的数字三、1460. 通过翻转子数组使两个数组相等四、1491. 去掉最低工资和最高工资后的工资平均值五、1502. 判断能否形成等差数列 一、1346. 检查整数及其两倍数是否存在 简单 给你一个整数数…

关于RabbitMQ面试题汇总

什么是消息队列&#xff1f;消息队列有什么用&#xff1f; 消息队列是一种在应用程序之间传递消息的通信机制。它是一种典型的生产者-消费者模型&#xff0c;其中生产者负责生成消息并将其发送到队列中&#xff0c;而消费者则从队列中获取消息并进行处理。消息队列的主要目的是…

Vivado-IP核

Vivado-IP核 主程序 timescale 1ns / 1ps ////module ip_clk_wiz(input sys_clk,input sys_rst_n,output clk_out1,output clk_out2,output clk_out3,output clk_out4,output locked);clk_wiz_0 instance_name(// Clock out ports.clk_out1(clk_out1), // output clk_out…

typeof的语法和使用总结

typeof的语法和使用总结 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将深入探讨JavaScript中typeof操作符的语法和使用&#xff0c;帮助大家…

数字孪生:智慧城市的核心技术与发展

一、引言 随着城市化进程的加速&#xff0c;智慧城市的概念和实践逐渐成为全球关注的焦点。智慧城市利用先进的信息通信技术&#xff0c;提升城市治理水平&#xff0c;改善市民的生活质量。而数字孪生作为智慧城市的核心技术&#xff0c;为城市管理、规划、应急响应等方面提供…

sklearn模型指标和特征贡献度查看

文章目录 算法介绍r2_scoretrain_test_splitDecisionTreeRegressor参考文献支持快速查看traget和特征之间的关系 # -*- coding: utf-8 -*- import pandas as pd pd.set_option(display.max_columns, None) pd.set_option

Django部署到服务器后无法获取到静态元素 The requested resource was not found on this server

问题描述 写了一个Django项目&#xff0c;部署到云主机后&#xff0c;访问发现图片无法访问&#xff0c;报错The requested resource was not found on this server 图片是一个词云图&#xff0c;根据爬虫爬取的信息生成的&#xff0c;根据爬取的信息会改变&#xff0c;所以没…

python_蓝桥杯刷题记录_笔记_全AC代码_入门5

前言 关于入门地刷题到现在就结束了。 题单目录 1.P1579 哥德巴赫猜想&#xff08;升级版&#xff09; 2.P1426 小鱼会有危险吗 1.P1579 哥德巴赫猜想&#xff08;升级版&#xff09; 一开始写的代码是三重循环&#xff0c;结果提交上去一堆地TLE&#xff0c;然后我就给减少…

无人零售模式下,“IoT+鸿蒙”实现零代码搭建自动售货机监控大屏的可能性摸索

前言 新零售模式下&#xff0c;对loT的探索与应用还在继续。 而数字时代&#xff0c;数字化转型在零售行业中蔓延&#xff0c;而对于新的消费方式的探索&#xff0c;也在如火如荼的进行中。于是&#xff0c;一种新零售的形式——无人零售逐渐形成概念。 如果说&#xff0c;人…

【教3妹学编程-算法题】1696. 跳跃游戏 VI

3妹&#xff1a;好冷啊&#xff0c; 冻得瑟瑟发抖啦 2哥 : 没想到都立春了还这么冷啊~ 3妹&#xff1a;暴雪、冻雨、大雨&#xff0c;这天气还让不让人活啦&#xff01;&#xff01;&#xff01; 2哥 :哎&#xff0c;好多人都滞留的高铁站了&#xff0c;没法回家了 3妹&#xf…

nvm报错解决:配置最新淘宝镜像源

nvm修改配置的淘宝镜像 问题&#xff1a; 原因&#xff1a;原先配置的淘宝镜像已经不被使用 修改&#xff1a; 找到\nvm\nvm\settings.txt文件&#xff0c;配置如下 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/ 配置成…

复习单向,双向链表,并且实现两种链表的增加和删除功能。

单链表头插 Linklist insert_head(datatype element,Linklist head) {//创建新节点 Linklist screate_node();if(NULLs)return head; s->dataelement;//1,判断链表为空if(NULLhead){heads;}else //链表不为空{s->nexthead;heads;}return head; } 单链表尾插 Linklist …

汽车信息安全--SHE中的密钥管理(一)

目录 1.HTA基本概述 2.SHE架构及密钥管理 2.1 分清SHE和EVTIA HSM 2.2 SHE架构 3.

linker list

linker list是利用lds 描述符实现同类型数据连续排布的一种机制。 下面是uboot里面的应用说明 lds文件里面需要增加section描述&#xff1a; . ALIGN(4);.u_boot_list : {KEEP(*(SORT(.u_boot_list*)));}linker_list.h: /* SPDX-License-Identifier: GPL-2.0 */ /** include…

二分图,匹配(学习笔记)

染色法判断二分图&#xff08;二部图&#xff09; 染色法判定二部图基本思想&#xff1a; 1、任意选择一个节点&#xff0c;将其染成红色 2、循环操作&#xff1a;将红色节点的邻居染成蓝色&#xff0c;将蓝色节点的邻居染成红色 3、若过程中发现任意一节点与其邻居的颜色相同…

Golang-Map有序输出——使用orderedmap库实现

前言 工作中遇到一个问题&#xff1a;需要导出一个MySQL表格&#xff0c;表格内容由sql查询得来。但现在发现&#xff0c;所导出的表格中&#xff0c;各列的顺序不确定。多次导出&#xff0c; 每一次的序列顺序也是不定的。 因此确定是后端&#xff0c;Map使用相关导致的问题。…

HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)

快来共享第三方库吧&#xff0c;不但可以通过分享自己的成果&#xff0c;可以获得来自全球开发者的技术反馈和建议&#xff0c;提升自身技术能力&#xff0c;还有助于提高个人或团队在开源社区中的知名度和影响力。在流量时代和粉丝经济时代&#xff0c;获得曝光度和流量密码。…

全球首款轻量化图形引擎强势来袭!!!!

AMRT 3D 数字孪生引擎 提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 轻量化技术应用与个性化定制 AMRT3D适用于快速开发…

【SQL高频基础】1141.查询近30天活跃用户数

题目&#xff1a; 表&#xff1a;Activity ------------------------ | Column Name | Type | ------------------------ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | ------------------------…

(已解决)vueQQ邮箱注册发送验证码前端设计,如何发送验证码设计倒计时

我们之前已经通过前端测试成功完成qq邮箱动态验证码发送&#xff08;未使用redis&#xff0c;我准备自己了解完后&#xff0c;后期有时间补上&#xff09; 衔接文章&#xff1a; 1&#xff1a; spingboot 后端发送QQ邮箱验证码 2&#xff1a; 这段代码建设图形化界面 <di…