Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
docker:docker [2020/06/20 19:42] – [Commands] tmadedocker:docker [2024/01/05 12:10] – [docker-compose] tmade
Line 4: Line 4:
  
 Ubuntu: Ubuntu:
 +
 +Requirements:
 +
 +<code>
 +apt-get install \
 +    apt-transport-https \
 +    ca-certificates \
 +    curl \
 +    gnupg-agent \
 +    software-properties-common
 +</code>
 +
 +Then:
  
   curl -sSL https://get.docker.com | sh   curl -sSL https://get.docker.com | sh
 +  
 +Check also on:
 +
 +https://docs.docker.com/engine/install/ubuntu/
  
 SLES: SLES:
Line 41: Line 58:
  
 ==== Commands ==== ==== Commands ====
 +
 +===Node/ swarm===
 +
 +  docker node ls
 +  docker node ls -q | xargs docker node inspect   -f '{{ .Description.Hostname }}: {{ .Spec.Labels }}' | grep map |  sed 's/ /\n\t/g'                       #show labels
 +  docker service ls |grep container-name                                                                                                                    #check if container runs
 +  docker service ps container-id                                                                                                                            #check on which node container runs 
 +  
  
 === Container ===  === Container === 
Line 56: Line 81:
   docker commit my-container ubuntu:16.04                                             #Commit changes from container "my-container" to image "ubuntu:16.04"   docker commit my-container ubuntu:16.04                                             #Commit changes from container "my-container" to image "ubuntu:16.04"
   docker stats redis1 redis2                                                          #command to live stream a container’s runtime metrics (cpu, mem etc.)   docker stats redis1 redis2                                                          #command to live stream a container’s runtime metrics (cpu, mem etc.)
 +  docker cp containerID:/path/to/file/file_or_foldername .                            #to copy a file or an folder from within the container to the docker-host
 +  docker cp -a server.key cf755a260e93:/tmp
      
 **Forcefully delete all containers, so pay attention!!** **Forcefully delete all containers, so pay attention!!**
Line 68: Line 95:
   docker image ls --all   docker image ls --all
   docker pull mysql/mysql-server:latest                                               #Install image mysql   docker pull mysql/mysql-server:latest                                               #Install image mysql
 +  docker rmi image:tag                                                                #delete image-tag
 +  
 **Forcefully delete all images, so pay attention!!** **Forcefully delete all images, so pay attention!!**
 +
   docker rmi $(docker images -q) -f    docker rmi $(docker images -q) -f 
 +
 +Remove <none> images (untagged):
 +
 +  docker rmi $(docker images -f "dangling=true" -q)                                   
      
 === Save & Restore === === Save & Restore ===
  
   docker image save 915f54b28a31 -o ubuntu-16.04.tar   docker image save 915f54b28a31 -o ubuntu-16.04.tar
-  docker image import ubuntu-16.04.tar ubuntu-16.04+  docker load < ubuntu-16.04.tar ubuntu-16.04
   docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql                      docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql                   
  
 ===Build=== ===Build===
 +
   docker build -t "simple_flask:dockerfile" .                                         #Build an image from a Dockerfile   docker build -t "simple_flask:dockerfile" .                                         #Build an image from a Dockerfile
   docker build - < Dockerfile   docker build - < Dockerfile
Line 86: Line 121:
   docker build -t ubuntu16-squid:16.04 /software/                                   #Build image "ubuntu16-squid" from Dockerfile within "/software/"   docker build -t ubuntu16-squid:16.04 /software/                                   #Build image "ubuntu16-squid" from Dockerfile within "/software/"
   docker build --build-arg http_proxy=http://1.2.3.4:80 --build-arg https_proxy=http://1.2.3.4:80 -t ubuntu16-squid:16.04 .   docker build --build-arg http_proxy=http://1.2.3.4:80 --build-arg https_proxy=http://1.2.3.4:80 -t ubuntu16-squid:16.04 .
 +  docker build --no-cache -t tftp-alpine:latest .
 +  docker build -t php:5-apache $(pwd)/.
        
 ===Deploy Container=== ===Deploy Container===
  
