关于Docker

文章目录

  • Docker
  • WSL
  • WMWare虚拟机
  • CentOS7安装docker
  • docker基础命令
  • docker数据卷
  • 挂载本地目录或文件


Docker

Docker是一个快速构建、运行、管理应用的工具。
能够快速部署项目、项目依赖的组件、项目运行的环境。

项目传统的部署方式缺点:

  • 各类环境、组件命令太多,记不住
  • 各类环境、组件安装包太多,不知道下载源
  • 各类环境、组件安装步骤太复杂,容易出错

Docker安装软件的过程,就是自动搜索下载镜像,然后创建并运行容器的过程。
镜像(image)中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库。
容器(container)就是镜像运行时的独立环境。与其他容器时互相隔离的。DockerHub网站是官方仓库,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。

镜像来源:

  • 基于官方基础镜像自己制作
  • 直接去DockerRegistry下载。

WSL

适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。

安装过程:
(1)检查Windows版本
要求:

  • 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。

命令:

winver

更新:
Windows更新 --> 检查更新 --> 重启电脑

(2)启用适用于 Linux 的 Windows 子系统

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

(3)启用虚拟机功能

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

(4)重启电脑

(5)下载并安装 Linux 内核更新包
下载适用于 x64 计算机的 WSL2 Linux 内核更新包:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
安装

(6)将 WSL 2 设置为默认版本

wsl --set-default-version 2

(7)安装所选的 Linux 分发
Microsoft Store中搜索响应的Linux 版本,比如“Ubuntu 22.04.5 LTS”

(8)默认会登录root用户,改密码

passwd

(9)更新和升级包

sudo apt update && sudo apt upgrade
#添加 wget(从 Web 服务器检索内容)和 ca 证书(允许基于 SSL 的应用程序检查 SSL 连接的真实性)
sudo apt-get install wget ca-certificates

(10)配置VS Code的环境
安装远程开发扩展包:Remote Development

WSL命令行中运行:

#WSL中配置宿主Windows的VS Code的环境变量
vim ~/.bashrc
export PATH=$PATH:“/mnt/d/Vscode/Microsoft VS Code/bin”
#保存~/.bashrc后,需要刷新
source ~/.bashrc
如果没有反应,则需要重启WSL
wsl --shutdown
wsl
#在当前WSL目录下打开VS Code
code .


WSL默认安装位置移动其到指定安装路径
默认安装位置:C:\Users\Administer\AppData\Local\Packages中以CanonicalGroupLimited名字开头的文件夹

导出WSL的发行版:

wsl --export Ubuntu-22.04 F:\WSL\Ubuntu-22.04.tar

注销WSL的发行版:

wsl --unregister Ubuntu-22.04

导入 WSL 发行版到新位置:

#wsl --import WSL发行版名称 新的安装目录 之前导出的发行版包
wsl --import Ubuntu-22.04 F:\WSL\Packages\Ubuntu F:\WSL\Ubuntu-22.04.tar


通过宿主Windows访问WSL的文件系统:

\wsl$\

WSL访问宿主Windows的文件系统:

/mnt/c/…


安装时碰到的问题汇总:
(1)参考的对象类型不支持尝试的操作
解决:使用nolsp.exe

.\nolsp.exe C:\WINDOWS\system32\wsl.exe

WMWare虚拟机

Windows下除了WSL的方式外,采用虚拟机来使用docker

WMWare安装CentOS 7时设置固定ip的配置:
在这里插入图片描述
设置主机名:
在这里插入图片描述
配置网络:
在这里插入图片描述

WMWare设置虚拟机快照:
在这里插入图片描述
拍摄快照:
在这里插入图片描述

Windows下可以使用VSCode远程连接虚拟机的Linux文件系统

  • 安装Remote-SSH插件
  • 在VSCode起始页点击:连接到…
  • 按照提示操作即可
    在这里插入图片描述

CentOS7安装docker

步骤1:卸载旧版的docker:

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \docker-selinux 

步骤2:Docker的yum源(阿里云源)

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
::清除yum
yum clean all
::更新缓存
yum makecache
::安装yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
::配置阿里云的docker源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
::更新yum,建立缓存
sudo yum makecache fast
::安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

