How to detect a docker daemon port

前端 未结 5 364
广开言路
广开言路 2021-01-30 01:48

I have installed Ubuntu and Docker. I am trying to launch Raik container:

$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=lev         


        
相关标签:
5条回答
  • 2021-01-30 02:00

    Try add -H tcp://0.0.0.0:2375(at end of Execstart line) instead of -H 0.0.0.0:2375.

    0 讨论(0)
  • 2021-01-30 02:03

    By default, the docker daemon will use the unix socket unix:///var/run/docker.sock (you can check this is the case for you by doing a sudo netstat -tunlp and note that there is no docker daemon process listening on any ports). It's recommended to keep this setting for security reasons but it sounds like Riak requires the daemon to be running on a TCP socket.

    To start the docker daemon with a TCP socket that anybody can connect to, use the -H option:

    sudo docker -H 0.0.0.0:2375 -d &
    

    Warning: This means machines that can talk to the daemon through that TCP socket can get root access to your host machine.

    Related docs:

    http://basho.com/posts/technical/running-riak-in-docker/

    https://docs.docker.com/install/linux/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections

    0 讨论(0)
  • 2021-01-30 02:15

    Reference docs of docker: https://docs.docker.com/install/linux/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections

    There are 2 ways in configuring the docker daemon port

    1) Configuring at /etc/default/docker file:

    DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
    

    2) Configuring at /etc/docker/daemon.json:

    {
    "debug": true,
    "hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"]
    }
    

    If the docker default socket is not configured Docker will wait for infinite period.i.e

    Waiting for /var/run/docker.sock
    Waiting for /var/run/docker.sock
    Waiting for /var/run/docker.sock
    Waiting for /var/run/docker.sock
    Waiting for /var/run/docker.sock
    

    NOTE : BUT DON'T CONFIGURE IN BOTH THE CONFIGURATION FILES, the following error may occur :

    Waiting for /var/run/docker.sock
    unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [tcp://127.0.0.1:5000 unix:///var/run/docker.sock], from file: tcp://127.0.0.1:5000)
    

    The reason for adding both the user port[ tcp://127.0.0.1:5000] and default docker socket[unix:///var/run/docker.sock] is that the user port enables the access to the docker APIs whereas the default socket enables the CLI. In case the default port[unix:///var/run/docker.sock] is not mentioned in /etc/default/docker file the following error may occur:

    # docker ps
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    

    This error is not because that the docker is not running, but because of default docker socket is not enabled.

    Once the configuration is enabled restart the docker service and verify the docker port is enabled or not:

    # netstat -tunlp | grep -i 5000
    tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      31661/dockerd 
    

    Applicable for Docker Version 17.04, may vary with different versions of docker.

    0 讨论(0)
  • 2021-01-30 02:16
    1. Prepare extra configuration file. Create a file named /etc/systemd/system/docker.service.d/docker.conf. Inside the file docker.conf, paste below content:
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    

    Note that if there is no directory like docker.service.d or a file named docker.conf then you should create it.

    1. Restart Docker. After saving this file, reload the configuration by systemctl daemon-reload and restart Docker by systemctl restart docker.service.

    2. Check your Docker daemon. After restarting docker service, you can see the port in the output of systemctl status docker.service like /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock.

    Hope this may help

    Thank you!

    0 讨论(0)
  • 2021-01-30 02:17

    Since I also had the same problem of "How to detect a docker daemon port" however I had on OSX and after little digging in I found the answer. I thought to share the answer here for people coming from osx.

    If you visit known-issues from docker for mac and github issue, you will find that by default the docker daemon only listens on unix socket /var/run/docker.sock and not on tcp. The default port for docker is 2375 (unencrypted) and 2376(encrypted) communication over tcp(although you can choose any other port).

    On OSX its not straight forward to run the daemon on tcp port. To do this one way is to use socat container to redirect the Docker API exposed on the unix domain socket to the host port on OSX.

    docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
    

    and then

    export DOCKER_HOST=tcp://localhost:2375
    

    However for local client on mac os you don't need to export DOCKER_HOST variable to test the api.

    0 讨论(0)
提交回复
热议问题