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は正常に使用できます。