docker 初学者的一些随笔:
1、下载镜像:sudo docker pull mysql:5.7
*********************************************************************************************************************
这一步,就是 先虚拟建一个 mysql ,将其中的 mysql 原生 配置文件拷贝出来,进行自定义修改
1、 拷贝容器中的 数据库信息、 到宿主机中,方便维护
docker run
--rm --name mysqlTemp -it
-v /data/mysql3307/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 /bin/bash
-- rm 退出后就删除该容器
-it 交互模式
/bin/bash 进入 bash 命令模式
2、拷贝配置文件(注意这里的拷贝命令,是docker 中的拷贝,而不是宿主机的拷贝)
cp /etc/mysql/ /var/lib/mysql
将 etc/myql/ 文件拷贝到 /var/lib/msyql
3、 改变 宿主机下 data 目录的权限
chmod -R 777
/data
防止不同步
3、 在宿主机自定义 的mysql配置文件, 参考附件
*********************************************************************************************************************
2、运行容器: docker run --name mysql3307
--network host
-v /data/mysql3306/:
/etc/
my
.cnf
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci
--name 容器名称
-p 端口映射
-v 配置文件映射:将 宿主机上修改的自定义配置文件,映射到 容器中
挂载的文件修改后,在重启容器后生效
-e MYSQL_ROOT_PASSWORD 设置root密码
-d 守护进程模式运行
-character-set-server --collation-server 字符集设置
--network=host 将主机的IP与容器的IP分享:
这一条是将 容器 和 宿主机的 IP 共享,这样 修改 mysql 端口,就能保证 各个容器、宿主机之间的网络通信。
还有一种办法, 建立网络桥接, 这种方法没有研究透
*********************************************************************************************************************
关闭防火墙:
如果没有安装 iptables:
yum install iptables-services
安装后:
service iptables status 查看状态
service iptables stop 停止
service iptables start 开始
*********************************************************************************************************************
1、 宿主机访问 各个容器的mysql:
mysql -h127.0.0.1 -P3307 -uroot -p
2、
进入容器,访问 msyql
[root@izbp13xko46hud9vfr5s94z ~]
# docker exec -it 356c999b5cd0 bash
root@
356
c999b5cd0:/
# show databases;
bash: show: command
not
found
root@
356
c999b5cd0:/
# mysql -uroot -p
Enter password:
Welcome
to
the
MySQL monitor. Commands
end
with
;
or
\ MySQL connection id
is
8
Server version
:
8.0.11
MySQL Community Server - GPLCopyright (c)
2000
,
2018
, Oracle
and
/
or
its
affiliates. All rights
is
a registered trademark
of
Oracle Corporation
and
/
or
its
affiliates. Other names may be trademarks
of
their 'help;'
or
'\h'
for
help. Type '\c'
to
clear
the
current input statement.
mysql> show databases;.