步骤3:配置镜像加速

::创建目录
mkdir -p /etc/docker
::镜像加速地质
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.sohu.com","https://ustc-edu-cn.mirror.aliyuncs.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.awsl9527.cn"]
}
EOF
::重新加载配置
systemctl daemon-reload

docker启动关闭命令:

# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps# 重启Docker
systemctl restart docker

docker基础命令

常用命令关系图:
在这里插入图片描述

docker run

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql
  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行
  • –name mysql : 给容器起个名字叫mysql
  • -p 3306:3306 : 设置端口映射
    – 容器是隔离环境,外界不可访问。但是可以将宿主机端口映射到容器端口,当访问宿主机指定端口时,就是在访问容器内的端口了。
    – 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。
    – 格式: -p 宿主机端口:容器内端口
  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数
    – 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定
    – 案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码
  • mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像
    – 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号
    – 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest

docker stop
停止指定容器,停止的是容器中的进程,比如停止mysql
再次启动时,docker start

docker start
启动停止的容器,比如vm关闭了,下次启动时,容器存在,只是停止不运行了。

docker exec -it mysql bash
进入mysql容器,并启动bash

docker update --restart=always [容器名/容器id]
docker容器的开机自启

docker inspect:查看某个容器的详情

docker数据卷

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁。

为什么需要数据卷?
容器是隔离环境,容器内程序的文件、配置、运行时产生的容器都在容器内部,我们要读写容器内的文件非常不方便:

  • 如果要升级MySQL版本,需要销毁旧容器,那么数据岂不是跟着被销毁了?
  • MySQL、Nginx容器运行后,如果需要修改其中的某些配置该怎么办?
  • 想要让Nginx代理静态资源怎么办?

容器数据管理思路:
容器提供程序的运行环境,但是程序运行产生的数据、程序运行依赖的配置都应该与容器解耦

例子:nginx容器的html目录和conf目录映射到宿主机,这一过程也称为挂载
在这里插入图片描述
完成此步骤后,将文件放到宿主机对应的目录,nginx容器就可以自动完成代理。

默认情况下,默认的存放所有容器数据卷的根目录:/var/lib/docker/volumes
需要注意的是:

  • 容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建。

容器创建时,指定数据卷:
-v 数据卷:容器内目录

# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v hello:/usr/share/nginx/html nginx

命令运行完,会在宿主机生成目录:
/var/lib/docker/volumes/hello/_data
此目录挂载到了/usr/share/nginx/html

常用命令:
docker volume create:创建数据卷
docker volume ls:查看所有数据卷
docker volume rm:删除指定数据卷
docker volume inspect:查看某个数据卷的详情
docker volume prune:清除数据卷

例子:查看mysql的匿名数据卷

# 1.查看MySQL容器详细信息
docker inspect mysql
# 关注其中.Config.Volumes部分和.Mounts部分

.Config.Volumes部分

