在docker容器中安裝Mysql
在docker容器中安裝Mysql,與直接在centos中安裝是沒有任何區別的,可以參考這篇文章下載必要的安裝包,並進行安裝
https://blog.csdn.net/hl_java/article/details/82852627
在docker容器中啓動Mysql
使用這篇文章(https://blog.csdn.net/hl_java/article/details/82852627)的啓動方式啓動時報錯,錯誤內容如下,原因暫時未知(以後再找到了再和大家同步)
/etc/init.d/mysqld start
/etc/init.d/mysqld: line 13: /etc/rc.d/init.d/functions: No such file or directory
所以我接下來隨後換了一種方式進行啓動Mysql
初始化
mysqld --initialize --user=mysql --datadir=/export/servers/mysql/data
啓動(之前的/etc/init.d/mysqld start會隱式初始化)
mysqld_safe --user=mysql --datadir=/export/servers/mysql/data &
驗證
# ps axu|grep mysql
root 548 0.0 0.1 11764 1656 ? S 13:12 0:00 /bin/sh /usr/bin/mysqld_safe --user=mysql --datadir=/export/servers/mysql/data
mysql 702 0.1 12.5 1124428 127752 ? Sl 13:12 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/export/servers/mysql/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 739 0.0 0.0 9036 816 ? S+ 13:14 0:00 grep --color=auto mysql
#如果執行netstat時提示命令不存在可以先執行yum install net-tools
# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::3306 :::* LISTEN -
ok,至此已經安裝完成啦,接下來進行端口映射
以守護形式運行容器
我們執行完需要的操作退出容器時,不要使用exit退出,可以利用Ctrl+P Ctrl+Q
代替,以守護式形式退出容器。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc6aa8396dce 4224b90794d0 "/bin/bash" 38 minutes ago Up 38 minutes sick_pasteur
58f31f8936ed lzc:0.1 "/root/run.sh" 38 minutes ago Exited (0) 38 minutes ago lzchello2
bc2d0f08d2c7 4224b90794d0 "/bin/bash" 39 minutes ago Exited (0) 39 minutes ago serene_morse
7efe3f061007 88ec626ba223 "/bin/bash" 40 minutes ago Exited (0) 40 minutes ago boring_archimedes
可以看到上面的第1條,status是Up 38 minutes ,表明處於還在運行狀態
附加到運行中的容器
退出正在運行的容器,想要再次進入,需要使用attach命令:docker attach name | id
[root@mylinux1 ~]# docker attach sick_pasteur
[root@dc6aa8396dce mysql]# ps axu|grep mysql
root 548 0.0 0.1 11764 1656 ? S 13:12 0:00 /bin/sh /usr/bin/mysqld_safe --user=mysql --datadir=/export/servers/mysql/data
mysql 702 0.0 12.5 1124428 127752 ? Sl 13:12 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/export/servers/mysql/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 742 0.0 0.0 9036 816 ? S+ 13:20 0:00 grep --color=auto mysql
接下來我們以此容器來創建一個包含了mysql5.7鏡像吧
製作mysql5.7鏡像
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc6aa8396dce 4224b90794d0 "/bin/bash" 47 minutes ago Up 47 minutes sick_pasteur
58f31f8936ed lzc:0.1 "/root/run.sh" 48 minutes ago Exited (0) 48 minutes ago lzchello2
bc2d0f08d2c7 4224b90794d0 "/bin/bash" 48 minutes ago Exited (0) 48 minutes ago serene_morse
7efe3f061007 88ec626ba223 "/bin/bash" 49 minutes ago Exited (0) 49 minutes ago boring_archimedes
[root@mylinux1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
lzc 0.1 4224b90794d0 49 minutes ago 199.7 MB
nginx latest 7b2ec12a5042 3 months ago 109 MB
tomcat 8 fb269ccd26c4 3 months ago 462.5 MB
redis latest 40b1f67fd3d4 3 months ago 83.38 MB
hello-world latest 3535063d9957 3 months ago 1.848 kB
centos latest 88ec626ba223 5 months ago 199.7 MB
[root@mylinux1 ~]# docker commit dc6aa8396dce lzcmysql5.7:0.1
e9bb7d3653fee7b15a227f52c867b423f7b3f5b1a5aa710f2f8fdfa58f3f6e79
[root@mylinux1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
lzcmysql5.7 0.1 e9bb7d3653fe 48 seconds ago 1.378 GB
lzc 0.1 4224b90794d0 50 minutes ago 199.7 MB
nginx latest 7b2ec12a5042 3 months ago 109 MB
tomcat 8 fb269ccd26c4 3 months ago 462.5 MB
redis latest 40b1f67fd3d4 3 months ago 83.38 MB
hello-world latest 3535063d9957 3 months ago 1.848 kB
centos latest 88ec626ba223 5 months ago 199.7 MB
以自制的mysql5.7鏡像進行啓動容器
docker run -d -p 13306:3306 -v /export/:/export/ --name lzcmysql4 lzcmysql5.7:0.1 /usr/bin/mysqld_safe --user=mysql --datadir=/export/servers/mysql/data
TODO
自制的lzcmysql5.7比較大,達到1.378 GB,可能中途安裝了一些工具包造成的,需要儘可能減少鏡像包的體積