https://www.katacoda.com/courses/docker/
- Deploying Your First Docker Container
- Deploy Static HTML Website as Container
- Building Container Images
- Dockerizing Node.js applications
- Optimising Dockerfile with OnBuild
- Ignoring Files
- Data Containers
Table of contents generated with markdown-toc
docker search redis
docker run -d redis
docker ps
docker inspect agitated_mendeleev
docker logs agitated_mendeleev
docker run -d --name redisHostPort -p 6379:6379 redis:latest
docker run -d --name redisDynamic -p 6379 redis:latest
docker port redisDynamic 6379
docker ps
docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis
docker run -d --name redisMappedPwd -v "$PWD/data":/data redis
docker run ubuntu ps
docker run -it ubuntu bash
FROM nginx:alpine
COPY . /usr/share/nginx/html
docker build -t webserver-image:v1 .
docker images
docker run -d -p 80:80 webserver-image:v1
curl docker
FROM nginx:1.11-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t my-nginx-image:latest .
docker images
docker run -d -p 80:80 my-nginx-image:latest
curl -i http://docker
docker ps
FROM node:10-alpine
RUN mkdir -p /src/app
WORKDIR /src/app
COPY package.json /src/app/package.json
RUN npm install
COPY . /src/app
EXPOSE 3000
CMD ["npm", "start"]
docker build -t my-nodejs-app .
docker run -d --name my-running-app -p 3000:3000 my-nodejs-app
curl http://docker:3000
docker run -d --name my-production-running-app -e NODE_ENV=production -p 3000:3000 my-nodejs-app
FROM node:7
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD COPY package.json /usr/src/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/src/app
CMD [ "npm", "start" ]
FROM node:7-onbuild
EXPOSE 3000
docker build -t my-nodejs-app .
docker run -d --name my-running-app -p 3000:3000 my-nodejs-app
curl http://docker:3000
cat Dockerfile
docker build -t password .
docker run password ls /app
echo passwords.txt >> .dockerignore
docker build -t nopassword .
docker run nopassword ls /app
docker build -t large-file-context .
echo big-temp-file.img >> .dockerignore
docker build -t no-large-file-context .
docker create -v /config --name dataContainer busybox
docker cp config.conf dataContainer:/config/
docker run --volumes-from dataContainer ubuntu ls /config
docker export dataContainer > dataContainer.tar
ls
docker import dataContainer.tar
docker run -d --name redis-server redis
docker run --link redis-server:redis alpine env
docker run --link redis-server:redis alpine cat /etc/hosts
docker run --link redis-server:redis alpine ping -c 1 redis
docker run -d -p 3000:3000 --link redis-server:redis katacoda/redis-node-docker-example
curl docker:3000
docker run -it --link redis-server:redis redis redis-cli -h redis
KEYS *
QUIT
docker network create backend-network
docker run -d --name=redis --net=backend-network redis
docker run --net=backend-network alpine env
docker run --net=backend-network alpine cat /etc/hosts
docker run --net=backend-network alpine cat /etc/resolv.conf
docker run --net=backend-network alpine ping -c1 redis
docker network create frontend-network
docker network connect frontend-network redis
docker run -d -p 3000:3000 --net=frontend-network katacoda/redis-node-docker-example
curl docker:3000
docker network create frontend-network2
docker network connect --alias db frontend-network2 redis
docker run --net=frontend-network2 alpine ping -c1 db
docker network ls
docker network inspect frontend-network
docker network disconnect frontend-network redis
docker run -v /docker/redis-data:/data --name r1 -d redis redis-server --appendonly yes
cat data | docker exec -i r1 redis-cli --pipe
ls /docker/redis-data
docker run -v /docker/redis-data:/backup ubuntu ls /backup
docker run --volumes-from r1 -it ubuntu ls /data
[root@host01 ~]# docker run -v /docker/redis-data:/data:ro -it ubuntu rm -rf /data
rm: cannot remove '/data/appendonly.aof': Read-only file system