This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
технология_docker [2022/07/14 08:50] val [GitLab репозиторий] |
технология_docker [2023/01/07 11:40] val [Создание контейнера для приложения вручную] |
||
---|---|---|---|
Line 103: | Line 103: | ||
</code> | </code> | ||
- | "Забыли" сделать скрипт start.sh "выполнимым" нажали Ctrl+D | + | * Ctrl+D |
<code> | <code> | ||
- | server# docker diff webd | + | server# docker ps -a |
+ | server# docker diff webd | ||
+ | </code> | ||
+ | * Методически, "вспомнили", что "забыли" сделать скрипт start.sh "выполнимым" | ||
+ | <code> | ||
server# docker start webd | server# docker start webd | ||
Line 115: | Line 119: | ||
</code> | </code> | ||
- | Ctrl+D | + | * Методически, можно уже на этом этапе: запустить скрипт ./start.sh, отключится от контейнера без его остановки Ctrl+P, Q(still holding Ctrl), выяснить через docker inspect webd назначенный контейнеру ip, проверить через curl работу приложения и, если все работает (правда, будет сообщение, что такого файла нет), сделать docker stop webd, и 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 130: | ||
</code> | </code> | ||
- | * [[#Запуск в режиме демона и подключение к контейнеру]] | + | * [[#Запуск в режиме демона и подключение к контейнеру]] из полученного образа |
==== Создание контейнера для приложения с использованием Dockerfile ==== | ==== Создание контейнера для приложения с использованием Dockerfile ==== | ||
Line 129: | Line 138: | ||
<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 165: | ||
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 197: | ||
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 219: | ||
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 285: | ||
* [[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 298: | ||
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 310: | ||
# stdin_open: true | # stdin_open: true | ||
tty: true | tty: true | ||
+ | | ||
sftp: | sftp: | ||
image: atmoz/sftp | image: atmoz/sftp | ||
Line 299: | Line 335: | ||
# docker volume rm root_vol1 | # 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:1.1 | ||
+ | ports: | ||
+ | - "80" | ||
+ | volumes: | ||
+ | - /var/www/:/var/www/ | ||
+ | deploy: | ||
+ | mode: replicated | ||
+ | replicas: 3 | ||
+ | </code><code> | ||
+ | node1,2,3# docker-compose up -d --scale webd=3 | ||
+ | |||
+ | или | ||
+ | |||
+ | node1,2,3# docker-compose --compatibility up -d | ||
+ | node1,2,3# docker-compose --compatibility down | ||
+ | |||
+ | |||
+ | node1,2,3# docker ps -q | xargs -l docker port | ||
</code> | </code> | ||
- | ===== Репозиторий ===== | + | ===== Локальные репозитории ===== |
- | ==== GitLab репозиторий ==== | + | ==== Insecure Private Registry ==== |
* [[Инструмент GitLab#GitLab Docker Registry]] | * [[Инструмент GitLab#GitLab Docker Registry]] | ||
Line 311: | Line 371: | ||
# 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 |
+ | |||
+ | gitlab-runner@server:~$ less ~/.docker/config.json | ||
+ | </code><code> | ||
+ | { | ||
+ | "auths": { | ||
+ | "server.corpX.un:5000": { | ||
+ | "auth": "c3R1ZGVudDpwYXNzd29yZA==" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | * [[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?]] | ||
+ | |||
+ | <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 | ||
- | # docker tag test/webd server.corpX.un:5000/student/webd | + | gitlab-runner@server:~$ docker images |
- | # docker tag test/webd server.corpX.un:5000/student/webd:wwwdir | + | |
- | # docker push server.corpX.un:5000/student/webd | + | gitlab-runner@server:~$ docker push server.corpX.un:5000/student/webd |
- | # docker push server.corpX.un:5000/student/webd:wwwdir | + | gitlab-runner@server:~$ docker push server.corpX.un:5000/student/webd:1.1 |
... | ... | ||
- | # docker run --name webd01 --hostname webd01 -itd --rm -p 8000:80 server.corpX.un:5000/student/webd | + | node1_2_3# docker run --name webd01 --hostname webd01 -itd --rm -p 8000:80 server.corpX.un:5000/student/webd |
</code> | </code> | ||
- | ==== Локальный репозиторий ==== | + | ==== Использование образа Docker Registry ==== |
- | * [[https://docs.docker.com/registry/|Docker Registry]] | + | * [[https://docs.docker.com/registry/|Docker Registry]] |
<code> | <code> |