我没有使用docker-machine。
问题在于Ubuntu 16.04默认情况下未建立对Docker API的TCP访问。
有建议启用TCP/IP访问的方法。
然而,JetBrains给了我最简单的解决方案:
如果您使用Linux,则很可能Docker是使用其默认设置安装的,并且Docker希望通过UNIX域文件套接字/var/run/docker.sock使用。您应该在API URL字段中指定unix:///var/run/docker.sock。请回复是否有帮助!
这个建议对我的基于Ubuntu 16.04的发行版有效。
这需要进入PyCharm首选项的Docker条目中的Build,Execution,Deployment。
您还可以在设置远程解释器时进行编辑,但只能通过创建新的Docker条目来完成。
TCP/IP 方法
如果您需要TCP/IP访问,则可以使用此方法,但这是一种安全风险。套接字方法更好,这可能是它成为默认方法的原因。
https://coreos.com/os/docs/latest/customizing-docker.html
Customizing docker
The Docker systemd unit can be customized by overriding the unit that
ships with the default CoreOS settings. Common use-cases for doing
this are covered below.
Enable the remote API on a new socket
Create a file called /etc/systemd/system/docker-tcp.socket to make
Docker available on a TCP socket on port 2375.
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service
[Install]
WantedBy=sockets.target
Then enable this new socket:
systemctl enable docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker
Test that it’s working:
docker -H tcp://127.0.0.1:2375 ps
曾经我想搜索Ubuntu 16.04,但是我发现了更简单的解决方案,不过我没有测试过。
例如:
https://www.ivankrizsan.se/2016/05/18/enabling-docker-remote-api-on-ubuntu-16-04/
Edit the file /lib/systemd/system/docker.service
Modify the line that starts with ExecStart to look like this:
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375
Where my addition is the “-H tcp://0.0.0.0:2375” part. Save the
modified file. Restart the Docker service:
sudo service docker restart
Test that the Docker API is indeed accessible:
curl http://localhost:2375/version