docker最详细基础教程:如何在Win11中使用docker desktop

news2024/11/28 15:42:47

目录

前言

界面说明 

设置界面翻译图+一些简单说明

主要功能界面介绍

关于切换docker镜像源

如何拉取镜像

搜索镜像

创建容器

docker run命令的OPTIONS详细介绍

设置容器名词

以后台模式运行容器

端口映射

设置挂载卷

设置环境变量

容器退出后自动删除容器

容器的重启策略

使用Docker Compose配置文件.yml

结语


前言

Docker是一种开源的应用容器引擎,它可以让开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。

Docker Desktop是一个用于Mac和Windows的Docker工具,它包含了Docker Engine、Docker CLI客户端、Docker Compose、Docker Machine和Kitematic。主要特点包括:

  • 简单易用:Docker Desktop提供了一个图形用户界面,使得管理容器变得非常简单。你可以通过点击几个按钮来创建、启动和停止容器。
  • 集成开发环境:Docker Desktop可以与你的IDE(如Visual Studio Code)集成,使得你可以直接在IDE中构建和运行容器。
  • 支持多种操作系统:Docker Desktop支持Mac和Windows两种操作系统,这使得你可以在你最喜欢的操作系统上使用Docker。
  • 支持Kubernetes:Docker Desktop包含了一个单节点的Kubernetes集群,你可以用它来测试你的应用。
  • 支持多种应用:Docker Desktop支持运行各种应用,包括Web应用、数据库、后台服务等。
  • 自动更新:Docker Desktop会自动检查并安装更新,这使得你总是可以使用最新的Docker版本。

这次我们使用的是Docker Desktop,面向初学者的教程,教你如何在win11系统中使用Docker Desktop,

如果你还没安装,可以看我之前发布的博客:手把手教你在Win11下安装docker-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/btaworld/article/details/138505501

界面说明 

由于docker desktop软件没有汉化翻译,可能阅读起来会有一些问题,下面是我用屏幕翻译软件翻译的截图,仅供参考(如果不希望阅读,可以点击边栏标题跳过):

设置界面翻译图+一些简单说明

 

 差不多了,上面是一些个人感觉比较常用的设置(我也只是新手,其他的设置也没怎么用到)

主要功能界面介绍

这个页面是Docker镜像列表,展示了你之前拉取或创建的所有Docker镜像。每个镜像都有一个唯一的标识符,可能还包括标签和创建时间等信息。你可以使用这些镜像来创建新的Docker容器。

"Containers"页面是Docker Desktop的一个功能,它显示了你当前系统中所有的Docker容器,包括正在运行的和已经停止的。

关于切换docker镜像源

一言蔽之,不推荐

为什么?现在在官网拉取docker镜像速度不是特别慢,最好自己亲自试试

个人之前(大概2,3年)切换了阿里云的镜像源,使用一段时间后发现,阿里云的docker镜像源已经很久没更新了。。。

即使你硬要切换国内的镜像源,请不要用阿里的……

如何拉取镜像

Docker拉取镜像是通过docker pull命令实现的。这个命令从Docker镜像仓库(默认是Docker Hub)下载镜像到本地。

docker pull [镜像名词]

基本的命令格式是:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

其中:

  • NAME:是镜像的名称,例如mysql、ubuntu等。
  • TAG:是可选的,表示镜像的版本标签。如果不指定,Docker会默认拉取latest标签的镜像。
  • DIGEST:是可选的,表示镜像的摘要。摘要是镜像内容的唯一哈希值,可以用来确保下载的镜像内容的完整性和一致性。

OPTIONS命令的一些选项包括:

  • -a, --all-tags:拉取所有标签的镜像。
  • --disable-content-trust:跳过镜像内容的信任检查。

例如,docker pull mysql:5.7命令会从Docker Hub拉取标签为5.7的mysql镜像,拉取最新镜像可以使用 docker pull mysql:latest 命令或直接运行 docker pull mysql 命令

搜索镜像

如果你知道你需要的镜像的名称,但不确定它是否存在或者它的确切名称,你可以使用docker search命令来搜索它。

基本的命令格式是:

docker search [OPTIONS] TERM

其中,TERM是你要搜索的关键词。

docker search命令的一些选项包括:

  • --filter, -f:根据特定条件过滤搜索结果。
  • --format:自定义输出格式。
  • --limit:限制显示的搜索结果数量。
  • --no-trunc:不截断输出结果。

例如,docker search mysql命令会搜索包含"mysql"关键词的所有镜像。

