mysql 的 docker container - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
final0pro

mysql 的 docker container

  •  
  •   final0pro Jul 28, 2014 7063 views
    This topic created in 4295 days ago, the information mentioned may be changed or developed.
    刚接触docker和mysql,想建立一个docker container,里面装个mysql。程序可以直接连接ontainer里的mysql。

    这是Dockerfile
    FROM ubuntu:14.04
    # install mysql
    RUN apt-get update
    RUN DEBIAN_FROnTEND=noninteractive apt-get -y install mysql-server
    ADD entrypoint.sh /entrypoint.sh
    RUN chmod 755 /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    EXPOSE 3306

    这是`entrypoint.sh`

    #!/bin/bash
    mysql -uroot -e 'UPDATE mysql.user SET password=PASSWORD("rootpass") WHERE user="root"'
    mysql -uroot -e 'FLUSH PRIVILEGES'

    安装的时候好像出了问题,运行`sudo docker build -t test/devenv .`
    Setting up mysql-server5.5 (5.5.38-0ubuntu0.14.04.1) ...
    invoke-rc.d: policy-rc.d denied execution of stop.
    invoke-rc.d: policy-rc.d denied execution of start.

    执行`sudo docker run -d -p 3306:3306 test/devenv`

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    2c0bfb09a8a0 test/devenv:latest /entrypoint.sh /bin/ 7 seconds ago Exited (1) 6 seconds ago berserk_nobel

    执行`sudo docker run -i -t ubuntu /bin/bash`

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

    大神们我这是要怎么修改?谢谢!


    http://stackoverflow.com/questions/24988947/install-mysql-in-docker-and-expose-mysql-service-to-outside
    Supplement 1    Jul 29, 2014
    更改了文件

    Dockerfile:

    FROM ubuntu:14.04
    ADD ./setup_mysql.sh /setup_mysql.sh
    RUN chmod 755 /setup_mysql.sh
    RUN /setup_mysql.sh
    EXPOSE 3306
    CMD ["/usr/sbin/mysqld"]

    setup_mysql.sh
    apt-get update && DEBIAN_FROnTEND=noninteractive apt-get install -y mysql-server
    sed -i -e "s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf

    service mysql start &
    sleep 5

    echo "UPDATE mysql.user SET password=PASSWORD('rootpass') WHERE user='root'" | mysql
    echo "CREATE DATABASE devdb" | mysql
    echo "GRANT ALL ON devdb.* TO devuser @'%' IDENTIFIED BY 'devpass'" | mysql

    sleep 5
    service mysql stop

    新的Dockerfile还是会在安装mysql-server时候无法正常启动mysql
    不过可以从外部通过devuser连接到了

    新的问题来了:
    第二个 sleep 5 不移除的话, service mysql stop就会爆出
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    16 replies    2014-07-30 10:58:13 +08:00
    msg7086
        1
    msg7086  
       Jul 28, 2014   1
    看上去没什么问题。你能连接mysql端口试试吗?
    jwk345
        2
    jwk345  
       Jul 28, 2014   1
    jwk345
        3
    jwk345  
       Jul 28, 2014
    jwk345
        4
    jwk345  
       Jul 28, 2014
    额,贴的好难看
    final0pro
        5
    final0pro  
    OP
       Jul 28, 2014
    @msg7086 container 已经终止了
    final0pro
        6
    final0pro  
    OP
       Jul 28, 2014
    @jamesxu 好多疑问lol。我先看看
    xdays
        7
    xdays  
       Jul 29, 2014   1
    final0pro
        8
    final0pro  
    OP
       Jul 30, 2014
    @xdays 对啊。感觉和你的差不多。但是为什么我的mysql安装之后不能正常启动与关闭呢。而且我一定要chmod那个script。。为啥呢T_T
    imlonghao
        9
    imlonghao  
       Jul 30, 2014 via iPad
    我昨晚搭建了一个myswl容器,没用dockerfile,bash进去安装的。
    安装步骤没看网上乱七八糟的教程,看mysql.org上面的东西安装的。
    安装后,我commit成一个images,然后run base/mysql /bin/sbin/mysqld_safe
    接下来的事情就是mysql容器和web容器之间link的事情了
    imlonghao
        10
    imlonghao  
       Jul 30, 2014 via iPad
    mysql*
    imlonghao
        11
    imlonghao  
       Jul 30, 2014 via iPad   1
    /usr/sbin/mysqld_safe*
    final0pro
        12
    final0pro  
    OP
       Jul 30, 2014
    @imlonghao 我现在能跑起来。。。只是不懂为什么
    1. 安装mysql之后无法正常启动
    2. service mysql stop之前要sleep一下
    imlonghao
        13
    imlonghao  
       Jul 30, 2014 via iPad
    下面说的话我是猜的...
    1/无法正常启动是run的时候么?docker logs ID,应该可以看到/usr/sbin/mysqld_safe启动日志的。
    2/留点时间给上面的语句执行么?不确定
    final0pro
        14
    final0pro  
    OP
       Jul 30, 2014
    @imlonghao

    1. 我的理解是apt-get install mysql的时候,会启动mysql服务
    但是在apt-get install的时候报错了-> denied start & stop

    是因为container的原因嘛?!。。。
    imlonghao
        15
    imlonghao  
       Jul 30, 2014 via iPhone
    原生ubuntu:14.04貌似直接apt安装mysql-server会出现问题
    你先看mysql.org 里面有个deb 先安装这个deb 再apt安装就好了
    final0pro
        16
    final0pro  
    OP
       Jul 30, 2014
    @imlonghao 我已经试过了lol,直接在14.04里面运行那个sh一点问题都没有。。。没有报错,也不需要使用sleep 5。 不过我去看看那个deb。
    About     Help     Advertise     Blog     API     FAQ     Solana     2482 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 07:21 PVG 15:21 LAX 00:21 JFK 03:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86