我似乎无法找到一种方法让端口发布以docker-compose run尽可能相同的方式工作docker run.
使用Docker Compose(以及端口映射docker-compose.yml)会产生"连接失败"错误curl:
$ docker-compose run flask
* Running on http://0.0.0.0:2048/ (Press CTRL+C to quit)
$ curl http://localhost:2048/
curl: (7) Failed connect to localhost:2048; Connection refused
Run Code Online (Sandbox Code Playgroud)
但是,手动将端口传递到时,一切正常docker run:
$ docker run -p 2048:2048 --name flask -t flask_image
* Running on http://0.0.0.0:2048/ (Press CTRL+C to quit)
$ curl http://localhost:2048
Hello World!
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Dockerfile
FROM centos:7
# Install EPEL repo.
RUN rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# Install Python and Pip.
RUN …Run Code Online (Sandbox Code Playgroud) 为什么使用进行呼叫时需要指定主机docker-compose run?
例如
docker-compose run db_container mysql -uuser -ppass db_name -h db_container
似乎直接等同于
docker-compose exec db_container mysql -uuser -ppass db_name
当从第一个示例中省略主机名标志时,mysql失败,并显示“无法连接到套接字”错误。
这两个例子有什么区别?