wrote steps to install docker in readme and wrote a dockerfile for nginx not tested

This commit is contained in:
hugo gogo
2022-08-29 16:08:56 +02:00
parent a602a5d772
commit f86988a54a
8 changed files with 183 additions and 55 deletions

View File

@@ -9,6 +9,13 @@ This README would normally document whatever steps are necessary to get your app
- ? what means mounted in "a file or directory on the host machine is mounted into a container" ?
- ? why the volumes cannot be modify outside docker ?
---
## nginx basics
- `sudo netstat -tulpn` to print network connections and see if nginx is running
- or : `ps -ax | grep nginx`
- `sudo nginx -s quit` to stop it
---
## Dockerfile basics
@@ -16,62 +23,9 @@ This README would normally document whatever steps are necessary to get your app
- we need to copy the files it uses inside this filesystem
- we can do that with COPY
**working**
```
FROM scratch
WORKDIR /
COPY hello /
CMD [ "/hello" ]
```
**working, when WORKDIR is absent, it's default is set to "/"**
```
FROM scratch
COPY hello /
CMD [ "/hello" ]
```
**not working, when CMD execute in shell form, instead of exec form []**
```
FROM scratch
COPY hello /
CMD /hello
```
**not working, because c executable need library <unistd.h>**
```
FROM scratch
COPY hello_c /
CMD [ "/hello_c" ]
```
**not working, when executable is copied to ".", because WORKDIR value is not "." but "/" since we gave it a relativ path so it was build in top of the implicit absolut path "/"**
```
FROM scratch
WORKDIR .
COPY hello .
CMD [ "hello" ]
```
**not working, when WORKDIR is set to the present directory and executable is not copied, because the workdir is not the present directory but a directory in the file system of docker : executable need to be copied there to function**
```
FROM scratch
WORKDIR /home/simplonco/Desktop/42/14_inception/inception/srcs/requirements/mariadb
CMD [ "hello" ]
```
**working, because "hello" is copied to "/" and execute from "/"**
```
FROM scratch
WORKDIR .
COPY hello /
CMD [ "/hello" ]
```
---
## ressources
- [how to install docker engine](https://docs.docker.com/engine/install/ubuntu/)
- [download alpine linux](https://alpinelinux.org/downloads/)
- [dockerhub alpine image](https://hub.docker.com/_/alpine)
- [docker glossaire](https://docs.docker.com/glossary/)
@@ -79,13 +33,42 @@ CMD [ "/hello" ]
- [determine the parent image](https://forums.docker.com/t/determine-the-parent-image/48611)
- [docker image from scratch](https://codeburst.io/docker-from-scratch-2a84552470c8)
- [build context and image context](https://stackoverflow.com/questions/55108649/what-is-app-working-directory-for-a-dockerfile/55109065#55109065)
- [pid1 docker problem](https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/)
#### docker compose
#### install and use docker and compose
- [how to install docker engine](https://docs.docker.com/engine/install/ubuntu/)
- [github releases](https://github.com/docker/compose/releases)
- [install last version of compose manually](https://docs.docker.com/compose/install/compose-plugin/#install-the-plugin-manually)
- [install manually SO discussion](https://stackoverflow.com/questions/57456212/error-version-in-docker-compose-yml-is-unsupported)
- the version installed with is 1.17.1, way out of date
- the version installed with apt is 1.17.1, way out of date
**remove old versions**
- `sudo apt remove docker docker-engine docker.io containerd runc`
**preparing directory**
- `sudo apt update`
- `sudo apt install ca-certificates curl gnupg lsb-release`
- `sudo mkdir -p /etc/apt/keyrings`
- `curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg`
- `echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null`
**installing docker engine**
- `sudo apt update`
- `sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin`
**check if installation worked**
- `sudo docker run hello-world`
**installing docker compose** checked version on github release, see above
- `sudo curl -L "https://github.com/docker/compose/releases/download/2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose`
- `sudo chmod +x /usr/local/bin/docker-compose`
- `sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose`
**build and run a docker image**
- be in directory with a Dockerfile
- `sudo docker build --tag <name> .`
- `sudo docker images` to list images
- `sudo docker run <name>`
- `sudo docker image rm -f <number-id>`
**execute a docker-compose file**
- be in directory with a docker-compose.yml file
- `sudo docker-compose up`
#### volumes vs bind mounts