Dopo aver completato l'installazione di Docker dovresti avere una nuova finestra che ti guiderà attraverso i primi passaggi della creazione di immagini e contenitori con Docker:
Questo è un modo interessante per aggiornarti sul download della tua prima immagine ed eseguirla come contenitore.
Puoi eseguire i comandi nel terminale a destra integrato in questa app, ma preferisco eseguirlo nella mia shell.
Apro il terminale macOS, eseguo cd dev
per entrare nella mia casa dev
cartella e creo una docker
sottodirectory, dove ospiterò tutti gli esperimenti Docker. Eseguo cd docker
per entrarci, poi corro
git clone https://github.com/docker/getting-started
Questo comando ha creato un nuovo getting-started
cartella con il contenuto del repository https://github.com/docker/getting-started :
Ora da questa cartella, esegui il comando docker build
in questo modo:
docker build -t docker101tutorial .
Questo costruirà l'immagine dal contenuto della cartella corrente in cui ti trovi, con il nome del tag docker101tutorial
.
Questo è il Dockerfile
*# Install the base requirements for the app.*
*# This stage is to support development.*
FROM python:alpine AS base
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
*# Run tests to validate app*
FROM node:12-alpine AS app-base
WORKDIR /app
COPY app/package.json app/yarn.lock ./
RUN yarn install
COPY app/spec ./spec
COPY app/src ./src
RUN yarn test
*# Clear out the node_modules and create the zip*
FROM app-base AS app-zip-creator
RUN rm -rf node_modules && \
apk add zip && \
zip -r /app.zip /app
*# Dev-ready container - actual files will be mounted in*
FROM base AS dev
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
*# Do the actual build of the mkdocs site*
FROM base AS build
COPY . .
RUN mkdocs build
*# Extract the static content from the build*
*# and use a nginx image to serve the content*
FROM nginx:alpine
COPY --from=app-zip-creator /app.zip /usr/share/nginx/html/assets/app.zip
COPY --from=build /app/site /usr/share/nginx/html
Come puoi vedere, crea la nostra immagine non solo da una, ma da 3 immagini di base:python:alpine
, node:12-alpine
e nginx:alpine
.
Quando esegui docker build -t docker101tutorial .
, inizierà scaricando la prima immagine di base:
Quindi eseguirà tutti i comandi che abbiamo definito nel Dockerfile.
Continua fino alla fine:
Ora abbiamo l'immagine docker101tutorial
e possiamo eseguire un container basato su questa immagine.
Esegui il comando docker run
con quegli attributi:
docker run -d -p 80:80 --name docker-tutorial docker101tutorial
Stiamo usando l'opzione -d
per eseguire il contenitore in background e stampare l'ID contenitore. Se manchi questo flag, non tornerai immediatamente alla shell fino all'uscita del contenitore (ma se è di lunga durata, ad esempio esegue un servizio come un'app Node o qualcosa del genere, non uscirà automaticamente).
Il -p
l'opzione viene utilizzata per mappare la porta 80 del contenitore alla porta 80 della macchina host. Il contenitore espone un server Web sulla porta 80 e possiamo mappare le porte del nostro computer alle porte esposte dal contenitore.
--name
assegna un nome al contenitore e infine abbiamo il nome dell'immagine (docker101tutorial
) dovremmo usare per creare il contenitore.
In caso di dubbi su un'opzione di comando, eseguire docker <command> --help
, in questo caso docker run --help
e riceverai una spiegazione molto dettagliata:
Questo comando è molto veloce e riavrai l'ID del contenitore: