DEV Community

Cover image for TL;DR - Docker
Damian Cipolat
Damian Cipolat

Posted on

TL;DR - Docker

Learning-Docker

Usare este artículo para compartir comandos / notas / codigos / etc, que vengo usando para aprender docker.

Instalación:

Forma 1 de instalar docker:


  apt-key adv --keyserver \
  hkp://pgp.mit.edu:80 \
  --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

  nano /etc/apt/sources.list.d/docker.list
  #agregar: deb https://apt.dockerproject.org/repo debian-jessie main

  apt-get install apt-transports-https

  apt-get update
  apt-cache policy docker-engine
  apt-get install docker-engine

Forma 2 de instalar docker:

sudo apt-get remove docker-engine
curl -sSL https://get.docker.com/ | bash

Lista de comandos:

  • Agregar usuario para docker:
  groupadd docker
  usermod -aG docker damianlimux
  id damianlinux
  • Version de docker:
  docker --version
  • Imagenes descargadas:
  docker --images
  • Ver containers activos:
  docker ps
  • Ver containers y detalles:
  docker ps -a
  • Ejecutar un container:
  docker run <img> <cmd>
  • Ejecutar definiendo el nombre a un container:
  docker run -d -P --name web <img> <cmd>
  • Ejecutar un container pero sin que termine y acceso por terminal:
  docker run -t -i <img> <cmd>
  • Ejecuntar un container pero como daemon:
  docker run -d <img> <cmd>
  • Ejecutar un container bindeando puertos (bindea puertos de forma random):
  docker run -d -P <img> <cmd>
  • Ejecutar un container definiendo que puertos bindear (portHost:portContainer):
  docker run -d -p 5000:5000 <img> <cmd>
  • Ejecutar un container bindeando ip/puerto/protocolo del host:
  docker run -d -p 127.0.0.1:5000:5000/tcp 27.0.0.1:514:514/udp <img> <cmd>
  • Detener un container:
  docker stop <id>
  • Reinicar un container:
  docker restart <id container>
  • Ver log de ejecución de un container:
  docker logs <container_name>/id
  • Ver que puerto esta bindeado un container:
  docker port <id container>
  • Eliminar un container:
  docker rm <id container>/<container name>
  • Ver que procesos se ejecuta dentro de un container:
  docker top <id container>
  • Inspeccionar contenido de un container:
  docker inspect <id container>
  • Usefull command list:

#List running or stopped containers.
docker ps -a

#List the images downloaded.
docker images

#Download an image, example linux alpine.
docker pull alpine

#Remove an image.
docker rmi alpine

#Remove all images.
docker rmi $(docker images -q)

#Create a container.
docker run alpine

#Delete container.
docker rm <container_name/container_id>

#Remove all containers
docker rm $(docker ps -aq)

#Restart container.
docker container restart <container_name/container_id>

#Stop container
docker stop <container_id>

#Stop all containers
docker stop $(docker ps -aq)

#Run container define custom name.
docker run --name web

#Run container detached mode
docker run -d alpine

#Run container port mapping.
docker run -p 8080:3000 alpine
  • ¿How to include custom source code in container?, use a volume
#Run container and define volume mapping.
docker run -p 8080:3000 /var/www:/var/test node

#Run container and define volumen and start commnad and working directory
docker run -p 8080:9000 /var/test:/var/test -w "/var/test" --name api node npm start
  • ¿How to create a custom image?
#Create a docker file
touch dockerfile

#Add this content to the dockerfile
FROM node:latest

MAINTAINER damian.cipolat@gmail.com

ENV NODE_ENV=production
ENV PORT=3000

COPY    . /var/www
WORKDIR /var/www

VOLUME ["/var/www"]

RUN    npm install

EXPOSE 3000

ENTRYPOINT ["npm","start"]

#Buil the image, set the name 'damcipolat/node'
docker build -f dockerfile -t damcipolat/node .
  • Login into docker hub, is necessary to can publish images in docker hub.
docker login
username: damcipolat
password: sxxxxx
  • ¿How to publish images in docker hub?, is necesesary stay logged.
docker push damcipolat/node

Algunos links de mi repositorio en GITHUB:

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay