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/15 12:19] val [Локальный репозиторий] |
технология_docker [2023/01/07 11:23] 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 | + | * Методически, можно уже на этом этапе: запустить скрипт, отключится от контейнера без его остановки Ctrl+P, Q(still holding Ctrl), выяснить через docker inspect webd назначенный контейнеру ip, проверить через curl работу приложения и, если все работает, делать 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> | ||
- | ===== Репозиторий ===== | + | ===== Локальные репозитории ===== |
==== Insecure Private Registry ==== | ==== Insecure Private 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 |
- | # less ~/.docker/config.json | + | gitlab-runner@server:~$ less ~/.docker/config.json |
</code><code> | </code><code> | ||
{ | { | ||
"auths": { | "auths": { | ||
- | "server.corp13.un:5000": { | + | "server.corpX.un:5000": { |
"auth": "c3R1ZGVudDpwYXNzd29yZA==" | "auth": "c3R1ZGVudDpwYXNzd29yZA==" | ||
} | } | ||
} | } | ||
} | } | ||
- | </code><code> | + | </code> |
- | # docker tag test/webd server.corpX.un:5000/student/webd | + | |
- | # docker tag test/webd server.corpX.un:5000/student/webd:wwwdir | + | * [[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 | ||
+ | |||
+ | gitlab-runner@server:~$ docker images | ||
- | # 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> | ||