关于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代理静态资源怎么办?
  • 如果mysql容器数据目录不挂载到宿主机目录,那么以后此容器随着数据的增多越来越大,非常不便于迁移。

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

例子: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这个目录。这就是匿名数据卷对应的目录,其使用方式与普通数据卷没有差别。

实际生产中,不建议采用匿名卷

  • 匿名卷不便于数据迁移
  • 匿名卷名字太长,目录太深,很难使用

挂载本地目录或文件

-v 宿主机目录或文件:容器内目录或文件
宿主机目录或文件必须以 / 或 ./开头,如果直接以名字开头,会被识别为数据卷名而非本地目录名。

-v mysql:/var/lib/mysql # 会被识别为一个数据卷叫mysql,运行时会自动创建这个数据卷
-v ./mysql:/var/lib/mysql # 会被识别为当前目录下的mysql目录,运行时如果不存在会创建目录

挂载mysql的数据目录、配置文件目录、初始化库目录
/var/lib/mysql:mysql数据目录
/etc/mysql/conf.d:mysql配置文件目录
/docker-entrypoint-initdb.d:mysql初始化库目录(仅在第一次创建容器时有作用)

# 创建并运行新mysql容器,挂载本地目录
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \mysql

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

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

相关文章

科研进展 | RSE:全波形高光谱激光雷达数据Rclonte系列处理算法一

《环境遥感》&#xff08;Remote Sensing of Environment&#xff0c;IF11.1&#xff09;近日发表一项来自中国科学院空天信息创新研究院王力、牛铮研究员团队的全波形高光谱激光雷达&#xff08;hyperspectral LiDAR&#xff0c;HSL&#xff09;数据处理算法研究&#xff0c;论…

sentinel原理源码分析系列(八)-熔断

限流为了防止过度使用资源造成系统不稳&#xff0c;熔断是为了识别出”坏”资源&#xff0c;避免好的资源受牵连(雪崩效应)&#xff0c;是保证系统稳定性的关键&#xff0c;也是资源有效使用的关键&#xff0c;sentinel熔断插槽名称Degrade(降级)&#xff0c;本人觉得应该改为熔…

多级缓存-案例导入说明

为了演示多级缓存,我们先导入一个商品管理的案例,其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。 1.安装MySQL 后期做数据同步需要用到MySQL的主从功能,所以需要大家在虚拟机中,利用Docker来运行一个MySQL容器。 1.1.准备目录 为了方便后期配置MySQL,我们…

docker sameersbn/bind dns服务器

1. 安装 #下载docker 镜像 docker pull sameersbn/bind#运行 53端口若被占用会启动失败 docker run --name dns -d --restartalways \ --publish 53:53/tcp \ --publish 53:53/udp \ --publish 10000:10000/tcp \ -v /etc/localtime:/etc/localtime \ -v /data/bind/:/data \…

ubuntu2204配置cuda

ubuntu2204配置cuda ✅系统版本&#xff1a;ubuntu22.04 LTS ✅显卡&#xff1a;英伟达2070S ✅CPU&#xff1a;i9 10900 ✅主板&#xff1a;戴尔品牌机 教程&#x1f4a8;&#x1f4a8;&#x1f4a8;&#x1f4a8;&#xff1a; ps&#xff1a;本人按照该方法一遍成功&#…

grafana 配置prometheus

安装prometheus 【linux】麒麟v10安装prometheus监控&#xff08;ARM架构&#xff09;-CSDN博客 登录grafana 访问地址&#xff1a;http://ip:port/login 可以进行 Grafana 相关设置&#xff08;默认账号密码均为 admin&#xff09;。 输入账户密码 添加 Prometheus 数据源…

【Axure高保真原型】标签管理可视化驾驶舱长页面案例

今天和大家分享标签管理可视化驾驶舱长页面案例的原型模板&#xff0c;包括我的工作、通告消息、标签总体调用趋势、标签应用业务场景对比、标签使用排名、各个标签使用情况……具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原型效果】 【Axure高保真原型】标签管…

PhpSpreadsheet创建带复杂表头的excel数据