这个命令在以下场景中非常有用:

  1. 寻找特定的镜像:如果你知道你需要的镜像的名称,但不确定它是否存在或者它的确切名称,你可以使用docker search命令来搜索它。
  2. 探索新的镜像:如果你想要探索一些新的镜像,例如你想要找一些特定的数据库或者Web服务器的镜像,你可以使用docker search命令来搜索。
  3. 比较不同的镜像:docker search命令的输出包含了每个镜像的一些基本信息,如星级、是否是官方的、描述等。你可以使用这些信息来比较不同的镜像,以便选择最适合你的那个。

创建容器

拉取Docker镜像后(如果镜像未拉取,使用docker run命令会自动拉取),你可以使用docker run命令来基于这个镜像创建并启动一个新的容器。

docker run命令用于从Docker镜像创建一个新的容器,并运行它。这个命令是docker create和docker start命令的组合。

基本的命令格式是:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中:

  • OPTIONS:是可选的,用于指定创建容器时的一些选项,如端口映射、环境变量、挂载卷等。
  • IMAGE:是必需的,指定要运行的Docker镜像。
  • COMMAND和ARG:是可选的,指定要在容器中运行的命令和参数。

例如,以下命令

docker run --name my-container ubuntu bash

会创建并运行一个名为my-container的容器,基于ubunt镜像,运行ubash命令

docker run命令的OPTIONS详细介绍

设置容器名词

--name:设置容器的名称。

例如,

docker run --name my-mysql mysql

会设置容器的名称为my-mysql。

以后台模式运行容器

-d, --detach:以后台模式运行容器。

例如,

docker run -d mysql

会在后台启动一个MySQL容器。

-d 或 --detach 选项用于在后台模式运行 Docker 容器。这意味着 Docker 会在后台启动并运行容器,而不会占用命令行或终端界面。当你运行 docker run -d mysql 命令时,Docker 会启动一个 MySQL 容器并在后台运行。你会立即返回到命令行提示符,而 MySQL 容器会在后台运行。推荐每次创建容器时添加上。

端口映射

-p, --publish:发布容器的一个或多个端口到主机。

例如,

docker run -p 3306:3306 mysql

会将MySQL容器的3306端口映射到主机的3306端口。

挂载多个端口:

例如,假设你有一个Nginx服务,它在容器的80端口提供HTTP服务,在容器的443端口提供HTTPS服务。你可以使用以下命令来运行这个Nginx的容器,并将这两个端口都映射到主机:

docker run -p 8080:80 -p 8443:443 --name my-nginx nginx

设置挂载卷

-v, --volume:挂载卷。

例如,

docker run -v /my/own/datadir:/var/lib/mysql mysql

会将主机的/my/own/datadir目录挂载到MySQL容器的/var/lib/mysql目录,这个目录是MySQL默认的数据目录。

注意:挂载卷可以直接挂载到win的系统目录下

假设你有一个Redis容器,你想将Windows的C:\data目录挂载到Redis容器的/data目录,你可以使用/c/data:

docker run -v /c/data:/data --name my-redis redis

或,直接使用C:\data:

docker run -v C:\data:/data --name my-redis redis

设置环境变量

-e, --env:设置环境变量。

例如,

docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

会设置MySQL的root用户的密码为my-secret-pw。

容器退出后自动删除容器

--rm:容器退出后自动删除容器。

例如,

docker run --rm mysql

会在MySQL容器退出后自动删除它。

容器的重启策略

--restart 选项会设置容器的重启策略,--restart选项有以下几个可选的值:

  • no:这是默认值,容器不会被自动重启。
  • on-failure:只有在容器非正常退出时(即退出状态非0),容器才会被自动重启。
  • always:无论容器的退出状态是什么,容器都会被自动重启。
  • unless-stopped:无论容器的退出状态是什么,容器都会被自动重启,除非容器已经被手动停止。

如果你希望每次运行docker,容器自动启动,可以使用设置--restart=always,例如:

docker run --restart=always --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

可以实现MySQL容器将会在Docker启动时自动启动。

如果已经创建了容器,可以使用docker update命令来更改容器的重启策略:

docker update --restart=always container_name

你需要将container_name替换为你的容器的名称或ID。

这个命令会将容器的重启策略设置为always,这意味着无论容器的退出状态是什么,容器都会被自动重启,除非Docker被停止。

使用Docker Compose配置文件.yml

在这里不做详细介绍,只介绍基础用法(我也只用过基础功能,后面会续继续学习……),以mysql举例:

version: '3.1'

