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
docker:docker [2020/06/23 09:24] – [Commands] tmadedocker:docker [2024/01/10 16:08] (current) – [Commands] 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 
 +  docker network create -d overlay --subnet=10.0.32.0/22 --attachable my_network_name
 +  
  
 === Container ===  === Container === 
Line 56: Line 82:
   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 96:
   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 122:
   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===
Line 99: Line 137:
   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 149:
   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 155:
   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 173:
   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 214:
  
   sudo usermod -a -G docker USERNAME   sudo usermod -a -G docker USERNAME
 +  usermod -aG docker tmade
  
 ====Dockerfile==== ====Dockerfile====
Line 178: Line 225:
  
 <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 243:
 #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 306:
  
 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 388:
 ==== 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 439:
 ===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 448:
   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 477:
     volumes:     volumes:
       - /data/db:/var/lib/mysql       - /data/db:/var/lib/mysql
 +    restart: always
 </code> </code>
  
Line 487: Line 537:
 </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.1592897051.txt.gz · Last modified: 2020/06/23 09:24 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