目录 一:背景 二&#xff1a;excel表头数据实现 三&#xff1a;excel渲染数据实现&#xff1a; 四&#xff1a;最终效果如下&#xff1a; 一:背景 最近需要统计一些数据&#xff0c;导出到excel&#xff0c;主要是一些区域的人员销售统计数据&#xff0c;涉及到复杂的表头和…

【银河麒麟高级服务器操作系统-实例】集群存储文件系统异常,本地复现+详细分析+解决建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 【机型】物理机 TG225 B1 处…

ElasticSearch-7.17.10集群升级至ElasticSearch-7.17.24

文章目录 集群概览 主机名系统版本es01CentOS_7.6-aaarch64ElasticSearch-7.17.10es02CentOS_7.6-aaarch64ElasticSearch-7.17.10es03CentOS_7.6-aaarch64ElasticSearch-7.17.10 需求 1. 将三台ES节点从ElasticSearch-7.17.10升级至ElasticSearch-7.17.24&#xff1b; 2. 保证…

安装Python及pip使用方法详解

一、安装Python Python是一种广泛使用的高级编程语言&#xff0c;其安装过程相对简单。以下是具体步骤&#xff1a; 访问Python官网&#xff1a; 打开浏览器&#xff0c;访问Python的官方网站[python.org](https://www.python.org/)&#xff0c;确保下载的是最新版本的Python安…

Leetcode 最小路径和

这段代码解决的是LeetCode第64题“最小路径和”&#xff0c;其核心思想是动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;。以下是算法的具体解释&#xff1a; 1. 问题描述&#xff1a; 我们给定一个包含非负整数的 m x n 网格&#xff08;grid&…

060_基于python智能旅游系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

2k1000LA 开机自动登录, 非root 用户

问题:客户需要 开机自动免密登录,目前的系统是需要在开机界面的时候,需要使用键盘来输入密码的。 先来看看网上的资料:  然后是我自己的操作: 做好备份。 然后是更改文件: /etc/lightdm/lightdm.conf

物理海洋随学笔记(一)

频散与非频散特征 在物理海洋学中&#xff0c;非频散特征意味着波的传播速度&#xff08;相速度&#xff09;不依赖于波长&#xff0c;或者说所有波长的波以相同的速度传播。对于具有非频散特性的波&#xff0c;波长不同的波不会在传播过程中分离开&#xff0c;这与频散波不同&…

【软件测试】理论杂记 + Selenium

文章目录 测试用例万能公式基于测试对象黑盒测试方法 白盒测试Selenium选择器CSS选择器XPath选择器 等待常用API浏览器操作 测试用例万能公式 功能&#xff0c;界面&#xff0c;易用&#xff0c;兼容&#xff0c;安全&#xff0c;性能&#xff0c;网络 基于测试对象 界面测试…

SpringCloud学习记录|day6

学习材料 2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09; 复习MQ&#xff0c;学过的&#xff0c;应该会轻松一点吧。 RabbitMQ 交换机没有存储功能&#xff0c;必须…

Jupyter Notebook汉化(中文版)

原版jupyter notebook是英文的&#xff0c;想要将其改为中文 在jupyter notebook所在环境输入以下命令 pip install jupyterlab-language-pack-zh-CN打开jupyter notebook&#xff0c;在设置语言中将其设置为中文

Java中的进程与线程(如果想知道Java中有关进程与线程的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在现代计算机系统中&#xff0c;进程和线程是实现并发和高效任务管理的核心概念。理解这两者的区别和联系&#xff0c;不仅对软件开发者至关重要&#xff0c;还能帮助用户更好地理解计算机的工作原理。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容…

12、论文阅读:SpikeYOLO:高性能低能耗目标检测网络

SpikeYOLO:高性能低能耗目标检测网络 前言解释介绍相关工作论文提出的方法网络输入SpikeYOLO架构概述网络输出宏观设计微观设计I-LIF脉冲神经元LIFI-LIF实验代码前言 脉冲神经网络(Spiking Neural Networks, SNNs)具有生物合理性和低功耗的优势,相较于人工神经网络(Artif…