services:
  myaql_db:
    image: mysql # mysql镜像,最新版本
    restart: always # 重启策略,always表示总是重启
    environment:
      MYSQL_ROOT_PASSWORD: password # mysql的root用户密码
    volumes:
      - ./mysql_text/data:/var/lib/mysql # mysql数据存储目录
      - ./mysql_text/conf:/etc/mysql/conf.d # mysql配置文件目录
      - ./mysql_text/logs:/var/log/mysql # mysql日志目录
    ports:
      - 3306:3306

这是一个Docker Compose的配置文件,用于定义和运行一个名为myaql_db的MySQL服务。下面是每个部分的详细解释:

  • version: '3.1':这是Docker Compose文件的版本号,它决定了可以使用哪些Docker Compose的特性。
  • services::这个关键字下面列出了运行的所有服务(在这个例子中,只有一个服务myaql_db)。
  • myaql_db::定义的服务的名称。
  • image: mysql:5.7:这个服务使用的Docker镜像的名称和标签。这里使用的是MySQL 5.7版本的镜像。
  • restart: always:这个选项决定了Docker何时应该重启这个容器。always表示Docker总是应该重启这个容器,无论它是如何停止的。
  • environment::这个关键字下面列出了设置在容器内的环境变量。在这个例子中,设置了MySQL的root用户的密码。
  • volumes::这个关键字下面列出了所有挂载到容器内的卷。在这个例子中,
    • 当前目录下的mysql_text/data目录被挂载到了容器的/var/lib/mysql目录,
    • mysql_text/conf目录被挂载到了容器的/etc/mysql/conf.d目录,
    • mysql_text/logs目录被挂载到了容器的/var/log/mysql目录。
  • ports::这个关键字下面列出了所有映射到主机的端口。在这个例子中,容器的3306端口被映射到了主机的3306端口。

将上面的内容保存为docker-compose.yml文件,并在该文件所在的目录下运行

docker-compose up

命令,Docker Compose将会根据这个配置文件创建并启动一个名为myaql_db的MySQL服务。

如果你将这个文件保存为一个非docker-compose.yml的名字,例如mycompose.yml,你需要在运行docker-compose up命令时指定这个文件名。你可以使用-f选项来指定配置文件的名字,例如:

docker-compose -f mycompose.yml up

结语

如何在Win11中使用docker desktop教学的内容,已经结束。

如果你发现有任何遗漏或错误,或者有任何建议和问题,欢迎在评论区留言或私信我,我会尽快进行修改和回复。

感谢你的阅读和支持!

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

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

相关文章

如何将 ChatGPT 集成到你的应用中

在当今快速发展的技术环境中,将人工智能聊天解决方案集成到你的应用程序中可以显著提升用户体验和参与度。OpenAI 的 ChatGPT 以其对话能力和高级语言理解而闻名,对于希望在其应用程序中实现智能聊天功能的开发人员来说是一个绝佳的选择。那我们今天就来…

【jdk】jdk11 jdk17 jdk21的新特性

前言:按照博主的个人理解,一般来说 除了jdk8时代 说jdk8的新特性是特指jdk8这一个版本的特性,之后例如jdk11 jdk17新特性 都是泛特性 什么意思呢? 比如jdk11新特性,一般是指jdk9——jdk11 这一个泛版本的所有新特性&am…

MATLAB绘图技巧-多边形区域填充图

MATLAB绘图技巧-多边形区域填充图 以下内容来自:科学网—MATLAB绘图技巧-多边形区域填充图 - 彭真明的博文 (sciencenet.cn)START 为了突出某个区域或局部数据的特性,便于数据的可视化和解释,常需要绘制二维区域填充图。MATLAB提供了三种类型…

5G如何推动工业数字化转型?

据中国信息通信研究院测算,5G商用五年来,直接带动经济总产出约5.6万亿元,间接带动总产出约14万亿元,有力促进了经济社会高质量发展。而工业数字化转型,作为应对市场变革的关键战略,也借助5G技术卓越的高带宽…

海南聚广众达电子商务咨询有限公司抖音电商新标杆

在数字经济的浪潮中,抖音电商正成为一股不可忽视的力量。海南聚广众达电子商务咨询有限公司,作为专注于抖音电商服务的领军企业,凭借其专业的团队和创新的思维,不断助力商家在抖音平台上实现商业价值的最大化。 海南聚广众达电子…

几十块就能“开盒”,还能查祖上三代?

近期,网络上突然开始掀起一阵“人肉开盒”风波。明星、博主、素人无一幸免。 隐匿在此般恶劣行径背后的幕后黑手们无视法律、充满戾气。他们才不管你是什么人,只要有哪里让他们不愉快,那么不好意思,马上“开”你没商量。 这个“…

