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

目录 一、Mac系统下Docker安装 二、Win 10系统下Docker安装 三、安装Mysql

一、Mac系统下Docker安装

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-猿站网-插图

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-1猿站网-插图

下一步完毕之后,就可以在上面见到这个图标%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-2猿站网-插图,集装箱不跳动的时候就是启动完成。

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

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

二、Win 10系统下Docker安装

访问docker官网:https://www.docker.com,如果有Docker账号的最好先登录账号,单击页面右上角的 %小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-3猿站网-插图 ,接下来单击页面的%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-4猿站网-插图(如果前面没有登录账号的这里会弹出登录页面),在弹出的页面单击Get start with Docker Desktop开始下载

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-5猿站网-插图

记得中间选择 %小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-6猿站网-插图下载Window版本,这里可能下载比较慢,如果下载比较慢可以到 http://get.daocloud.io/#install-docker-for-mac-windows 下载

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-7猿站网-插图

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-8猿站网-插图

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

bcdedit /set hypervisorlaunchtype off

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-9猿站网-插图

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-10猿站网-插图

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

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-11猿站网-插图

三、安装Mysql

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-12猿站网-插图

选择第一个,里面有很详细的安装说明,也可以看到支持的版本(标签)有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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-13猿站网-插图

使用工具(Navicat)连接

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-14猿站网-插图

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-15猿站网-插图

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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-16猿站网-插图

如果不使用 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

%小知识:Windows/Mac系统Docker方式安装Mysql(包含utf8)-17猿站网-插图

如果是直接在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内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/github_39577257/article/details/82955623

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Docker swarm 简单使用教程

2023-3-14 17:45:44

建站知识

小知识:基于Docker的几种常用CentOS7镜像小结

2023-3-14 18:00:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索