1、启动centos6.5-ssh镜像 在宿主机器上执行如下命令:
docker run -d -P -v /var/lib/mysql:/var/lib/mysql --name=test centos6.5-ssh
接着在执行如下命令:
docker ps
2、使用SSH工具登陆当前启动的镜像
接着按步骤执行如下命令: 1、安装mysql
yum install wget -y
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
2、配置mysql
mysql_install_db --user=mysql --ldata=/var/lib/mysql
3、开启mysql
mysqld_safe
4、配置root用户密码、赋予root远程连接权限( 不要把
mysql>这个拷贝进去执行
)
mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('123456') WHERE User = 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
5、更改mysql配置,使服务忽略大小写、以utf8传输等
vi /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[client]
default-character-set=utf8
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
lower_case_table_names=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
max_allowed_packet=20M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
init_connect='SET NAMES utf8'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
# Recommended in standard MySQL setup
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
6、更改启动脚本
vi /run.sh
#!/bin/bash
mkdir /var/run/mysqld
chgrp mysql /var/run/mysqld/
chmod g+w /var/run/mysqld/
/usr/sbin/sshd
mysqld_safe
7、更改启动脚本权限
接着执行exit退出当前的ssh页面 8、提交当前容器的修改
docker commit ffb76a0db835 centos6.5-mysql-sshd-1.1
到此我们的mysql的镜像已经制作完成了,但是我们的mysql镜像的数据库只能在镜像中访问,因为我们还没有开启端口的映射。 3、使用centos6.5-mysql-sshd-1.1制作完整镜像
首先创建一个存放完整版mysql镜像的文件夹
cd docker
mkdir mysqlInfo
cd mysqlInfo
touch Dockerfile
vi Dockerfile
接着修改Dockerfile文件如下:
FROM centos6.5-mysql-sshd-1.1
MAINTAINER linzf <282245889@qq.com>
EXPOSE 3306
CMD ["/run.sh"]
最后创建当前的centos6.5-mysql-sshd-1.2版的数据库镜像:
docker build -t "centos6.5-mysql-sshd-1.2" .
docker images
可以看到我们的镜像已经创建成功了(上面已经将1.1版的镜像给删除了),接着我们启动我们的镜像。
docker run -d -P -v /var/lib/mysql:/var/lib/mysql --name=mysql2 centos6.5-mysql-sshd-1.2
docker images
可以看到我们的数据库已经启动,并将数据库的端口做了映射将镜像的3306端口映射到了宿主机器的32820的端口,此时我们的数据库已经可以直接访问了, 若是我们重复执行该镜像且给将镜像一个新的别名,那么我们将会发现我们的数据库永远只会连接第一个镜像,后面的镜像的数据库我们是连接不上的。
docker以自定义端口的方式启动该镜像
docker run -d -p 13306:3306 -v /var/lib/mysql:/var/lib/mysql --name=mysql2 centos6.5-mysql-sshd-1.2
docker ps
可以看到我们的镜像的3306端口已经映射到宿主机器的13306端口了 参考网文如下: