Occasionally when working with a pre-built Docker Container image, it will become necessary for you to add an entry to the
/etc/hosts file within the Docker container. Docker provides an easy way to add a host entry to a docker container. An example of when would become necessary is if you are installing WordPress as a Docker container and then receiving the WordPress loopback error when you login to the admin screen.
Can’t I just use a text editor to manually edit the host file?
You can use the text editor to edit the
/etc/hosts file within the container, however, once you rebuild the container, the
/etc/hosts file will return to it’s previous state, eliminating your entry. This is because the
hosts file is not stored in a persistent volume. Thus, manually editing the file can only be used as a temporary solution.
How to insert an entry into the hosts file with a docker run command
Docker has a built in solution that will allow you to have your docker host automatically insert lines into the
hosts file of a docker container when the image is initially starting up. All you need to do is include the following flag within your
docker run command. This will allow you to add a host entry to a docker container.
All you have to do is replace
yourdomain.com with the host name or domain that you’d like to use and then replace
127.0.0.1 with the IP address that the host name needs to resolve to.
An example of using the
--add-host flag within a docker run command is below:
docker run -d \ --name wordpress \ -p 8080:80 \ --add-host yourdomain.com:127.0.0.1 \ wordpress
The above command will run the
wordpress container in detached mode, expose it on port
8080 and add a line in the
/etc/hosts file that will resolve
Before and After Examples of the Hosts File
Prior to inserting the
--add-host command into your
docker run command, the hosts file on the container will be populated with the entries that were entered in the original image, if any. The below output was generated by using the
cat /etc/hosts command within a freshly ran Alpine Linux container.
::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 84e1cd04f888
The output below shows a freshly ran Alpine Linux container’s
/etc/hosts file after inserting
--add-host yourdomain.com:127.0.0.1 within the
docker run command.
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.0.1 yourdomain.com 172.17.0.2 0ed7f031b7e5
As you can see, the Docker host inserted a new line in the hosts file on line 7 of the containers
How to insert an entry into the hosts file via Docker Compose
If you use Docker Compose to run your Docker containers, then you will need to add
extra_hosts: to your Docker compose file.
extra_hosts: - "yourdomain.com:127.0.0.1"
Just like using the
--add-host flag within your
docker run command, changing
yourdomain.com to your host name and
127.0.0.1 to the IP address that you would like it to resolve to will automatically add a line within your containers
/etc/hosts file with that information.
An example of the above section within a
docker-compose.yml file is below:
version: '2.1' services: wordpress: image: "wordpress" container_name: wordpress ports: - 8080:80 extra_hosts: - "yourdomain.com:127.0.0.1"
docker-compose.yml service will run a basic
wordpress container, expose it on port
8080, and add a line in the
etc/hosts file that will resolve
yourdomain.com to the IP address of
--add-host command to at a host entry to a docker container is the simplest way to ensure that your docker containers continue to work smoothly with your docker host setup and the rest of your docker services.
extra_hosts: portion to a
docker_compose.yml file will ensure that your hosts are always added to your containers after you run the
docker-compose up command. This will ensure your settings persist seamlessly across docker container image updates and other environment changes.
If you have any questions or comments, please leave them in the comments section below.
The article, Add a Host Entry to a Docker Container in 1 Simple Step, first appeared on Codeopolis.