Search code examples
linuxbashunixdocker

automatic docker login within a bash script


How can I preseed my credentials to docker login command within a script ?

I'm using a bash script that basically automates the whole process of setting up my custom VMs etc, but when I need to login to docker within the script to pull the images, I get the following error:

Username: FATA[0000] inappropriate ioctl for device


The command I was using is the following:

( echo "xxx"; echo "yyy"; echo "zzz" ) | docker login docker.somesite.org


Is this possible to achieve without using and coping over an existing .dockercfg file and how,
Many thanks.


Solution

  • Docker 18 and beyond

    There's now an officially-documented way to do this:

    cat ~/my_password.txt | docker login --username foo --password-stdin
    

    Docker 1.11 through Docker 17

    You can pass all the arguments on the command-line:

    docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
    

    If you don't specify DOCKER_HOST, you'll get the main Docker repo. If you leave out any of the arguments, you'll be prompted for that argument.

    Older than 1.11

    The same path as just above, except that you need to also pass an --email flag. The contents of this are not actually checked, so anything is fine:

    docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email [email protected]