-  docker run ubuntu:16.04                                                             #Download ans install ubuntu 16.04 +  docker run ubuntu:16.04                                                                                      #Download ans install ubuntu 16.04.
-  docker run --name=mysql-01 -d mysql/mysql-server:latest+
   docker run --name=mysql-01 -d mysql/mysql-server:latest   docker run --name=mysql-01 -d mysql/mysql-server:latest
   docker run --name=ubuntu16.04-squid-1 ubuntu:16.04   docker run --name=ubuntu16.04-squid-1 ubuntu:16.04
-  docker run -d -p 8080:8080 --name=ubuntu16.04-squid-2 -ti ubuntu:16.04              #Deploy and keep running container from image "ubuntu:16.04"+  docker run -d -p 8080:8080 --name=ubuntu16.04-squid-2 -ti ubuntu:16.04                                       #Deploy and keep running container from image "ubuntu:16.04" 
 +  docker run --rm -i --user="$(id -u):$(id -g)" --net=none -v "$PWD":/data blang/latex xelatex article.tex
   docker run --name=mysql01 -d mysql:dockerfile   docker run --name=mysql01 -d mysql:dockerfile
   docker run -d -p 3306:3306 -v /path/in/host:/var/lib/mysql dordoka/rpi-mysql   docker run -d -p 3306:3306 -v /path/in/host:/var/lib/mysql dordoka/rpi-mysql
Line 99: Line 136:
   docker run --name=test-kibana -d rutsky/kibana-logtrail-kubernetes:4.6.1-0.1.7-2   docker run --name=test-kibana -d rutsky/kibana-logtrail-kubernetes:4.6.1-0.1.7-2
   docker run -p 8080:80 -p 8443:443 68b57f0b6302 apache2-foreground   docker run -p 8080:80 -p 8443:443 68b57f0b6302 apache2-foreground
 +  docker run -dti -p 69:69/udp -v /data/tftp:/var/tftpboot tftp-alpine:latest
 +  docker run -it --entrypoint /bin/bash container-ID
 +  docker run --rm -tid -p 2080:80 -p 2443:443 haproxy-test:latest
  
 === Run === === Run ===
Line 108: Line 148:
   docker run -ti mysql:dockerfile   docker run -ti mysql:dockerfile
   docker run -d -p 3306:3306 mysql:dockerfile   docker run -d -p 3306:3306 mysql:dockerfile
- 
-    
  
 === Info === === Info ===
Line 116: Line 154:
   docker info   docker info
   docker logs mysql01   docker logs mysql01
 +  docker logs --follow jenkins
   journalctl -fu docker   journalctl -fu docker
   docker ps   docker ps
   docker ps --all   docker ps --all
   docker inspect f8f1140788d8   docker inspect f8f1140788d8
 +
 +===Logs===
 +
 +  docker inspect --format='{{.LogPath}}' $CONTNAME | xargs tail -f
      
 === Connect === === Connect ===
Line 129: Line 172:
   docker exec -it 4c1d592d40d9 mysql -uroot -p   docker exec -it 4c1d592d40d9 mysql -uroot -p
   docker exec -it 176bd91300c3 bash   docker exec -it 176bd91300c3 bash
 +  docker exec -it $(echo $(docker ps | grep -i esphome | awk '{print $1}')) bash
      
 === Volumes === === Volumes ===
  
 +  docker volume create --name DataVolume1
   docker volume create --label DataVolume1   docker volume create --label DataVolume1
   docker volume create -d netapp --name myFirstVolume -opt size=1G   docker volume create -d netapp --name myFirstVolume -opt size=1G
Line 168: Line 213:
  
   sudo usermod -a -G docker USERNAME   sudo usermod -a -G docker USERNAME
 +  usermod -aG docker tmade
  
 ====Dockerfile==== ====Dockerfile====
Line 178: Line 224:
  
 <code txt Dockerfile>  <code txt Dockerfile> 
