You usually donât need to do that; instead, you need to change the ports that Docker publishes. In this case the application provides its own Docker Compose setup, and you need to change the one âportsâ line in the YAML file to map the containerâs port 80 to some other port on the host.
(The broader answer is to edit the Dockerfile, change the port number on its EXPOSE line, and also do application-specific setup to cause it to listen on a different port. But since docker run -p can pick a port of your choice to make the service visible externally, this isnât usually necessary. My application setup has a handful of HTTP-based services that all EXPOSE 80 because thatâs the natural port for HTTP, and those get remapped to different port numbers at launch time.)
Right. If youâve already started the setup, you need to stop, remove, and restart the one container.
docker-compose pull only updates the images (the things referred to by the various image: lines) but not the docker-compose.yml itself. If you got the file from a git checkout, you could need to merge your local changes when you git pull. (But itâs just a file at this level.)
Usually you donât need to. Standard Docker practice is to put only one service in a container, so if you need to restart a single service, just restart that container.
Also remember that it is extremely routine to stop, delete, and restart containers, and when you do that, their local filesystem is gone.
With those two caveats, docker exec is a debugging tool that can get you a shell inside a running container. (Itâs not intended to be part of your core workflow.)