Linux(CentOS)環境のDockerコンテナにMysqlイメージをインストールします

Linux(CentOS)環境のDockerコンテナにMysqlイメージをインストールします

1.MysqlをDockerコンテナにインストールします

docker pull mysql  #如果使用docker pull mysql命令,就会下载最新的mysql镜像

docker pull mysql:5.7  #下载5.7版本的mysql

mysqlイメージは正常にプルされます。

[root@Silence /]# sudo docker pull mysql:5.7
5.7: Pulling from library/mysql
bf5952930446: Pull complete 
8254623a9871: Pull complete 
938e3e06dac4: Pull complete 
ea28ebf28884: Pull complete 
f3cef38785c2: Pull complete 
894f9792565a: Pull complete 
1d8a57523420: Pull complete 
5f09bf1d31c1: Pull complete 
1b6ff254abe7: Pull complete 
74310a0bf42d: Pull complete 
d398726627fd: Pull complete 
Digest: sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7


查看mysql镜像是否安装成功
#查看已安装的镜像
[root@Silence /]# sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7                 718a6da099d8        11 days ago         448MB
[root@Silence /]# 

2.インスタンスを作成し、Mysqlを起動します

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

パラメータの説明:

docker run 3306:3306 --name mysql\      #将容器3306端口映射到主机的3306端口 
-v /mydata/mysql/log:/var/log/mysql\    #将配置文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql\   #将日志文件挂载到主机
-v /mydata/mysql/conf:/etc/mysql\       #将配置文件挂载到主机
-e MYSQL_ROOT_PASSWORD=root\            #初始化root用户的密码为root
-d mysql:5.7                            #开机启动mysql

インスタンスが正常に作成されました。

[root@Silence /]# docker run -p 3306:3306 --name mysql \
> -v /mydata/mysql/log:/var/log/mysql \
> -v /mydata/mysql/data:/var/lib/mysql \
> -v /mydata/mysql/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
743df4fba2e9e58c7fb28d6a59ae3c64c7d98be1ca5f474f8a95b06e534554b7

Dockerで実行中のインスタンスを表示します。

[root@Silence /]# docker ps    #查看Docker中正在运行的容器
#结果
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                               NAMES
743df4fba2e9        mysql:5.7           "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

3.mysqlを起動します。

docker start mysql

この手順を実行した後、Navicatなどのクライアントツールを使用してmysqlに
リモート接続することができます。AlibabaCloudサーバーを使用している場合、サーバーの3306ポートを開いていないため、リモート接続を確立できません。

問題が解決しました

私はAlibabaCloudサーバーを使用しているため、Mysqlのインストール後にリモート接続が失敗します。そのため、Alibaba Cloudコンソールに入って、ポート3306のセキュリティグループを開く必要があります。

アリババクラウド管理制御の背景を入力します-クラウドサーバーECS-インスタンス
ここに写真の説明を挿入

次に、インスタンスのネットワークとセキュリティグループをクリックし、入力後に[クイック追加]をクリックして、
ここに写真の説明を挿入
mysqlをチェックして確認し
ここに写真の説明を挿入
ます。構成が完了したら、Navicatを介して再度接続し、正常に接続できることを確認します。

4. Mysql構成:文字エンコード形式を構成します

新しいmy.cnfファイルを作成します

vi mydata/mysql/conf/my.cnf    #mysql的文件路径已经映射到Linux中,所以我们在Linux中新增文件也会出现在mysql容器中
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

文字化けの問題に対処するには、上記のコードをmy.cnfファイルに追加します。

保存後にmysqlを再起動します

[root@Silence /]# docker restart mysql   #重启mysql
mysql
[root@Silence /]# 

新しく作成したmy.cnfファイルがmysqlコンテナ内に追加されているかどうかを確認します。

[root@Silence /]# docker exec -it mysql /bin/bash
root@743df4fba2e9:/#             #成功进入mysql内部

root@743df4fba2e9:/# ls
bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@743df4fba2e9:/# cd etc/mysql/
root@743df4fba2e9:/etc/mysql# ls
my.cnf                              #发现我们刚刚新增的my.cnf文件已经存在。
root@743df4fba2e9:/etc/mysql# 

これまでのところ、mysqlは正常に使用できます。

おすすめ

転載: blog.csdn.net/nxw_tsp/article/details/108040967