GVKun编程网logo

Windows/Mac系统Docker方式安装Mysql(包含utf8)

4

在这里,我们将给大家分享关于Windows/Mac系统Docker方式安装Mysql(包含utf8)的知识,同时也会涉及到如何更有效地AdDuplex:Windows1021H1和Windows11首

在这里,我们将给大家分享关于Windows/Mac系统Docker方式安装Mysql(包含utf8)的知识,同时也会涉及到如何更有效地AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比的内容。

本文目录一览:

Windows/Mac系统Docker方式安装Mysql(包含utf8)

Windows/Mac系统Docker方式安装Mysql(包含utf8)

一、Mac系统下Docker安装

访问docker官网:https://www.docker.com/get-started 下载Mac版,下载时需要我们登陆Docker账号,因此我们需要先注册一个Docker账号,这个账号在后面启动应用的时候也可以用于登陆。

登陆Docker账号下载,下载后是一个Docker.dmg文件(523.1M),直接双击安装,安装完后,直接点击图标启动Docker,如下图(whaly应是个调皮的鲸鱼)。

下一步完毕之后,就可以在上面见到这个图标,集装箱不跳动的时候就是启动完成。

为了更快速的拉取镜像,可以配置为国内的镜像源。点击图标,选中 Preferences --> Daemon,在Registry mirrors填入国内的Docker容器代理地址,这里推荐阿里云的,也可以用网易云的,这里演示这么获取自己的专属阿里云的容器镜像服务。

访问阿里云官网https://www.aliyun.com/登陆账号,进入管理控制台 --> 产品与服务 --> 弹性计算 --> 容器镜像服务 --> 镜像加速器,复制自己的专属加速器地址到Registry mirrors,重启Docker。

二、Win 10系统下Docker安装

访问docker官网:https://www.docker.com,如果有Docker账号的最好先登录账号,单击页面右上角的 ,接下来单击页面的(如果前面没有登录账号的这里会弹出登录页面),在弹出的页面单击Get start with Docker Desktop开始下载

记得中间选择 下载Window版本,这里可能下载比较慢,如果下载比较慢可以到 http://get.daocloud.io/#install-docker-for-mac-windows 下载

这里Win 10 系统即可开启 Hyper-V,然后确定重启

但如果开启Hyper-V后,VMware Workstation再启启动镜像时会提示如下错误,且无法启动。如果想正常使用可以将此选项取消,然后为保险再在PowerShell(开始 -> 右键 -> Windows PowerShell 管理员)执行一次 bcdedit /set hypervisorlaunchtype off 。重启系统才能正常使用VMware Workstation。

bcdedit /set hypervisorlaunchtype off

最后就是双击下载的 Docker for Windows Installer.exe 进行安装。

安装完毕后会提示重启系统,会在系统任务栏出现Docker的小图标,可以根据提示在PowerShell(Shift + 右键 ,进行选择)输入 :

docker info
docker version
docker ps
docker images
docker run hello-world

三、安装Mysql

同样可以在阿里云控制台镜像搜索中搜索官方进行mysql

选择第一个,里面有很详细的安装说明,也可以看到支持的版本(标签)有8.0.12,我们这次就安装这个版本,

安装之前推荐看下文档中的“Where to Store Data”部分的说明,方便我们理解在Docker中安装Mysql时为什么默认是将数据库数据映射到自己系统本地文件。

安装的方式有多中,这里直接使用如下的一条命令自动安装,

docker run --restart=always --name mysql8.0 -p 3306:3306 -v ~/soft/mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=**** -d mysql:8.0.12 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

参数解释:更详细的参数说明可查看官网对 docker run 的描述(docker run Description)

--restart=always 设置启动Docker后自动运行容器
--name 设置此容器的名字
-p 3306:3306 前面是暴露出去的端口,后面是容器内部的服务端口
-v 本地目录:容器路径 最好指定这个参数,明确将容器的挂载点映射到本地文件夹,这个文件夹中会保存容器的数据,其中包括 mysql 数据的数据
-e MYSQL_ROOT_PASSWORD 设置root用户的密码
-d mysql:tag 指定安装mysql的版本,tag可以选择官方文档提供的可选的版本

查看mysql容器信息

