pycharm can't complete remote interpreter setup for Docker

前端 未结 2 626
春和景丽
春和景丽 2021-02-02 18:28

I\'m new to Docker. I\'m using Docker & docker-compose, going through a flask tutorial. The base docker image is python 2.7 slim. It\'s running on Linux. docker 1.11.2 The

2条回答
  •  孤独总比滥情好
    2021-02-02 18:45

    I'm not using docker-machine The problem was that TCP access to the docker API is not established by default under ubuntu 16.04.

    There are suggestions to enable TCP/IP access.

    However, JetBrains gave me the simplest solution:

    If you are using Linux it is most likely that Docker installed with its default setup and Docker is expecting to be used through UNIX domain file socket /var/run/docker.sock. And you should specify unix:///var/run/docker.sock in the API URL field. Please comment whether it helps!

    This suggestion worked with my Ubuntu 16.04 -derived distribution.

    This goes into the Docker entry in PyCharm preferences under Build, Execution, Deployment.

    You can also edit this while setting up a remote interpreter, but only by making a new Docker entry.

    TCP/IP Method

    This method works if you want TCP/IP access, but this is a security risk. The socket approach is better, which is probably why it is the default.

    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
    

    Once I thought to search for ubuntu 16.04 I came across simpler solutions, but I did not test them.

    For instance:

    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
    

提交回复
热议问题