如何在具有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)
但是似乎我无法连接。我做错了什么?
答案 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