User Tools

Site Tools


технология_docker

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
технология_docker [2022/06/30 08:32]
val [Запуск в режиме демона и подключение к контейнеру]
технология_docker [2022/09/26 09:04]
val [Создание контейнера для приложения с использованием Dockerfile]
Line 103: Line 103:
 </​code>​ </​code>​
  
-"Забыли"​ сделать скрипт start.sh "​выполнимым"​ нажали Ctrl+D+  * Методически, ​"забыли"​ сделать скрипт start.sh "​выполнимым"​ нажали Ctrl+D
  
 <​code>​ <​code>​
Line 115: Line 115:
 </​code>​ </​code>​
  
-Ctrl+D+  * Методически,​ можно уже на этом этапе: запустить скрипт,​ отключится от контейнера без его остановки,​ выяснить назначенный контейнеру ip, проверить работу приложения (см. дальше) и, если все работает,​ делать commit  
 + 
 +  * [[https://​cpab.ru/​kak-rabotajut-tegi-docker-cloudsavvy-it/​|Как работают теги Docker?]]
  
 <​code>​ <​code>​
Line 129: Line 131:
 <​code>​ <​code>​
 server# mkdir /root/webd/ && cd /root/webd/ server# mkdir /root/webd/ && cd /root/webd/
 +  или
 +gitlab-runner@server:​~$ mkdir -p webd/webd/ && cd webd/webd/
  
-server# ​mv /​usr/​local/​sbin/​webd .+server# ​cp /​usr/​local/​sbin/​webd .
  
 server# ###tar -cvzf www.tgz -C /var/ www/ server# ###tar -cvzf www.tgz -C /var/ www/
Line 140: Line 144:
 /​etc/​init.d/​inetutils-inetd start /​etc/​init.d/​inetutils-inetd start
  
 +touch /​var/​log/​webd.log
 +#chown 10003 /var/www/
 +  ​
 if [ "​$MYMODE"​ = '​TEST'​ ]; then if [ "​$MYMODE"​ = '​TEST'​ ]; then
   bash      # not work in k8s   bash      # not work in k8s
 else else
-  tail -/​var/​log/​webd.log+  tail -/​var/​log/​webd.log
 fi fi
 </​code><​code>​ </​code><​code>​
Line 151: Line 158:
 FROM debian:​bullseye FROM debian:​bullseye
  
-RUN apt-get update && apt-get install -y inetutils-inetd file && echo 'www stream tcp nowait root /​usr/​local/​sbin/​webd webd' > /​etc/​inetd.conf+RUN cp /​usr/​share/​zoneinfo/​Etc/​GMT-3 /​etc/​localtime \ 
 +    && ​apt-get update ​
 +    ​&& apt-get install -y inetutils-inetd file 
 +    ​&& echo 'www stream tcp nowait root /​usr/​local/​sbin/​webd webd' > /​etc/​inetd.conf
  
 COPY start.sh / COPY start.sh /
 COPY webd /​usr/​local/​sbin/​webd COPY webd /​usr/​local/​sbin/​webd
-### ADD www.tgz /var/     ​#for simple ​test in k8s+### ADD www.tgz /var/ 
 + 
 +### for helm releases ​test 
 +### COPY index.html /var/www/
  
 EXPOSE 80 EXPOSE 80
Line 175: Line 188:
 2-й раз - через Dockerfile задан entrypoint и expose, ключ --rm для удаления контейнера после остановки 2-й раз - через Dockerfile задан entrypoint и expose, ключ --rm для удаления контейнера после остановки
  
-server# docker run --name webd01 -e "MYMODE=TEST" ​-itd --rm -P test/webd +server# docker run --name webd01 -e MYMODE=TEST -itd --rm -P test/webd 
 +</​code>​ 
 +Процессы контейнера и системы 
 +<​code>​
 server# docker top webd01 server# docker top webd01
  
 server# ps axw | grep inetd server# ps axw | grep inetd
 +
 server# cat /​proc/<​PID>/​cgroup server# cat /​proc/<​PID>/​cgroup
 +</​code>​
 +  * [[Технология cgroup]]
 +<​code>​
 +server# find /​sys/​fs/​cgroup/​ | grep NNNNNNNNNNNNNNNNNNNNNNNNNNNNN | grep memory.max
  
 +server# systemd-cgls
 +</​code>​
 +Анализ параметров запуска контейнера
 +<​code>​
 server# docker inspect webd01 server# docker inspect webd01
  
Line 187: Line 211:
  
 server# wget -qO - http://​172.17.0.2/​ server# wget -qO - http://​172.17.0.2/​
 +server$ curl --noproxy '​*'​ http://​172.17.0.2/​
  
 server# docker port webd01 server# docker port webd01
  
 server# docker logs webd01 server# docker logs webd01
 +
 +node1# docker logs webd01 -f
  
 server# wget -qO - http://​localhost:​8000/​ server# wget -qO - http://​localhost:​8000/​
 +server$ curl http://​localhost:​8000
 +server$ curl http://​localhost:​8000/​not_exit_file
  
 host browser -> http://​server.corpX.un:​8000/​ host browser -> http://​server.corpX.un:​8000/​
Line 246: Line 275:
  
   * [[https://​habr.com/​ru/​company/​ruvds/​blog/​450312/​|Руководство по Docker Compose для начинающих]]   * [[https://​habr.com/​ru/​company/​ruvds/​blog/​450312/​|Руководство по Docker Compose для начинающих]]
 +  * [[https://​stackoverflow.com/​questions/​39663096/​docker-compose-creating-multiple-instances-for-the-same-image|docker-compose creating multiple instances for the same image]]
  
 <​code>​ <​code>​
Line 261: Line 291:
     ports:     ports:
       - "​8000:​80"​       - "​8000:​80"​
 +#      - "​80"​
     volumes:     volumes:
       - /​var/​www/:/​var/​www/​       - /​var/​www/:/​var/​www/​
 +#      - vol1:/​var/​www/​
 +
 +#    environment:​
 +#      - MYMODE=TEST
 +#    stdin_open: true
     tty: true     tty: true
 +    ​
   sftp:   sftp:
     image: atmoz/sftp     image: atmoz/sftp
Line 270: Line 307:
     volumes:     volumes:
       - /​var/​www/:/​home/​user3/​www       - /​var/​www/:/​home/​user3/​www
 +#      - vol1:/​home/​user3/​www
     command: user3:​password3:​10003     command: user3:​password3:​10003
 +#volumes:
 +#  vol1:
 </​code><​code>​ </​code><​code>​
 # docker-compose build # docker-compose build
Line 282: Line 322:
 # docker-compose down # docker-compose down
  
-# docker-compose rm    #​Возможно,​ не требуется +# docker-compose rm
-</​code>​ +
-===== Дополнительные материалы =====+
  
-==== Локальный репозиторий ====+# docker volume rm root_vol1 
 +</​code><​code>​ 
 +gitlab-runner@server:​~/​webd$ cat docker-compose.yml 
 +</​code><​code>​ 
 +version: "​3"​ 
 +services: 
 +  webd: 
 +    image: server.corpX.un:​5000/​student/​webd:​ver1.N 
 +    ports: 
 +      - "​80"​ 
 +    volumes: 
 +      - /​var/​www/:/​var/​www/​ 
 +    deploy: 
 +      mode: replicated 
 +      replicas: 3 
 +</​code><​code>​ 
 +node1,2,3# docker-compose up -d --scale webd=3
  
- * [[https://​docs.docker.com/​registry/​|Docker Registry]]+  или
  
-<​code>​ +node1,2,3# docker-compose ​--compatibility up -
-gate# docker ​run --p 5000:​5000 ​-v /​root:/​certs ​-e REGISTRY_HTTP_TLS_CERTIFICATE=/​certs/​gate.crt ​-e REGISTRY_HTTP_TLS_KEY=/​certs/​gate.key ​--name registry registry:2+node1,2,3# docker-compose ​--compatibility down
  
-node1# cp ~vagrant/​gate.crt /​etc/​docker/​certs.d/​gate.corp13.un\:​5000/​ca.crt 
  
-node1# ​service ​docker ​restart +node1,2,3# docker ​ps -q | xargs -l docker port
- +
-node1# docker tag val/​webd:​latest gate.corp13.un:​5000/​webd +
- +
-node1# docker push gate.corp13.un:​5000/​webd +
- +
-node1# curl --insecure -X GET https://​gate.corp13.un:​5000/​v2/​_catalog +
-{"​repositories":​["​webd"​]}+
 </​code>​ </​code>​
  
-==== GitLab ​репозиторий ====+===== Локальные ​репозитории ===== 
 + 
 +==== Insecure Private Registry ​====
  
   * [[Инструмент GitLab#​GitLab Docker Registry]]   * [[Инструмент GitLab#​GitLab Docker Registry]]
 +  * [[https://​docs.docker.com/​registry/​insecure/​|Test an insecure registry/​Deploy a plain HTTP registry]]
  
 <​code>​ <​code>​
 # cat /​etc/​docker/​daemon.json # cat /​etc/​docker/​daemon.json
 </​code><​code>​ </​code><​code>​
-... 
 { {
   "​insecure-registries"​ : ["​server.corpX.un:​5000"​]   "​insecure-registries"​ : ["​server.corpX.un:​5000"​]
 } }
-... 
 </​code><​code>​ </​code><​code>​
 # service docker restart # service docker restart
  
-docker login http://​server.corpX.un:​5000+gitlab-runner@server:​~$ ​docker login http://​server.corpX.un:​5000
  
-docker tag test/webd server.corpX.un:​5000/student/​webd +less ~/.docker/config.json 
-# docker tag test/webd server.corpX.un:5000/​student/​webd:wwwdir+</code><​code>​ 
 +
 +        "​auths":​ { 
 +                "server.corp13.un:5000"
 +                        "​auth":​ "​c3R1ZGVudDpwYXNzd29yZA=="​ 
 +                } 
 +        } 
 +
 +</​code>​
  
-docker push server.corpX.un:​5000/​student/​webd +  * [[https://​serverfault.com/​questions/​703344/​how-to-remove-an-image-tag-in-docker-without-removing-the-image-itself|How to remove an image tag in Docker without removing the image itself?]] 
-docker push server.corpX.un:​5000/​student/​webd:​wwwdir+ 
 +<​code>​ 
 +gitlab-runner@server:​~$ docker tag test/webd server.corpX.un:​5000/​student/​webd 
 +gitlab-runner@server:​~$ docker tag test/webd server.corpX.un:​5000/​student/​webd:​1.1 
 + 
 +gitlab-runner@server:​~$ docker images 
 + 
 +gitlab-runner@server:​~$ ​docker push server.corpX.un:​5000/​student/​webd 
 +gitlab-runner@server:​~$ ​docker push server.corpX.un:​5000/​student/​webd:​1.1
 ... ...
-# docker run --name webd01 --hostname webd01 -itd -p 8000:80 server.corp13.un:​5000/​student/​webd:​wwwdir+node1_2_3# docker run --name webd01 --hostname webd01 -itd --rm -p 8000:80 server.corpX.un:​5000/​student/​webd 
 +</​code>​ 
 + 
 +==== Использование образа Docker Registry ==== 
 + 
 +  * [[https://​docs.docker.com/​registry/​|Docker Registry]] 
 + 
 +<​code>​ 
 +gate# docker run -d -p 5000:5000 -v /​root:/​certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/​certs/​gate.crt -e REGISTRY_HTTP_TLS_KEY=/​certs/​gate.key --name registry registry:​2 
 + 
 +node1# cp ~vagrant/​gate.crt /​etc/​docker/​certs.d/​gate.corp13.un\:​5000/​ca.crt 
 + 
 +node1# service docker restart 
 + 
 +node1# docker tag val/​webd:​latest gate.corp13.un:​5000/​webd 
 + 
 +node1# docker push gate.corp13.un:​5000/​webd 
 + 
 +node1# curl --insecure -X GET https://​gate.corp13.un:​5000/​v2/​_catalog 
 +{"​repositories":​["​webd"​]}
 </​code>​ </​code>​
  
технология_docker.txt · Last modified: 2022/09/30 13:36 by val