{"Config": {// ... 略"Volumes": {"/var/lib/mysql": {}}// ... 略}
}

可以发现这个容器声明了一个本地目录,需要挂载数据卷,但是数据卷未定义。这就是匿名卷

.Mounts部分

"Mounts": [{"Type": "volume","Name": "05ea5d858aa2f60afc6926b35d50aa8ef9b4c80c6f65397cf9feb53f28e04ed4","Source": "/var/lib/docker/volumes/05ea5d858aa2f60afc6926b35d50aa8ef9b4c80c6f65397cf9feb53f28e04ed4/_data","Destination": "/var/lib/mysql","Driver": "local","Mode": "","RW": true,"Propagation": ""}]

上述配置是将容器内的/var/lib/mysql这个目录,与数据卷05ea5d858aa2f60afc6926b35d50aa8ef9b4c80c6f65397cf9feb53f28e04ed4挂载。于是在宿主机中就有了/var/lib/docker/volumes/05ea5d858aa2f60afc6926b35d50aa8ef9b4c80c6f65397cf9feb53f28e04ed4/_data这个目录。这就是匿名数据卷对应的目录,其使用方式与普通数据卷没有差别。

挂载本地目录或文件

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

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

相关文章

具体应用案例:树莓集团助力传统制造业数字化转型

以一家传统制造业企业为例&#xff0c;在树莓集团的支持下&#xff0c;该企业逐步完成了数字化转型&#xff1a; 1. 生产智能化&#xff1a; 通过树莓集团提供的物联网和智能制造解决方案&#xff0c;企业的生产线实现了全面数字化&#xff0c;实时监控设备状态&#xff0c;进行…

CasADi库C++用法整理学习---以NMPC代码为例

参考几个使用方法博客 1 官方文档写的很清楚 对SM&#xff0c;DM&#xff0c;XM数据类型疑惑。什么时候使用什么样的类型&#xff0c;还是都可以&#xff1f; x MX.sym(“x”) 这将创建一个 11 矩阵&#xff0c;即一个包含名为 x 的符号基元的标量。这只是显示名称&#xff…

关键词提取技术:TF-IDF 详解

1. 什么是TF-IDF&#xff1f; TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09; 是一种统计方法&#xff0c;用于评估单词在文档集或语料库中的重要性。它是自然语言处理和信息检索中的核心技术之一。 TF-IDF主要基于以下两个概念&#xff1a; TF&a…

书籍推荐:《从零构建大型语言模型》附免费PDF下载

通过从头开始构建一个大型语言模型&#xff0c;了解如何创建、训练和调整大型语言模型 &#xff08;LLMs&#xff09;&#xff01; 一、构建大型语言模型&#xff08;从头开始&#xff09; 在《构建大型语言模型&#xff08;从头开始&#xff09;》中&#xff0c;你将了解如何…

C++ —— 关于继承(inheritance)

目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承的定义格式 1.3 继承基类成员访问方式的变化 1.4 类模板的继承 2.基类与派生类的转换 3. 继承中的作用域 3.1 隐藏规则 4. 派⽣类的默认成员函数 4.1 4个常见默认成员函数 4.2 实现⼀个不能被继承的类 5. 继承与友元…

webpack 学习入门

webpack 1. 简介1.1 webpack 是什么1.2 webpack 五个核心概念1.2.1 入口 - Entry1.2.2 出口 - Output1.2.3 Loader1.2.4 插件 - Plugins1.2.6 模式 - Mode 2. webpack 初体验2.1 初始化配置2.1.1. 准备2.1.2. 写代码2.1.3 编译打包应用 3. webpack 开发环境的基本配置3.1 打包样…

HTML(七)表格

https://chatgai.lovepor.cn/ 在HTML中&#xff0c;表格的标准形式如下&#xff1a; <table></table> 使用上面的语言&#xff0c;就已经生成了一个表格&#xff0c;只不过这个表格什么都没有 那么&#xff0c;该如何让表格存在东西呢&#xff1f; 首先&#xf…

springboot 整合spring ai实现 基于知识库的客服问答

rag 需求产生的背景介绍&#xff1a; 在使用大模型时&#xff0c;常遇到的问题之一是模型可能产生幻觉&#xff0c;即生成的内容缺乏准确性。此外&#xff0c;由于大模型不直接访问企业的专有数据&#xff0c;其响应可能会显得泛泛而谈&#xff0c;不够精准或具体&#xff0c;…

基于YOLOv10的农场实时目标检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

摘要&#xff1a; 基于YOLOv10的农场实时目标检测系统&#xff0c;利用4393张图片&#xff08;3905张训练集&#xff0c;488张验证集&#xff09;进行模型训练&#xff0c;最终开发出一个高效的农场目标检测模型。为了方便用户操作和实时检测&#xff0c;本系统还开发了基于Pyt…

VSCode运行QT界面

VSCode用久了,感觉Qt Creator的写起代码来还是不如VSCode得心应手,虽然目前还是存在一些问题,先把目前实现的状况做个记录,后续有机会再进一步优化。 当前方式 通过QtCreator创建一个CMake项目,然后使用CMake的方式在VSCode中进行编译。 claude给出的建议 左上角的名字会…

SiLM27212 270V 4A/4A 支持高频信号输入 集成自举二极管的高低边门极驱动器

SiLM27212系列选型&#xff1a; SiLM27212LEK-DG SiLM27212EK-DG SiLM27212LCA-DG SiLM27212CA-DG SiLM27212LCB-DG SiLM27212CB-DG SiLM27212系列是一款支持高频信号输入的高低边N沟道MOSFET驱动器&#xff0c;有着优异的性能&#xff0c;广泛应用于各类模…

Linux查看下nginx及使用的配置文件

1、查到nginx进程 ps -aef | grep nginx2、通过进行pid查到nginx路径 pwdx <pid>3、根据路径得到配置文件 path***/nginx -t如下&#xff1a;

MacOS虚拟机安装Windows停滞在“让我们为你连接到网络”,如何解决?

1. 问题描述 MacOS在虚拟机安装win11过程中&#xff0c;停止在“让我们为你连接到网络”步骤&#xff0c;页面没有任何可以点击的按钮&#xff0c;进行下一步操作。 2. 解决方案&#xff08;亲测有效&#xff09; 到达该界面&#xff0c;按下ShiftF10&#xff08;Windows&…

【机器学习】深入浅出讲解贝叶斯分类算法

0. 前言 1.贝叶斯分类器介绍 贝叶斯分类是一类分类算法的总称&#xff0c;这类算法均以贝叶斯定理为基础&#xff0c;故统称为贝叶斯分类。而朴素贝叶斯&#xff08;Naive Bayes&#xff09;分类是贝叶斯分类中最简单&#xff0c;也是常见的一种分类方法。 一些很常见的分类…

整理—计算机网络

目录 网络OSI模型和TCP/IP模型 应用层有哪些协议 HTTP报文有哪些部分 HTTP常用的状态码 Http 502和 504 的区别 HTTP层请求的类型有哪些&#xff1f; GET和POST的使用场景&#xff0c;有哪些区别&#xff1f; HTTP的长连接 HTTP默认的端口是什么&#xff1f; HTTP1.1怎…

哪科竞赛含金量更高?五大学科竞赛含金量排名

2024年五大学科竞赛赛事已经渐渐拉开帷幕&#xff0c;本月底国内不少地区即将举行生物竞赛预赛的赛事。今天我们一起来看看五大学科竞赛哪科竞赛含金量更高。 高中五大学科竞赛&#xff08;数物化生信&#xff09;是升学路上的硬通货&#xff0c;比如说在强基破格中需要五大竞赛…

揭秘提升3DMAX效率的6款必备神级插件!

对于3DMax新手来说,掌握一些高效、实用的插件能够大大提升工作效率和创作质量。以下是6个不能错过的神级插件推荐: 第1个:3DMAX造山地形插件Mountain是一款专为3dMax设计的插件,旨在帮助用户轻松快速地创建逼真的山脉地形。以下是对该插件的详细介绍: 一、插件概述 Mou…

Xilinx远程固件升级(一)——QuickBoot方案

Xilinx 7系FPGA远程更新方案——QuickBoot方式远程更新bit 一、远程更新背景和架构 对于非ZYNQ系列的常规FPGA来说&#xff0c;对于bit的更新一般使用JTAG进行烧录。而作为商用产品&#xff0c;想要进行OTA升级时&#xff0c;使用JTAG的升级方式显然不适合&#xff0c;因此&a…

Java | Leetcode Java题解之第486题预测赢家

题目&#xff1a; 题解&#xff1a; class Solution {public boolean PredictTheWinner(int[] nums) {int length nums.length;int[] dp new int[length];for (int i 0; i < length; i) {dp[i] nums[i];}for (int i length - 2; i > 0; i--) {for (int j i 1; j …

计算机毕业设计Python动漫视频分析可视化 动漫影视可视化 动漫情感分析 动漫爬虫 机器学习 深度学习 Tensorflow PyTorch LSTM模型

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系名片 &#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系名片 &#xff01; 温馨提示&#xff1a;文末有SDN 平台官方提供的学长联系名片 &#xff01; 基于Python的B站排行榜大数据分析与可视化系统…