codelab@ime.usp.br
Grupo de extensão universitária que como objetivo estimular a inovação tecnológica na USP
João Daniel
A um passo do Willy Wonka dos Contêineres
software
ambiente
&
<sudo> gpasswd -a $(id -un) docker
docker container run -it node
Simplesmente adiciona <your-user> ao grupo docker, que tem permissão de acesso ao serviço docker
Agora você está rodando um shell Node dentro de um contêiner
docker container ls
Lista vazia... O que houve com o nosso contêiner de Node?
docker container ls -a
Agora o vemos!
docker container start -i <container-identification>
Vamos rodar o nosso contêiner antigo novamente! Mas.. que nome é esse?
docker container rm <container-identification>
Tchauzinho, contêiner!
docker container run -it --name mynode node
Que agradável nomear nossas coisas...
docker container rm mynode
Tchauzinho, mynode
botão PLAY
const koa = require('koa'),
app = new koa(),
port = process.env.PORT || 8888;
app.use(async ctx => {
ctx.body = "Hello, world!";
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Esse é o nosso app simples
FROM node:9.11.2-alpine
ENV APP_PATH=/usr/src/myapp \
PORT=8888
WORKDIR $APP_PATH
RUN yarn add koa
COPY app.js ./
EXPOSE $PORT
CMD node app.js
nosso estaleiro
dependências de sistema
empacota nosso app
porta para entrar e sair mensagens
mkdir -p e cd
comando padrão
definindo variáveis de ambiente
$ docker image build . -t my_app_image
Sending build context to Docker daemon 3.072kB
Step 1/7 : FROM node:9.11.2-alpine
---> a56170f59699
Step 2/7 : ENV APP_PATH=/usr/src/myapp PORT=8888
---> Running in 28d44e107a43
Removing intermediate container 28d44e107a43
---> 69242f8b73d4
Step 3/7 : WORKDIR $APP_PATH
Removing intermediate container eec9a41c94de
---> 7d5cd257a894
Step 4/7 : RUN yarn add koa
---> Running in e89c6232943b
yarn add v1.5.1
Done in 2.82s.
Removing intermediate container e89c6232943b
---> 58250e3262f5
Step 5/7 : COPY app.js ./
---> 5e58144a70b7
Step 6/7 : EXPOSE $PORT
---> Running in f67421f15a05
Removing intermediate container f67421f15a05
---> a15d8c641778
Step 7/7 : CMD node app.js
---> Running in 066e5b7d828b
Removing intermediate container 066e5b7d828b
---> d6b38100fdd5
Successfully built d6b38100fdd5
Successfully tagged my_app_image:latest
camadas
instabilidade
docker container run \
--name my_app \
--publish 9999:8888 \
--detach my_app_image
$ docker container logs my_app
Server running on port 8888
Inspeciona logs do contêiner rodando em segundo plano
docker container stop my_app
Para o contêiner (explicitamente, já que está em --detach)
descartável
persistente
PORÉM
contêiner
sistema
/
bin
usr
var
...
foo
/
bin
usr
var
...
bar
contêiner fs
hospedeiro fs
contêiner morre
descartável
docker container run \
--name my_app \
--publish 9999:8888 \
--volume $(pwd):/myapp \
--detach my_app_image
/
bin
usr
var
...
foo
/
bin
usr
var
...
bar
contêiner fs
hospedeiro fs
contêiner morre
persistente
João Daniel
A um passo do Willy Wonka dos Contêineres
By codelab@ime.usp.br
Grupo de extensão universitária que como objetivo estimular a inovação tecnológica na USP