docker入門實踐,製作屬於自己的mysql5.7鏡像

在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,可能中途安裝了一些工具包造成的,需要儘可能減少鏡像包的體積

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章