-#Download base image ubuntu 16.04 +#Download base image ubuntu 
-FROM ubuntu:16.04 +FROM ubuntu:22.04 
-LABEL version="1.0+#FROM ubuntu:16.04 
-LABEL maintainer="Thomas Roehm"+#FROM ubuntu:18.04 
 +LABEL version="1.1
 +LABEL maintainer="info@tmade.de"
  
-ENV SQUID_VERSION="4.8+ENV SQUID_VERSION="6.4" 
-ENV SQUIDURL="http://www.squid-cache.org/Versions/v4/squid-${SQUID_VERSION}.tar.gz" +ENV MAIN_VERSION="6
-#ENV https_proxy "http://my-proxy:80" +ENV SQUIDURL="http://www.squid-cache.org/Versions/v${MAIN_VERSION}/squid-${SQUID_VERSION}.tar.gz" 
-#ENV http_proxy "http://my-proxy:80" + 
-#ENV no_proxy "localhost,127.0.0.1,myhost.local"+#http://www.squid-cache.org/Versions/v5/squid-5.1.tar.gz 
 +#http://www.squid-cache.org/Versions/v4/squid-4.10.tar.gz
  
 # locales to UTF-8 # locales to UTF-8
Line 193: Line 242:
 #ENV LC_ALL C.UTF-8 #ENV LC_ALL C.UTF-8
 #ENV SQUID_VERSION=3.5.12-1ubuntu7 #ENV SQUID_VERSION=3.5.12-1ubuntu7
-#SQUID_CACHE_DIR=/var/spool/squid 
-#SQUID_LOG_DIR=/var/log/squid 
-#SQUID_USER=proxy 
  
