Dockerfile------部署MySQL5.7.20鏡像

全步驟:

[root@localhost ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum install -y docker-ce
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://w1ogxqvl.mirror.aliyuncs.com"]
}
EOF

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker pull centos:7
[root@localhost ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
centos                7                   5e35e350aded        6 weeks ago         203MB

[root@localhost ~]# mkdir /aaa
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir mysql
[root@localhost opt]# mount.cifs //192.168.10.190/rpm /aaa
Password for root@//192.168.10.190/rpm:
[root@localhost opt]# cd /aaa/mysql/
[root@localhost mysql]# ls
mysql-5.5.24.tar.gz  mysql-5.7.17.tar.gz		boost_1_59_0.tar.gz              mysql-5.6.26.tar.gz  mysql-boost-5.7.20.tar.gz
[root@localhost mysql]# cp mysql-boost-5.7.20.tar.gz /opt/mysql/
[root@localhost mysql]# cd /opt/mysql/
[root@localhost mysql]# ls
mysql-boost-5.7.20.tar.gz
[root@localhost mysql]# vim my.conf
[client]                            
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]                           
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]                          
user = mysql                  
basedir = /usr/local/mysql      
datadir = /usr/local/mysql/data    
port = 3306                    
character_set_server=utf8          
pid-file = /usr/local/mysql/mysqld.pid     
socket = /usr/local/mysql/mysql.sock    
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
#插入以上內容後,按Esc退出插入模式,輸入:wq保存退出

[root@localhost mysql]# vim Dockerfile
FROM centos:7
MAINTAINER zhou <INSTALL MYSQL5.7.20>
ADD mysql-boost-5.7.20.tar.gz /opt
WORKDIR /opt/mysql-5.7.20/
RUN yum -y update
RUN yum -y install \
cmake \
ncurses \
ncurses-devel \
bison \
gcc gcc-c++ \
make
RUN useradd -s /sbin/nologin mysql
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc/ \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
RUN make && make install
RUN chown -R mysql:mysql /usr/local/mysql/
RUN rm -rf /etc/my.cnf
ADD my.cnf /etc
ENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
RUN echo -e "#!/bin/sh	\nsystemctl enable mysqld" > /run.sh
RUN chmod 755 /run.sh
RUN sh /run.sh
CMD ["init"]
#插入以上內容後,按Esc退出插入模式,輸入:wq保存退出

[root@localhost ~]# docker build -t centos:mysql .

[root@localhost ~]# docker run --name=mysql_server -d -P --privileged mysql:centos
070e594c953c6a83ae97531710ca16ea7e3ea00f814e4f68e1548b2790323125
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
070e594c953c        mysql:centos        "init"              59 seconds ago      Up 57 seconds       0.0.0.0:32768->3306/tcp   mysql_server
`此時容器狀態爲Up,對外端口號爲32768,ID號爲070e594c953c`

[root@localhost ~]# docker exec -it 070e594c953c /bin/bash
#進容器給權限
[root@070e594c953c mysql]# mysql -u root -p
Enter password:		#此處直接回車
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 Source distribution

mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

`此時退出容器,可以使用另一宿主終端及逆行驗證`

驗證:

此時我們可以在另一終端CentOS 7-4中進行遠程登錄數據庫操作:

[root@localhost ~]# yum install mysql mysql* -y
`此項會默認安裝MariaDB數據庫`

[root@localhost ~]# mysql -h 192.168.18.145 -u root -P 32768 -p	
`進行登錄`
Enter password:		#輸入密碼abc123,回車
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 		#此時可遠程登陸上CentOS 7-5上的Mysql數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章