$ docker ps

使用工具(Navicat)连接

连接成功,查看版本,也是我们刚安装的8.0.12的版本。

【说明】 这里需要注意一点的是,官方提供的 MySQL 的 Dockerfile 使用的是 debian 系统,默认没有对语言及 utf8 字符集的支持,如下图:

如果不使用 docker 中的 mysql cli 命令就可以直接使用官方镜像,这个是完全没有任何问题的,但如果需要使用 docker 中的 mysql cli 命令,官方的会无法输入 中文字符,并且显示的中文是乱码。此时我们访问 mysql 官方提供的 Dockerfile.debian (https://github.com/docker-library/mysql),下载其中的 8.0 版本到本地(8.0 版本下的 Dockerfile.debian、docker-entrypoint.sh、config 都需要下载),对 Dockerfile 进行如下修改,重点是添加了对 utf8 编码的支持,并设置为本地语言环境为 en_US.utf8(这个在开始时完全够用)。

#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#
# 系统使用 debian 的 buster-slim 镜像
FROM debian:buster-slim
 
# 设置 uft8 环境
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8
 
# 添加 mysql 的用户和组
RUN groupadd -r mysql && useradd -r -g mysql mysql
 
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*
 
# 添加 gosu,以便从 root 用户轻松降级,更详细可见 https://github.com/tianon/gosu/releases
ENV GOSU_VERSION 1.12
RUN set -eux; \
	savedAptMark="$(apt-mark showmanual)"; \
	apt-get update; \
	apt-get install -y --no-install-recommends ca-certificates wget; \
	rm -rf /var/lib/apt/lists/*; \
	dpkgArch="$(dpkg --print-architecture | awk -F- ''{ print $NF }'')"; \
	wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
	wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
	gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
	gpgconf --kill all; \
	rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
	apt-mark auto ''.*'' > /dev/null; \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	chmod +x /usr/local/bin/gosu; \
	gosu --version; \
	gosu nobody true
 
RUN mkdir /docker-entrypoint-initdb.d
 
RUN apt-get update && apt-get install -y --no-install-recommends \
# for MYSQL_RANDOM_ROOT_PASSWORD
		pwgen \
# for mysql_ssl_rsa_setup
		openssl \
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
		perl \
# install "xz-utils" for .sql.xz docker-entrypoint-initdb.d files
		xz-utils \
	&& rm -rf /var/lib/apt/lists/*
 
RUN set -ex; \
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
	key=''A4A9406876FCBD3C456770C88C718D3B5072E1F5''; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
	gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
	gpgconf --kill all; \
	rm -rf "$GNUPGHOME"; \
	apt-key list > /dev/null
 
# 添加 mysql 环境变量
ENV MYSQL_MAJOR 8.0
ENV MYSQL_VERSION 8.0.22-1debian10
 
RUN echo ''deb http://repo.mysql.com/apt/debian/ buster mysql-8.0'' > /etc/apt/sources.list.d/mysql.list
 
# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn''t have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# also, we set debconf keys to make APT a little quieter
RUN { \
		echo mysql-community-server mysql-community-server/data-dir select ''''; \
		echo mysql-community-server mysql-community-server/root-pass password ''''; \
		echo mysql-community-server mysql-community-server/re-root-pass password ''''; \
		echo mysql-community-server mysql-community-server/remove-test-db select false; \
	} | debconf-set-selections \
	&& apt-get update \
	&& apt-get install -y \
		mysql-community-client="${MYSQL_VERSION}" \
		mysql-community-server-core="${MYSQL_VERSION}" \
	&& rm -rf /var/lib/apt/lists/* \
	&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
	&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
	&& chmod 1777 /var/run/mysqld /var/lib/mysql
 
# 指定挂载点为 /var/lib/mysql,也可以通过 docker run -v 宿主机目录:容器中挂载点
VOLUME /var/lib/mysql
 
# Config files
COPY config/ /etc/mysql/
COPY docker-entrypoint.sh /usr/local/bin/
# backwards compat
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh
# 作用类似于 CMD,但更加灵活复杂,使用后会将 CDM 的内容作为参数传给 ENTRYPOINT 指令
ENTRYPOINT ["docker-entrypoint.sh"]
 
# 声明运行时暴露的端口(port1 port2 …)。但是在运行时并不会默认暴露这个配置的端口,还是需要 run 的时候指定,
EXPOSE 3306 33060
CMD ["mysqld"]
 

执行如下命令开始构建镜像,这里通过 -f 参数指定 Dockerfile 文件为 Dockerfile.debian,如果使用默认文件名可以不用指定。

docker build -t mysql-utf8:8.0.22 -f ./Dockerfile.debian .

构建成功后可以通过 docker images 查看刚才构建出的 mysql 镜像。

最后我们使用这个镜像,通过如下命令启动一个容器

docker run --name mysql8.0 -p 33307:3306 -v /u01/docker-mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root用户密码 -d mysql-utf8:8.0.22 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 

此时进入容器后,发现已经支持了 utf8

如果是直接在linux系统下安装mysql5.X或者8.X版本可参考我的另一篇博客Centos7环境下离线安装mysql 5.7 / mysql 8.0

参考资料:https://hub.docker.com/r/_/mysql/

到此这篇关于Windows/Mac系统Docker方式安装Mysql(包含utf8)的文章就介绍到这了,更多相关Docker安装Mysql内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • 浅谈MySQL中的group by
  • 浅谈mysql哪些情况会导致索引失效
  • MySQL数据库索引的最左匹配原则
  • mysql 联合索引生效的条件及索引失效的条件
  • 浅谈MySql整型索引和字符串索引失效或隐式转换问题
  • mysql5.7的安装及Navicate长久免费使用的实现过程
  • Gin与Mysql实现简单Restful风格API实战示例详解
  • MySQL中order by的使用详情
  • MySQL中使用正则表达式详情

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增

AdDuplex 关于 Windows 10 统计数据的最后一份报告是几个月前的。从那以后发生了很多事情。因为Windows 10 2004的比例明显缩水,Windows 10 21H1的比例有所增加。

AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增长 - 2021 年 7 月

事实上,现在有 26.6% 的用户在使用 Windows 10 21H1。Windows 10 20H2 的份额从 40.1% 下降到 36.3%,而 2004 年的份额从 40.6% 下降到“仅”24.6%。

有趣的是内部版本用户数量的增加。这里的比例通常最多在 0.4% 和 0.7% 之间波动。但现在仅 Windows 11 就已经拥有 0.9% 的份额,Windows 10 Insider 已经拥有 0.2% 的份额。现在已经总结了旧版本的比例。与 1903 年和 1909 年一起是 11.5%。

C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

如何解决C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10

我编写了一个应用程序来帮助用户使用 C# 生成字母。我创建了以富文本格式保存在 sql Server 数据库中的模板。我的开发机器是 Windows 7,我使用 Visual Studio 2019 来编写应用程序。我使用 NuGet 添加 Word 的互操作引用。该应用程序配置为面向 x86 的 Release、平台 Active(Any cpu)。它是一个 ClickOnce 应用程序,从共享驱动器安装在一个单独的目录中,但与保存字母的驱动器相同。

该应用程序在我的机器上正常运行,但在 Windows 10 用户机器上运行不正常。当它尝试保存文件时,她收到一条错误消息,提示“抱歉,我们找不到该文件”。我们都有 Word 2016。两台机器都是 64 位。我将这封信保存为 Word 中的备份,然后导出为 PDF。在导出为 PDF 之前,代码无法保存 Word 文档。请参阅下面的代码片段:

  1. public static void SavetoWord2(string CoverLetter,string LetterText,string FileSave,string BackUpSave,ref string ErrorString)
  2. {
  3. try
  4. {
  5. Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
  6. string headerfooterFile = Properties.FileResources.headerfooterTemplate;
  7. Document odoc = new Document();
  8. odoc = oWord.Documents.Add(@headerfooterFile);
  9. odoc.Activate();
  10. try
  11. {
  12. Clipboard.Clear();
  13. Clipboard.SetText(CoverLetter,TextDataFormat.Rtf);
  14. odoc.ActiveWindow.Selection.Paste();
  15. Clipboard.Clear();
  16. Clipboard.SetText(LetterText,TextDataFormat.Rtf);
  17. odoc.ActiveWindow.Selection.Paste();
  18. //01/26/2021 JS having trouble with the save on Pam''s machine so going to try to capture the correct error.
  19. try
  20. {
  21. odoc.SaveAs(@BackUpSave);
  22. }
  23. catch (Exception exBU)
  24. {
  25. ErrorString = "Error trying to save " + @BackUpSave + ": " + exBU.Message;
  26. }
  27. try
  28. {
  29. odoc.ExportAsFixedFormat(@FileSave,WdExportFormat.wdExportFormatPDF);
  30. }
  31. catch (Exception exPDF)
  32. {
  33. if (string.IsNullOrEmpty(ErrorString))
  34. {
  35. ErrorString = "Error trying to save " + @FileSave + " PDF: " + exPDF.Message;
  36. }
  37. else
  38. {
  39. ErrorString += " and Error trying to save " + @FileSave + " PDF: " + exPDF.Message;
  40. }
  41. }
  42. }
  43. catch (Exception exInner)
  44. {
  45. ErrorString = exInner.Message;
  46. MessageBox.Show(exInner.Message,Properties.LetterResources.SavetoWord,MessageBoxButtons.OK,MessageBoxIcon.Error);
  47. }
  48. Clipboard.Clear();
  49. oWord.Quit(SaveChanges: 0);
  50. Marshal.FinalReleaseComObject(oWord);
  51. //oWord.Visible = true;
  52. }
  53. catch (Exception ex)
  54. {
  55. ErrorString = ex.Message;
  56. MessageBox.Show(ex.Message,MessageBoxIcon.Error);
  57. }
  58. }

错误发生在 odoc.SaveAs 行上,但仅在从 Windows 10 计算机运行时发生。最初,我使用了我机器上的互操作,但后来将其更改为 NuGet 互操作,但这并没有解决问题。我尝试将 Embed Interop Types 更改为 False 但这并没有解决任何问题,因此我将其改回。互操作引用的别名属性是全局的,特定版本属性是 True。由于富文本,我担心更改文档编写器的类型。应用程序的其余部分对于 Windows 10 用户来说运行良好。有什么想法吗?

解决方法

OpenXML 没有成功,因为它不允许我正确添加标题或导出为 PDF。尽管我非常希望使用 OpenXML,但我最终还是回到了 Word Interop。我能够通过如下设置参考属性来解决这个问题:

嵌入互操作类型 = False 复制本地 = True

现在无论哪个操作系统运行程序,保存都有效。我有上面的部分答案,但忽略了 Copy Local = true 部分。

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?

如何解决Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复??

除了一项功能外,我还使用 Wine 成功运行了 Windows 程序。该程序可以设置为在 texlive 发行版中启动 pdflatex,当它启动时,它等待查看结果是否成功,然后复制/移动文件。但是在 Linux 上,我无法安排它像在 Windows 上那样等待 pdflatex 完成,因此过早地复制/移动文件并且 pdflatex 无法找到它们。

有一个对话框可以用来保存任意命令,当我按下应用程序中的 pdflatex 按钮时,该命令将被执行。我将此对话框指向 Windows 上的 C:\texlive\2020\bin\win32\pdflatex.exe 并且它可以工作。除了不等待的问题外,我成功地放置了这个命令,以便在Linux上使用wine运行pdflatex。

Z:/usr/bin/gnome-terminal --wait -- /home/nonnull/bin/runlatex/runlatex.sh "%f"

通过将 runlatex.sh 中的最后一个命令设为 exec /bin/bash,终端保持打开状态,因此我可以看到 pdflatex 的所有输出,并知道它正在使用 runlatex.sh 必须找出的正确文件运行通过将传递给它的 Windows 路径转换为其实际路径。 pdflatex 以各种方式抱怨它在那里创建的文件,然后在运行期间不存在。即使终端是打开的,所以没有完成执行,应用程序抱怨 pdflatex 没有正确完成,甚至在 pdflatex 的输出文本完成向下滚动终端之前。当我省略 exec 时,应用程序的行为不会改变终端立即关闭时的命令 pdflatex 完成。

Wine 是怎么回事,命令在完成运行之前不会保持附加状态?我该怎么办?对可以绕过这个困难的命令或机制有什么建议吗?如果需要的话,我准备编写一个 win32 程序来进行调解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

如何解决MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比

事实证明,下面询问的 Docker/Windows 问题的原因是我这边的 Hyper-V 的本地网络问题。所以它与 Windows 和 Linux 上的 Docker 之间的区别无关,也与 MariaDB 没有任何关系。我想删除这个问题,但不鼓励这样做,因为它已经有了答案。


我是 docker 新手,但不是 MysqL 的新手。我想在 Docker 中使用 MariaDB。我在 Windows 10 和 Ubuntu 上都安装了 Docker。

对于 MariaDB 容器,我遵循了此处的描述 https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/,因为它似乎比此更准确:https://hub.docker.com/_/mariadb。

我使用以下方法创建了一个 MariaDB 容器:

docker run --name mariadb -e MysqL_ROOT_PASSWORD=test -d mariadb:latest

“最新”拉取了 MariaDB 服务器 10.5.8。

我确认在 my.cnf 中启用了通过端口 3306 的 tcp 访问

[client-server]
port=3306

从容器内部运行 MysqL 客户端是可行的

docker exec -it MariaDB MysqL -u root -p

从主机运行 MysqL 客户端

MysqL -h 172.17.0.2 -u root -p

适用于我的 Ubuntu 主机,但不适用于我的 Windows 10 主机。在 Windows 上,该命令会在一段时间后返回,没有任何消息。

你能告诉我原因并帮助我吗?

解决方法

更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=test -d mariadb:latest --port 3306:3306

在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址

打开powershell并执行ifconfig命令,然后找到WSL网络适配器:

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::e96c:c3d6:464e:2a3b%72
   IPv4 Address. . . . . . . . . . . : 172.20.240.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :

您的 Windows IP 是 172.20.240.1

现在使用 ip a 命令找出 Linux 主机 IP,并查看与 Windows 相同网络中的 IP:

5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:ce:28:8e brd ff:ff:ff:ff:ff:ff
    inet 172.20.252.177/20 brd 172.20.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fece:288e/64 scope link
       valid_lft forever preferred_lft forever

从windows连接到linux服务器

mysql -u root -h 172.20.252.177 -P 3306 -p

Linux 上的 Docker 与 Windows 上的对比

在 Linux 上,docker 在您的系统中以本机方式工作。没有适用于 Windows 的官方 docker 版本。这意味着您需要在 Windows(以及 MacOS)中模拟 linux 机器并在那里运行 docker 守护进程。

当您模拟 linux 时,虚拟机管理程序会为您的模拟系统创建新网络,因此 docker 不在本地主机上运行。

作为用户的主要区别在于,您无法像 localhost 一样访问在 docker 中运行的应用程序,因为它运行在具有自己网络 IP 的 VM 中。

另一个区别是资源可用性。 在 linux docker deamon 可以访问您的所有资源(CPU、内存、硬盘、网络等)。当然,您可以为其创建配额,但目前不关心。

在 Windows 中,您运行 VM 并将一些有限的资源分配给模拟的 Linux。例如 20 GB 硬盘、1vCPU 和 2GB 内存。这对于您的应用程序的性能很重要。它们在 Windows 中会比在 Linux 中慢(如果需要更多资源)。

但是当我在 Windows 上工作时。我喜欢它,因为我可以创建 docker VM 的快照,并且可以将其复制到另一台计算机。这很神奇,因为您在安装或更换计算机时无需配置系统。

关于Windows/Mac系统Docker方式安装Mysql(包含utf8)的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于AdDuplex:Windows 10 21H1 和 Windows 11 首次进入快速增、C# windows 窗体应用程序 Word Interop 适用于 Windows 7 但不适用于 Windows 10、Linux/Wine:windows 应用程序启动 windows 控制台命令并在 windows 上等待时在 linux 上不等待:如何修复?、MariaDB docker 从主机 Windows 10 和 Linux 访问 更新您的命令以在 Ubuntu 系统中的 docker 中运行 mysql:在 Windows 和 Linux 中检查 WSL 网络适配器的 IPv4 地址从windows连接到linux服务器Linux 上的 Docker 与 Windows 上的对比的相关信息,请在本站寻找。

本文标签: