Ubuntu18.04 使用Docker安裝MySQL並在宿主機登錄

Ubuntu18.04 使用Docker安裝MySQL並在宿主機登錄

安裝Docker

  • 如果有舊版本的話,需要先卸載舊版本

按照官方文檔的教程:

  1. 準備工作
# 先卸載舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 更新軟件包索引,嫌棄國外軟件源慢的可以自行更換軟件源
sudo apt-get update

# 安裝依賴
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加Docker的官方GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 驗證安裝:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通過搜索指紋的最後8個字符,驗證您現在擁有帶指紋的密鑰。
sudo apt-key fingerprint 0EBFCD88
    
# 輸出這個結果表示添加成功
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

  1. 開始安裝
# 更新apt包索引
sudo apt-get update

# 安裝最新版docker
sudo apt-get install docker-ce

  • 至此Docker已經安裝完成

拉取MySQL

  1. 查找Docker Hub上的mysql鏡像
docker search mysql

返回結果,按星級排序:

NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                                  MySQL is a widely used, open-source relation…   7960                [OK]                
mariadb                                                MariaDB is a community-developed fork of MyS…   2662                [OK]                
mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   598                                     [OK]
zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       176                                     [OK]
hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          110                                     
zabbix/zabbix-web-nginx-mysql                          Zabbix frontend based on Nginx web-server wi…   92                                      [OK]
centurylink/mysql                                      Image containing mysql. Optimized to be link…   60                                      [OK]
centos/mysql-57-centos7                                MySQL 5.7 SQL database server                   50                                      
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5   ubuntu-16-nginx-php-phpmyadmin-mysql-5          50                                      [OK]
mysql/mysql-cluster                                    Experimental MySQL Cluster Docker images. Cr…   41                                      
tutum/mysql                                            Base docker image to run a MySQL database se…   31                                      
schickling/mysql-backup-s3                             Backup MySQL to S3 (supports periodic backup…   25                                      [OK]
bitnami/mysql                                          Bitnami MySQL Docker Image                      25                                      [OK]
zabbix/zabbix-web-apache-mysql                         Zabbix frontend based on Apache web-server w…   24                                      [OK]
zabbix/zabbix-proxy-mysql                              Zabbix proxy with MySQL database support        20                                      [OK]
linuxserver/mysql                                      A Mysql container, brought to you by LinuxSe…   20                                      
centos/mysql-56-centos7                                MySQL 5.6 SQL database server                   13                                      
circleci/mysql                                         MySQL is a widely used, open-source relation…   12                                      
mysql/mysql-router                                     MySQL Router provides transparent routing be…   8                                       
dsteinkopf/backup-all-mysql                            backup all DBs in a mysql server                6                                       [OK]
openshift/mysql-55-centos7                             DEPRECATED: A Centos7 based MySQL v5.5 image…   6                                       
jelastic/mysql                                         An image of the MySQL database server mainta…   1                                       
cloudposse/mysql                                       Improved `mysql` service with support for `m…   0                                       [OK]
widdpim/mysql-client                                   Dockerized MySQL Client (5.7) including Curl…   0                                       [OK]
ansibleplaybookbundle/mysql-apb                        An APB which deploys RHSCL MySQL                0                                       [OK]
  1. 選擇安裝版本
# 5.6是版本號
docker pull mysql:5.6
  1. 查看剛安裝的MySQL
docker images | mysql

# 返回結果
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.6                 bc788a6a2745        33 hours ago        256MB

啓動Docker中的MySQL

  1. 啓動MySQL
# 要執行的命令,將Docker中的3306端口映射到宿主機的3306
docker run -p 3306:3306 --name mysql56 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
# 返回結果
0d9288bf06fba3d67d75c1a1f3c4ac74182c185e33c3c4a428401686ef5fb818

# 命令釋義:
-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
-v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。

  1. 查看啓動狀態
# 要執行的命令
docker ps

# 返回結果
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0d9288bf06fb        mysql:5.6           "docker-entrypoint.s…"   19 seconds ago      Up 18 seconds       0.0.0.0:3306->3306/tcp   mysql56

連接MySQL

  • 如果宿主機中沒有安裝MySQL客戶端,需要先安裝MySQL客戶端
# 二選一,裝一個就好
apt install mysql-client-core-5.7   
apt install mariadb-client-core-10.1

# 連接
mysql -u root -p 123456

# 不出以外會報錯
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

在Docker中安裝的MySQL和宿主機是兩個概念,需要走tcp連接。
所以原來的socket連接的命令就會報錯。

  • 需要使用tcp連接命令來連接Docker中安裝的MySQL
# 這樣就可以連接到MySQL了
mysql -h 127.0.0.1 -P 3306 -u root -p
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章