Windows/Mac系統(tǒng)Docker方式安裝Mysql(包含utf8)
一、Mac系統(tǒng)下Docker安裝
訪問(wèn)docker官網(wǎng):https://www.docker.com/get-started 下載Mac版,下載時(shí)需要我們登陸Docker賬號(hào),因此我們需要先注冊(cè)一個(gè)Docker賬號(hào),這個(gè)賬號(hào)在后面啟動(dòng)應(yīng)用的時(shí)候也可以用于登陸。
登陸Docker賬號(hào)下載,下載后是一個(gè)Docker.dmg文件(523.1M),直接雙擊安裝,安裝完后,直接點(diǎn)擊圖標(biāo)啟動(dòng)Docker,如下圖(whaly應(yīng)是個(gè)調(diào)皮的鯨魚(yú))。
下一步完畢之后,就可以在上面見(jiàn)到這個(gè)圖標(biāo),集裝箱不跳動(dòng)的時(shí)候就是啟動(dòng)完成。
為了更快速的拉取鏡像,可以配置為國(guó)內(nèi)的鏡像源。點(diǎn)擊圖標(biāo),選中 Preferences --> Daemon,在Registry mirrors填入國(guó)內(nèi)的Docker容器代理地址,這里推薦阿里云的,也可以用網(wǎng)易云的,這里演示這么獲取自己的專(zhuān)屬阿里云的容器鏡像服務(wù)。
訪問(wèn)阿里云官網(wǎng)https://www.aliyun.com/登陸賬號(hào),進(jìn)入管理控制臺(tái) --> 產(chǎn)品與服務(wù) --> 彈性計(jì)算 --> 容器鏡像服務(wù) --> 鏡像加速器,復(fù)制自己的專(zhuān)屬加速器地址到Registry mirrors,重啟Docker。
二、Win 10系統(tǒng)下Docker安裝
訪問(wèn)docker官網(wǎng):https://www.docker.com,如果有Docker賬號(hào)的最好先登錄賬號(hào),單擊頁(yè)面右上角的 ,接下來(lái)單擊頁(yè)面的
(如果前面沒(méi)有登錄賬號(hào)的這里會(huì)彈出登錄頁(yè)面),在彈出的頁(yè)面單擊Get start with Docker Desktop開(kāi)始下載
記得中間選擇 下載Window版本,這里可能下載比較慢,如果下載比較慢可以到 http://get.daocloud.io/#install-docker-for-mac-windows 下載
這里Win 10 系統(tǒng)即可開(kāi)啟 Hyper-V,然后確定重啟
但如果開(kāi)啟Hyper-V后,VMware Workstation再啟啟動(dòng)鏡像時(shí)會(huì)提示如下錯(cuò)誤,且無(wú)法啟動(dòng)。如果想正常使用可以將此選項(xiàng)取消,然后為保險(xiǎn)再在PowerShell(開(kāi)始 -> 右鍵 -> Windows PowerShell 管理員)執(zhí)行一次 bcdedit /set hypervisorlaunchtype off 。重啟系統(tǒng)才能正常使用VMware Workstation。
bcdedit /set hypervisorlaunchtype off
最后就是雙擊下載的 Docker for Windows Installer.exe 進(jìn)行安裝。
安裝完畢后會(huì)提示重啟系統(tǒng),會(huì)在系統(tǒng)任務(wù)欄出現(xiàn)Docker的小圖標(biāo),可以根據(jù)提示在PowerShell(Shift + 右鍵 ,進(jìn)行選擇)輸入 :
docker info docker version docker ps docker images docker run hello-world
三、安裝Mysql
同樣可以在阿里云控制臺(tái)鏡像搜索中搜索官方進(jìn)行mysql
選擇第一個(gè),里面有很詳細(xì)的安裝說(shuō)明,也可以看到支持的版本(標(biāo)簽)有8.0.12,我們這次就安裝這個(gè)版本,
安裝之前推薦看下文檔中的“Where to Store Data”部分的說(shuō)明,方便我們理解在Docker中安裝Mysql時(shí)為什么默認(rèn)是將數(shù)據(jù)庫(kù)數(shù)據(jù)映射到自己系統(tǒng)本地文件。
安裝的方式有多中,這里直接使用如下的一條命令自動(dòng)安裝,
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
參數(shù)解釋?zhuān)焊敿?xì)的參數(shù)說(shuō)明可查看官網(wǎng)對(duì) docker run 的描述(docker run Description)
--restart=always | 設(shè)置啟動(dòng)Docker后自動(dòng)運(yùn)行容器 |
--name | 設(shè)置此容器的名字 |
-p 3306:3306 | 前面是暴露出去的端口,后面是容器內(nèi)部的服務(wù)端口 |
-v 本地目錄:容器路徑 | 最好指定這個(gè)參數(shù),明確將容器的掛載點(diǎn)映射到本地文件夾,這個(gè)文件夾中會(huì)保存容器的數(shù)據(jù),其中包括 mysql 數(shù)據(jù)的數(shù)據(jù) |
-e MYSQL_ROOT_PASSWORD | 設(shè)置root用戶的密碼 |
-d mysql:tag | 指定安裝mysql的版本,tag可以選擇官方文檔提供的可選的版本 |
查看mysql容器信息
$ docker ps
使用工具(Navicat)連接
連接成功,查看版本,也是我們剛安裝的8.0.12的版本。
【說(shuō)明】 這里需要注意一點(diǎn)的是,官方提供的 MySQL 的 Dockerfile 使用的是 debian 系統(tǒng),默認(rèn)沒(méi)有對(duì)語(yǔ)言及 utf8 字符集的支持,如下圖:
如果不使用 docker 中的 mysql cli 命令就可以直接使用官方鏡像,這個(gè)是完全沒(méi)有任何問(wèn)題的,但如果需要使用 docker 中的 mysql cli 命令,官方的會(huì)無(wú)法輸入 中文字符,并且顯示的中文是亂碼。此時(shí)我們?cè)L問(wèn) mysql 官方提供的 Dockerfile.debian (https://github.com/docker-library/mysql),下載其中的 8.0 版本到本地(8.0 版本下的 Dockerfile.debian、docker-entrypoint.sh、config 都需要下載),對(duì) Dockerfile 進(jìn)行如下修改,重點(diǎn)是添加了對(duì) utf8 編碼的支持,并設(shè)置為本地語(yǔ)言環(huán)境為 en_US.utf8(這個(gè)在開(kāi)始時(shí)完全夠用)。
# # NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" # # PLEASE DO NOT EDIT IT DIRECTLY. # # 系統(tǒng)使用 debian 的 buster-slim 鏡像 FROM debian:buster-slim # 設(shè)置 uft8 環(huán)境 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 用戶輕松降級(jí),更詳細(xì)可見(jiàn) 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 環(huán)境變量 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 # 指定掛載點(diǎn)為 /var/lib/mysql,也可以通過(guò) docker run -v 宿主機(jī)目錄:容器中掛載點(diǎn) 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 # 作用類(lèi)似于 CMD,但更加靈活復(fù)雜,使用后會(huì)將 CDM 的內(nèi)容作為參數(shù)傳給 ENTRYPOINT 指令 ENTRYPOINT ["docker-entrypoint.sh"] # 聲明運(yùn)行時(shí)暴露的端口(port1 port2 …)。但是在運(yùn)行時(shí)并不會(huì)默認(rèn)暴露這個(gè)配置的端口,還是需要 run 的時(shí)候指定, EXPOSE 3306 33060 CMD ["mysqld"]
執(zhí)行如下命令開(kāi)始構(gòu)建鏡像,這里通過(guò) -f 參數(shù)指定 Dockerfile 文件為 Dockerfile.debian,如果使用默認(rèn)文件名可以不用指定。
docker build -t mysql-utf8:8.0.22 -f ./Dockerfile.debian .
構(gòu)建成功后可以通過(guò) docker images 查看剛才構(gòu)建出的 mysql 鏡像。
最后我們使用這個(gè)鏡像,通過(guò)如下命令啟動(dòng)一個(gè)容器
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
此時(shí)進(jìn)入容器后,發(fā)現(xiàn)已經(jīng)支持了 utf8
如果是直接在linux系統(tǒng)下安裝mysql5.X或者8.X版本可參考我的另一篇博客Centos7環(huán)境下離線安裝mysql 5.7 / mysql 8.0
參考資料:https://hub.docker.com/r/_/mysql/
到此這篇關(guān)于Windows/Mac系統(tǒng)Docker方式安裝Mysql(包含utf8)的文章就介紹到這了,更多相關(guān)Docker安裝Mysql內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。