如何使用入口点在docker容器上运行bash?

时间:2018-08-09 08:50:05

标签: mysql docker

如何在具有ENTRYPOINT的容器上运行bash?

FROM ubuntu:18.04
ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update \
    && apt-get install -y curl gnupg
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash \
    && export NVM_DIR="$HOME/.nvm" \
    && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \
    && [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  \
    && nvm i 8.11 \
    && apt-get install -y mysql-server=5.7.23-0ubuntu0.18.04.1 python3 python3-pip  \
    && ln -s /usr/bin/python3 /usr/bin/python \
    && ln -s /usr/bin/pip3 /usr/bin/pip \
    && pip install awscli --upgrade --user \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ENTRYPOINT [ "/etc/init.d/mysql", "start" ] 

EXPOSE 3306

我尝试过:

 jiewmeng@JM  ~/Dropbox/ci-docker-node-mysql  docker run -it ci-docker-node-mysql bash
 * Starting MySQL database server mysqld                                        No directory, logging in with HOME=/
                                                                         [ OK ]
 jiewmeng@JM  ~/Dropbox/ci-docker-node-mysql  

但是一旦MySQL启动我就被踢了出去


我尝试运行docker容器...

jiewmeng@JM  ~/Dropbox/ci-docker-node-mysql  docker run -p 3307:3306 ci-docker-node-mysql
✘ jiewmeng@JM  ~/Dropbox/ci-docker-node-mysql  mysql -h 127.0.0.1:3307
ERROR 2005 (HY000): Unknown MySQL server host '127.0.0.1:3307' (2)

但是似乎我无法连接。我做错了什么?

2 个答案:

答案 0 :(得分:2)

命令mysql完成后,您的容器退出。容器一旦完成任务就不会持久化。

尝试在守护程序模式下运行MySQL,这会阻止它假定进程已完成:

ENTRYPOINT ["mysqld"]

编辑:我看了看官方的mysql Docker镜像,这就是他们在那里做的方式。

EDIT2:完成后,您可以运行exec来将外壳放入容器:

docker exec -ti container-name /bin/bash

答案 1 :(得分:1)

如果要使用bash启动容器:

docker run --rm -it --entrypoint "/bin/bash" ci-docker-node-mysql