docker version
docker run hello-world
docker ps
docker ps -a
docker images
docker network ls
docker network create mongo-network
docker run -p 27017:27017 -d mongo
docker logs <container>
docker exec -it <container> /bin/sh
docker rm <container>
docker rmi <image>
docker network create mongo-network
docker run -d --network mongo-network \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
--name mongo-db
mongo
MONGO_INITDB_ROOT_USERNAME e MONGO_INITDB_ROOT_PASSWORD sono l'utente e la password di amministrazione
docker run -d \
--network mongo-network \
-p 8080:8081 \
-e ME_CONFIG_MONGODB_ADMINUSERNAME="admin" \
-e ME_CONFIG_MONGODB_ADMINPASSWORD="password" \
-e ME_CONFIG_MONGODB_SERVER="mongo-db" \
--name mongo-express \
mongo-express
ME_CONFIG_MONGODB_ADMINUSERNAME e ME_CONFIG_MONGODB_ADMINPASSWORD devono essere rispettivamente MONGO_INITDB_ROOT_USERNAME e MONGO_INITDB_ROOT_PASSWORD definite prima
ME_CONFIG_MONGODB_SERVER corrisponde al nome del container specificato all'avvio di MongoDB
mongo-docker-composer.yaml:
version: '3'
services:
mongodb:
image: mongo
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password
mongo-express:
image: mongo-express
ports:
- 8080:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=password
- ME_CONFIG_MONGODB_SERVER=mongodb
Per avviare:
docker-compose -f mongo-docker-composer.yaml up -d
Per fermare:
docker-compose -f mongo-docker-composer.yaml down
FROM node:13-alpine
ENV MONGO_DB_USERNAME=admin \
MONGO_DB_PASSWORD=password
RUN mkdir -p /home/app
COPY . /home/app
CMD ["node", "/home/app/server.js"]
Il file si DEVE chiamare Dockerfile
FROM specifica l'immagine di partenza dal DockerHub
ENV specifica eventuali variabili di ambiente
RUN server per specificare comandi da eseguire all'avvio del container (ce ne possono essere N)
COPY il comando è eseguito a livello di HOST, copia i file dal PC al container
CMD è comando eseguito all'avvio del container (entrypoint)
docker build -t my-app:1.0 .
my-app è il nome del container da creare, 1.0 è il TAG e . è il path dove si trova il Dockerfile
docker run -d --network mongo-network \
-p 27017:27017 \
-v /home/data:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
--name mongo-db
mongo
Dove /home/data è il filesystem fisico presente sulla macchina host, mentre /data/db è il filesystem del container
docker run -d --network mongo-network \
-p 27017:27017 \
-v /data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
--name mongo-db
mongo
Docker in automatico crea sulla macchina host l'alberatura /data/db necessaria, come richiesto nel container
docker run -d --network mongo-network \
-p 27017:27017 \
-v mongo-data:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
--name mongo-db
mongo
Docker in automatico crea e gestisce un volume sulla macchina host relativo all'alberatura /data/db 👍
mongo-docker-composer.yaml:
version: '3'
services:
mongodb:
image: mongo
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- mongo-data:/data/db
mongo-express:
image: mongo-express
ports:
- 8080:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=password
- ME_CONFIG_MONGODB_SERVER=mongodb
volumes:
mongo-data:
driver: local
docker volume ls
docker volume inspect docker-dev_mongo-data
Amazon ECR - Amazon Elastic Container Registry