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/07/06 10:04]
val [Создание контейнера для приложения с использованием Dockerfile]
технология_docker [2022/09/30 12:07]
val [Запуск в режиме демона и подключение к контейнеру]
Line 103: Line 103:
 </​code>​ </​code>​
  
-"Забыли"​ сделать скрипт start.sh "​выполнимым"​ нажали Ctrl+D+  * Методически, ​"забыли"​ сделать скрипт start.sh "​выполнимым"​ нажали Ctrl+D
  
 <​code>​ <​code>​
Line 115: Line 115:
 </​code>​ </​code>​
  
-Ctrl+D+  * Методически,​ можно уже на этом этапе: запустить скрипт,​ отключится от контейнера без его остановки ​Ctrl+P, Q(still holding Ctrl), выяснить назначенный контейнеру ip, проверить работу приложения (см. тему [[#​Запуск в режиме демона и подключение к контейнеру]]) и, если все работает,​ делать commit  
 + 
 +  * [[https://​cpab.ru/​kak-rabotajut-tegi-docker-cloudsavvy-it/​|Как работают теги Docker?]] 
 + 
 +  * [[https://​code.tutsplus.com/​ru/​tutorials/​docker-from-the-ground-up-understanding-images--cms-28165|Докер с нуля: понимание слоев образов]] 
 +  * Пакет RSYNC - [[Пакет RSYNC#​Инкрементное копирование (Incremental Backup)]]
  
 <​code>​ <​code>​
Line 121: Line 126:
 </​code>​ </​code>​
  
-  * [[#​Запуск в режиме демона и подключение к контейнеру]]+  * [[#​Запуск в режиме демона и подключение к контейнеру]] ​из полученного образа
 ==== Создание контейнера для приложения с использованием Dockerfile ==== ==== Создание контейнера для приложения с использованием Dockerfile ====
  
Line 129: Line 134:
 <​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 154: Line 161:
 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 
 +    && apt-get clean \ 
 +    ​&& 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/ 
-###COPY index.html /​var/​www/ ​  #test in k8s+ 
 +### for helm releases ​test 
 +### COPY index.html /var/www/
  
 EXPOSE 80 EXPOSE 80
Line 180: Line 193:
  
 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 191: Line 215:
  
 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/​
  
 server# docker attach webd01 ​ server# docker attach webd01 ​
 +
 +server# docker exec -it webd01 bash
  
 webd01# ps ax webd01# ps ax
Line 250: Line 281:
  
   * [[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 262: Line 294:
   webd:   webd:
     image: test/webd     image: test/webd
-#    image: server.corp13.un:​5000/​student/​webd:​1.1 
     build: webd/     build: webd/
     ports:     ports:
Line 275: Line 306:
 #    stdin_open: true #    stdin_open: true
     tty: true     tty: true
 +    ​
   sftp:   sftp:
     image: atmoz/sftp     image: atmoz/sftp
Line 299: Line 331:
  
 # docker volume rm root_vol1 # docker volume rm root_vol1
-</​code>​ +</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]]+node1,​2,​3# ​docker-compose --compatibility up -d 
 +node1,2,3# docker-compose --compatibility down
  
-<​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,2,3# docker ​ps -q | xargs -l docker port
- +
-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>​
  
-==== 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 +gitlab-runner@server:~$ less ~/.docker/config.json 
-# docker tag test/webd server.corpX.un:​5000/​student/​webd:wwwdir+</code><​code>​ 
 +
 +        "​auths":​ { 
 +                "server.corpX.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: 2024/03/07 09:50 by val