访问源容器从接收容器
问题描述:
我有一个MySQL容器中创建使用搬运工文件访问源容器从接收容器
from ubuntu:14.04
run apt-get update && apt-get install -y apt-transport-https
run apt-get install mysql-server -y
run apt-get install mysql-client -y
RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:webupd8team/java -y
RUN apt-get update
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
RUN apt-get install oracle-java7-installer -y && \ oracle-java7-set-default
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
env set MYSQL_ROOT_PASSWORD=root
EXPOSE 3306
和java的容器从Java:8的图像。 java容器使用--link选项链接到mysql容器。
docker run -it --link mysqlc:csql java:8
现在我需要从java容器执行mysql命令,但mysql命令不能在java容器中工作。问题是什么?
我需要启动mysql,从java容器创建数据库?这个怎么做? 我是否需要使用java以外的其他图像来访问mysql容器?
答
的一种方法是建立自己的Java形象,只要包含MySQL的客户端如Java:
Dockerfile:
FROM Java:8
RUN apt-get update && apt-get install mysql-client
体形:
docker build . -t my-java-mysql
运行:
docker run -it --link mysqlc:csql my-java-mysql:8
然后,您的Java容器中有可用的mysql
客户端命令。
您应该对RUN命令进行分组,以避免多层,与apt-get update具有更好的一致性,因此请参阅https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-做法/和我没有看到你的Dockerfile中的任何'CMD'或'ENTRYPOINT',所以我很惊讶 – user2915097