-RUN apt-get update +RUN apt-get update && \ 
-RUN apt-get -y upgrade +    apt-get -y upgrade && \ 
-#RUN apt-get -y dist-upgrade +    apt-get -y install bash-completion \ 
-#RUN DEBIAN_FRONTEND=noninteractive +        build-essential \ 
-RUN apt-get install -y build-essential +        libssl-dev \ 
-RUN apt-get install -y net-tools +    wget \ 
-RUN apt-get install -y wget +    curl \ 
-RUN apt-get install -y libssl-dev +    netcat \ 
-RUN apt-get install -y telnet +    vim \ 
-RUN apt-get install -y vim +    iputils-ping \ 
-RUN apt-get -qy autoremove +    net-tools && \ 
-#RUN rm -rf /var/lib/apt/lists/*+    apt-get -qy autoremove && \ 
 +    rm -rf /var/lib/apt/lists/*
  
-#WORKDIR /data/ 
 RUN wget ${SQUIDURL} RUN wget ${SQUIDURL}
 RUN tar -xzf squid-${SQUID_VERSION}.tar.gz RUN tar -xzf squid-${SQUID_VERSION}.tar.gz
-RUN cd /squid-${SQUID_VERSION} && ./configure --with-large-files --enable-follow-x-forwarded-for --sysconfdir=/etc/squid --localstatedir=/var/log/squid --enable-ssl --with-openssl --with-filedescriptors=16384 --enable-storeio=diskd,ufs --prefix=/usr/local/squid --with-included-ltdl+ 
 +RUN cd /squid-${SQUID_VERSION} && ./configure --with-large-files 
 +    --disable-ipv6 --enable-follow-x-forwarded-for 
 +    --sysconfdir=/etc/squid --localstatedir=/var/log/squid 
 +    --enable-ssl --with-openssl --with-filedescriptors=16384 
 +    --enable-storeio=diskd,ufs --prefix=/usr/local/squid 
 +    --with-included-ltdl 
 RUN cd /squid-${SQUID_VERSION} && make && make install RUN cd /squid-${SQUID_VERSION} && make && make install
-RUN useradd -r squid -s /bin/false + 
-RUN cat /etc/passwd+RUN useradd -r squid -s /bin/false && \ 
 +    cat /etc/passwd && \
 #RUN groupadd -r squid #RUN groupadd -r squid
-RUN touch /var/log/squid/logs/access.log +    touch /var/log/squid/logs/access.log && \ 
-RUN cd /var/log/squid/ && chmod -R 770 * && chown -R squid:squid * +    cd /var/log/squid/ && chmod -R 770 * && chown -R squid:squid * && \ 
-RUN chmod 640 /var/log/squid/logs/access.log+    chmod 660 /var/log/squid/logs/access.log
  
-#COPY entrypoint.sh /test/entrypoint.sh +COPY squid-no-cache.conf /etc/squid/squid.conf 
-#RUN chmod 750 /test/entrypoint.sh +#COPY entrypoint.sh /usr/bin/entrypoint.sh
- +
-COPY squid-init /etc/init.d/squid +
-RUN chmod 750 /etc/init.d/squid +
-COPY squid.conf /etc/squid/squid.conf +
-#CMD "./entrypoint.sh+
-#ENTRYPOINT ["/usr/local/squid/sbin/squid",+
-#CMD ["-z"+
-ENTRYPOINT /usr/local/squid/sbin/squid -z && sleep 10 && /etc/init.d/squid start && echo "Squid started" || echo "Squid could not start, exit" && bash +
-#CMD ["--help"]+
  
 +WORKDIR /etc/squid
 +USER squid
  
 #ENTRYPOINT "/sbin/entrypoint.sh && /bin/bash" #ENTRYPOINT "/sbin/entrypoint.sh && /bin/bash"
- 
  
 #EXPOSE 8080/tcp #EXPOSE 8080/tcp
-#CMD ["/usr/local/squid/sbin/squid -z"] 
-#ENTRYPOINT ["/etc/init.d/squid","start"] 
-#CMD ["/bin/bash", "/usr/local/bin/start.sh"] 
-#CMD ["/etc/init.d/squid","start"] 
-#CMD ["start"] 
-#CMD ["start", "batman", "superman"] 
-#CMD ["/bin/bash", "/sbin/entrypoint.sh"] 
-#example ENTRYPOINT service nginx start && service ssh start && /bin/bash "use && to separate your code" 
 #ENTRYPOINT ["/sbin/entrypoint.sh"] #ENTRYPOINT ["/sbin/entrypoint.sh"]
 +</code>
 +
 +Squid entrypoint.sh:
 +<code text entrypoint.sh>
 +#!/bin/sh
 +
 +echo "start squid-proxy"
 +/usr/local/squid/sbin/squid -f /etc/squid/squid.conf
 +
 </code> </code>
  
Line 258: Line 305:
  
 LABEL version="1.4" LABEL version="1.4"
-LABEL maintainer="Thomas Roehm"+LABEL maintainer="info@tmade.de"
  
 #ENV http_proxy "http://proxy:80" #ENV http_proxy "http://proxy:80"
Line 340: Line 387:
 ==== Proxy ==== ==== Proxy ====
  
-Files (SLES12 and Ubuntu 16.04/ 18.04):+Files (SLES12 and Ubuntu 16.04/ 18.04/ 20.04/ 22.04):
  
   /etc/systemd/system/docker.service.d/http-proxy.conf   /etc/systemd/system/docker.service.d/http-proxy.conf
Line 391: Line 438:
 ===Install=== ===Install===
  
-Check releases:+  apt-get install docker-compose 
 + 
 +Or check releases for binary:
  
 https://github.com/docker/compose/releases/ https://github.com/docker/compose/releases/
Line 398: Line 447:
   curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose   curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
   chmod +x /usr/bin/docker-compose   chmod +x /usr/bin/docker-compose
-or 
-  apt-get install docker-compose 
      
 ===Commands=== ===Commands===
          
-  docker-compose up                                                           #inside directory where docker-compose.yml is located! +  docker-compose up                                                           #inside directory where docker-compose.yml is located to run your service 
-  docker-compose -f docker-compose.yml -f docker-compose.dev.yml up +  docker-compose up -d                                                        #to run your services in the background (still runs after system reboot) 
-  docker-compose -f /scripts/dockerfiles/gitlab/docker-compose.yml down +  docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d        #to run your services in the background ("-d") 
-  docker-compose -f /scripts/dockerfiles/gitlab/docker-compose.yml up -d +  docker-compose -f /scripts/dockerfiles/gitlab/docker-compose.yml down        
-  docker-compose up -d                                                        #to run your services in the background+  docker-compose -f docker-compose.yml up -d 
   docker-compose down   docker-compose down
   docker-compose ps   docker-compose ps
Line 428: Line 476:
     volumes:     volumes:
       - /data/db:/var/lib/mysql       - /data/db:/var/lib/mysql
 +    restart: always
 </code> </code>
  
Line 487: Line 536:
 </code> </code>
  
-===Service Unit=== +Jenkins:
- +
-"docker-compose" service unit:+
  
 <code> <code>
-# /etc/systemd/system/docker-compose-app.service+version: '2'
  
-[Unit] +services: 
-Description=Docker Compose Application Service +  jenkins: 
-Requires=docker.service +    image: jenkins/jenkins:lts 
-After=docker.service+    user: "1000:1000"                             #has to match lokal jenkins user´s uid and gid! 
 +    #user: "${UID}:${GID}" 
 +    container_name: jenkins-master 
 +    ports: 
 +      - 8888:8080 
 +      - 50000:50000 
 +    volumes: 
 +      - /data/jenkins/:/var/jenkins_home 
 +    restart: always 
 +</code>
  
-[Service] +tftp:
-Type=oneshot +
-RemainAfterExit=yes +
-WorkingDirectory=/srv/docker +
-ExecStart=/usr/local/bin/docker-compose up -d +
-ExecStop=/usr/local/bin/docker-compose down +
-TimeoutStartSec=0+
  
-[Install] +<code> 
-WantedBy=multi-user.target+version: '2' 
 + 
 +services: 
 +  tftp: 
 +    image: tftp-alpine:latest 
 +    #user: "1003:1003" 
 +    #user: "${UID}:${GID}" 
 +    container_name: tftp-alpine 
 +    ports: 
 +      - "69:69/udp" 
 +      #- 69:69/udp 
 +    volumes: 
 +      -  /data/tftp:/var/tftpboot 
 +    restart: always
 </code> </code>
  
-Some container auto start:+====Private Registry==== 
 +https://docs.docker.com/engine/security/certificates/
  
-<code> +  mkdir -p /var/lib/docker/private-registry/auth 
-[Unit] +  mkdir -p /var/lib/docker/private-registry/data 
-#Description=Some servicecontainer +  mkdir -p /var/lib/docker/private-registry/cert
-Description=ubuntu01 +
-Requires=docker.service +
-After=docker.service+
  
-[Service] +  docker run --entrypoint htpasswd registry:2 -Bbn admin mysecret >> /var/lib/docker/private-registry/auth/htpasswd 
-Restart=always +  docker container ls -a |grep registry 
-ExecStart=/usr/bin/docker start -a ubuntu01 +  docker container rm $(docker ps |grep registry |awk '{ print $1 }')
-ExecStop=/usr/bin/docker stop -t 2 ubuntu01+
  
-[Install] +"/var/lib/docker/docker-compose.yml": 
-WantedBy=multi-user.target+<code> 
 +registry: 
 + restart: always 
 + image: registry:
 + container_name: registry 
 + ports: 
 + 5000:5000 
 + environment: 
 +   REGISTRY_HTTP_TLS_CERTIFICATE: /cert/my.crt 
 +   REGISTRY_HTTP_TLS_KEY: /cert/my.key 
 +   REGISTRY_AUTH: htpasswd 
 +   REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd 
 +   REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm 
 + volumes: 
 + - /var/lib/docker/private-registry/data:/var/lib/registry 
 + - /var/lib/docker/private-registry/cert:/cert 
 + - /var/lib/docker/private-registry/auth:/auth
 </code> </code>
  
 +Start and stop:
 +  docker-compose -f /var/lib/docker/docker-compose.yml up -d
 +  docker-compose -f /var/lib/docker/docker-compose.yml down
 +  
 +Login:
 +
 +  docker login --username admin my-registry:5000
 +
 +====MISC====
 +
 +  sudo usermod -aG docker myuser                                                #add user "myuser" to docker group
  
docker/docker.txt · Last modified: 2024/01/10 16:08 by tmade
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki