docker入門實踐,製作屬於自己的mysql5.7映象
阿新 • • 發佈:2018-11-13
在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
[[email protected] ~]# docker attach sick_pasteur
[[email protected] 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
[[email protected] ~]# 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[email protected] ~]# docker commit dc6aa8396dce lzcmysql5.7:0.1
e9bb7d3653fee7b15a227f52c867b423f7b3f5b1a5aa710f2f8fdfa58f3f6e79
[[email protected] ~]# 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 /bin/sh -c “while true;do echo hello docker;sleep 1;done;”
注意:
- 這裡雖然進行了埠對映,但是這種方式建立的容器中的mysql是沒有啟動的,還需要進入容器將mysqlserver啟動一下。
- 這裡指令碼/bin/sh -c "while true;do echo hello docker;sleep 1;done;"這麼寫,是希望永遠執行下去,而不會退出。
接下來我們進入這個docker容器吧
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d892dc773700 lzcmysql5.7:0.1 "/bin/sh -c 'while t 25 minutes ago Up 25 minutes 0.0.0.0:13306->3306/tcp lzcmysql6
#root docker exec -it d892dc773700 /bin/bash
#/usr/bin/mysqld_safe --user=mysql --datadir=/export/servers/mysql/data &
TODO
自制的lzcmysql5.7比較大,達到1.378 GB,可能中途安裝了一些工具包造成的,需要儘可能減少映象包的體積
#參考文章
如何進入Docker容器 https://blog.csdn.net/u010397369/article/details/41045251