====== Docker: Image Development ====== **General Information** Developing docker images. **Checklist** * [[linux_wiki:docker|Docker installed]] * A [[https://docs.docker.com/get-started/part2/#define-a-container-with-dockerfile|Dockerfile]] to build * [[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/|Best practices for Dockerfiles]] * Account on [[https://hub.docker.com/|docker hub]] or [[https://docs.docker.com/registry/deploying/|private registry]] setup ---- ====== Building/Testing Images ====== \\ Build a docker image from a Dockerfile (mytag is usually a version number) docker build -t myimagename:mytag --file=Dockerfile . \\ Run a container with an interactive terminal, remove it when stopped, attach a bash shell docker run -it --rm --name mycontainername myimagename /bin/bash ---- ====== Push Images To Docker Registry ====== Login to registry * Docker Hubdocker login -u dockerhubuser * Private Registrydocker login -u myuserhere https://registryhostname.my.domain.com \\ Tag a local image:tag with the destination image:tag (usually tag is a version number) * Docker Hubdocker tag myimage:mytag dockerhubuser/myimage:mytag * Private Registrydocker tag myimage:mytag registryhostname.my.domain.com/myimage:mytag \\ Push the image:tag to the remote registry * Docker Hubdocker push dockerhubuser/myimage:mytag * Private Registrydocker push registryhostname.my.domain.com/myimage:mytag \\ Additional tag with latest (so the most recent version number is also a latest tag) * Docker Hubdocker tag myimage:mytag dockerhubuser/myimage:latest * Private Registrydocker tag myimage:mytag registryhostname.my.domain.com/myimage:latest \\ Additional push for latest * Docker Hubdocker push dockerhubuser/myimage:latest * Private Registrydocker push registryhostname.my.domain.com/myimage:latest ---- ====== Run Container From Registry ====== Login to registry * Docker Hubdocker login -u dockerhubuser * **Note**: Login only required if docker hub registry is private (they are public by default). * Private Registrydocker login -u myuserhere https://registryhostname.my.domain.com \\ Run container interactively with a bash shell (latest tag is default) * Docker Hubdocker run -it --name mycontainername dockerhubuser/myimage /bin/bash * Private Registrydocker run -it --name mycontainername registryhostname.my.domain.com/myimage /bin/bash ----