Where is the default page 'welcome-to-docker' stored?

When installing Docker I get this default page:


I am trying to delete the html page, e.g. index.html, and all the the files relates to this page: css, js.

I’ve looked up in the following directories but found no html, css files:


C:\Program Files\Docker\Docker


I recommend learning about the concept of containers.

You probably followed this tutorial:

Which fails to mention that it describes Docker Desktop and not Docker Engine it is not just isolating a process in a container so the process has no knowledge about the host OS, but the host OS can’t see anything without entering the container as everything runs in a virtual machine.

The HTML is in the container and you will not be able to edit it from the host and you don’t have to. That is just a demo container and you can delete it any time.


docker stop welcome-to-docker
docker rm welcome-to-docker
1 Like

Trying to understand better Docker, & for the fun of it, how can I modify the ‘welcome-to-docker’ default page from my IDE, VS Code?

Also, when I run ’ docker init ’ I am presented with several setup options, like to setup Apache + PHP. Do you know why there isn’t an option to setup NGINX + PHP?

Docker containers are not for editing files in them from an IDE manually. You would need a Dockerfile which I write about in my tutorial too. Without understanding what a container, you will do things that you shouldn’t. If that helps, you can still browse the container’s filesystem from Docker Desktop. Go to the Containers tab and click on the three dots in the line of the containr and choose “View files”

You could also edit the files from there

I wouldn’t edit the files that way, because once I tried to change a config file for debugging reason (not in production) and it changed the file permissions, so the application couldn’t read it.

You can use vscode’s remote development feature and connect to a container. HEre is the index html in the welcome-to-docker container:


my screenshots showed the httpd container.

PHP is traditionally used with Apache HTTPD as HTTPD also supports PHP as a module. You can configure nginx with a PHP container if you want to but I guess the init command creates examples for more frequently used solutions. At least for now.

1 Like

I’ve successfully installed & setup nginx envinroment but when I open localhost in the browser I get an error.

The host port numbers are different yet I get an error: ERR_EMPTY_RESPONSE.

See screenshot:

My setup files:

docker-compose.yaml: docker-compose.yaml - Pastebin.com

nginx.conf: nginx.conf - Pastebin.com


Try it without changing the nginx config. If you change it, that is an nginx issue not a Docker issue.

Also please, use </> button to share codes, terminal outputs, error messages instead of sharing screenshots. That helps others to search for similar issues and us to read it more easily and quote parts of the message so we can help you more quickly. You can find a complete guide in the following post: https://forums.docker.com/t/how-to-format-your-forum-posts/127295https://forums.docker.com/t/where-is-the-default-page-welcome-to-docker-stored/138934/5

By the way if you share codes directly instead of linking, you won’t have a problem with the limit of the number of links for new users.

I did as advised, run a default nginx image from the hub, the container builds

but I get the same error ‘ERR_EMPTY_RESPONSE’

this is log:

2023-12-27 15:35:56 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-12-27 15:35:56 /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-12-27 15:35:56 /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-12-27 15:35:56 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2023-12-27 15:35:56 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
2023-12-27 15:35:56 /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
2023-12-27 15:35:56 /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-12-27 15:35:56 /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-12-27 15:35:56 /docker-entrypoint.sh: Configuration complete; ready for start up
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: using the "epoll" event method
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: nginx/1.25.3
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: OS: Linux
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: start worker processes
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: start worker process 29
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: start worker process 30
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: start worker process 31
2023-12-27 15:35:56 2023/12/27 14:35:56 [notice] 1#1: start worker process 32

Nginx is listening on port 80. The port numbe ron the right side must be 80. I shared my tutorial for a reason, since you could have learn it from that


That example uses httpd, not nginx, but the point is that you always need a container port and the host port. If those were the same, you wouldn’t need to set it twice.

The reason for getting ERR_EMPTY_RESPONSE was because I was missing the config file in the /etc/nginx/conf.d

Logs pointed to this:

2023-12-28 21:29:44 http://10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf is not a file or does not exist

I had to rename my file from “nginx.conf” to “default.conf” by connecting to the container via SSH. That worked.

Then built container for the second time with “default.conf” & that also worked