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 /bin/sh -c “while true;do echo hello docker;sleep 1;done;”
注意:

  1. 这里虽然进行了端口映射,但是这种方式创建的容器中的mysql是没有启动的,还需要进入容器将mysqlserver启动一下。
  2. 这里脚本/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 &

再次进入之前守护形式创建的容器

docker exec -it d892dc773700 /bin/bash

TODO

自制的lzcmysql5.7比较大,达到1.378 GB,可能中途安装了一些工具包造成的,需要尽可能减少镜像包的体积

#参考文章

如何进入Docker容器 https://blog.csdn.net/u010397369/article/details/41045251

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值