Linux企业实时同步服务---3688字

实时同步服务 正常的互联网公司架构: 内容:每天服务器及服务器上的应用程序等正常使用(每天查看)比如:邮件,短信,等信息;巡检内容是否正常使用。互联网公司就是底层服务开发、代码运…

【项目实战课】基于TensorRT+YOLOv5的安全帽检测模型部署实战

欢迎大家来到我们的项目实战课,本期内容是《基于TensorRTYOLOv5的安全帽检测模型部署实战》。所谓项目课,就是以简单的原理回顾详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲解。 本次主题 目标检测是最基础的计…

带颜色的3D点云数据发布到ros1中(通过rviz显示)python、C++

ros中发布点云数据xyz以及带颜色的点云数据xyzrgb ros中发布点云数据xyz可以直接用python来做或者C(看个人偏好) ros中发布带颜色的点云数据xyzrgb环境1.新建ROS工作空间2.创建功能包 ros中发布点云数据xyz 可以直接用python来做或者C(看个人偏好) 在这里我们带有颜色的点云数…

LLM大模型开发-基础概论

前言 大家好,我是GISer Liu,好久不见,工作之余,我又来参加DataWhale举办的每月学习赛了;期待这个系列文章能帮助各位读者快速入门LLM开发,希望大家喜欢;Github链接已放在文末; 概述 在这篇文章中…

TCP/IP协议,三次握手,四次挥手,常用的协议

IP - 网际协议 IP 负责计算机之间的通信。 IP 负责在因特网上发送和接收数据包。 HTTP - 超文本传输协议 HTTP 负责 web 服务器与 web 浏览器之间的通信。 HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web …

鸿蒙开发:【信息传递载体Want】

Want概述 Want的定义与用途 [Want]是一种对象,用于在应用组件之间传递信息。 其中,一种常见的使用场景是作为[startAbility()]方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为…

NVIDIA Broadcast+普通麦克风+ai

关于 NVIDIA Broadcast NVIDIA Broadcast 通过 AI 的强大功能将标准网络摄像头和麦克风升级为高级智能设备,将任何房间转变为家庭工作室。通过麦克风噪声和房间回声消除、虚拟背景、网络摄像头自动取景和视频噪声消除等 AI 功能提高直播的视频和音频质量。借助 NVI…

Python基础教程(二十八):pip模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

MySQL之复制(九)

复制 复制管理和维护 确定主备是否一致 在理想情况下,备库和主库的数据应该是完全一样的。但事实上备库可能发生错误并导致数据不一致。即使没有明显的错误,备库同样可能因为MySQL自身的特性导致数据不一致,例如MySQL的Bug、网络中断、服务…

Spring之IoC(容器配置、Spring坐标导入、获取bean)

这里的话,因为博主学习时间有限,并没有实际去操作,只是学习和了解一个大概的流程。 目录 一、引言 1、管理什么?(对象:Service、Dao ...) 2、如何将被管理的对象告知 IoC 容器?(用…

Android入门第70天-调用手机摄像头拍照的最全讲解

背景 涉及手机摄像头的应用太多了,有拍照、有摄像、有二维码、条码的扫描。还有AI领域的拍照识图。 无处不使用摄像头。 网上充斥着大多教程,无一例是可以把摄像头给真正驱动起来和完成一个高清拍照并取出照片进行后续处理的流程。这的确是一个不健康的现象。 本篇教程就是…

Springboot3.3 整合Cassandra 4.1.5

一、数据库搭建 -- 创建Keyspace CREATE KEYSPACE school WITH replication {class:SimpleStrategy, replication_factor : 1};-- 创建表 CREATE TABLE student(id int PRIMARY KEY, name text, age int, genders int, address text ,interest set<text>,phone lis…

qml/c++:基础界面的串口设置逻辑

文章目录 文章介绍效果图本机串口打开从虚拟端串口传数据到本机串口 代码添加serialporthandler类serialporthandler.hserialporthandler.cpp获取串口列表打开串口关闭串口清空按钮接收数据按钮逻辑&#xff1a;打开和关闭串口、弹出信息框、按钮文字改变 main.cpp 文章介绍 上…

快捷方式(lnk)--加载HTA-CS上线

免责声明:本文仅做技术交流与学习... 目录 CS: HTA文档 文件托管 借助mshta.exe突破 本地生成lnk快捷方式: 非系统图标路径不同问题: 关于lnk的上线问题: CS: HTA文档 配置监听器 有效载荷---->HTA文档--->选择监听器--->选择powershell模式----> 默认生成一…