Инструменты пользователя

Инструменты сайта


service:docker

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:docker [09.06.2024 09:03] – [Блокировка dockerhub.io в России] viacheslavservice:docker [05.02.2025 12:44] (текущий) – [Buildx / Buildkit] viacheslav
Строка 1: Строка 1:
 ====== Docker ====== ====== Docker ======
 +<WRAP right box 25%>
 +— What is the first clue to build the container?\\
 +— It must be bound in thews of invincible iron.\\
 +— What is the second clue to build the container?\\
 +— Bejewel the chest with the hallowed heart of glittering stone.\\
 +— What is the third clue to build the container?\\
 +— Gift it with the essence of dragon amber, born of earth and root.\\
 +— What is the fourth clue to build the container?\\
 +— A sacrifice of clay. The power to bind its parts.\\
 +— What is the fifth clue to build the container?\\
 +— Craft it from wood no mortal blade can carve. Find the wicked tree.\\
 +— What is the sixth clue to build the container?\\
 +— The strength of love denied. The soul of a dead hero shall empower it.\\
 +— What is the seventh clue to build the container?\\
 +— Temper it in the tears of the weeping moon.\\
 +— What is the eighth clue to build the container?\\
 +— Forged by the legendary Black Gnarl, beneath his binding song.\\
 +— Each of the hearts have I given.\\
 +— And each of the riddles have I returned. I am free! Stay at your task, my fool. No greater curse might I impart!
 +
 +//Anvil of Dawn//
 +</WRAP>
  
 ===== Обновление ===== ===== Обновление =====
Строка 12: Строка 34:
 https://stackoverflow.com/questions/49316462/how-to-update-existing-images-with-docker-compose https://stackoverflow.com/questions/49316462/how-to-update-existing-images-with-docker-compose
  
 +==== Buildx / Buildkit ====
 +Новый сборщик образов, который не требует установленного Docker engine. Это позволяет, например, собирать образы в кластере k8s.
 +
 +Установка
 +<code bash>
 +sudo apt install docker-buildx
 +</code>
 +
 +Сделать Buildkit сборщиком по умолчанию
 +<file json /etc/docker/daemon.json>
 +{
 +  "features": {
 +    "buildkit": true
 +  }
 +}
 +</file>
 +
 +<code bash>
 +sudo systemctl restart docker.service
 +</code>
 +
 +Если Buildkit не установлен по умолчанию, то запустить сборку через него можно через переменную.
 +<code bash>
 +DOCKER_BUILDKIT=1 docker build -t my_image .
 +</code>
 +https://docs.docker.com/build/buildkit/
 ===== Чистка ===== ===== Чистка =====
 <file bash /etc/crontab> <file bash /etc/crontab>
Строка 330: Строка 378:
  
 ==== docker.errors.DockerException: Error while fetching server API version ==== ==== docker.errors.DockerException: Error while fetching server API version ====
-На новых системах после установки docker-compose и попыткой им вопрользоваться выходит ошибка\\+На новых системах после установки docker-compose и попыткой им воспользоваться выходит ошибка\\
 <color #ed1c24>docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument ‘chunked’</color> <color #ed1c24>docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument ‘chunked’</color>
  
Строка 532: Строка 580:
 [[https://www.digitalocean.com/community/tutorials/how-to-containerize-a-laravel-application-for-development-with-docker-compose-on-ubuntu-18-04-ru|Контейнеризация приложения Laravel 6 для разработки с помощью Docker Compose в Ubuntu 18.04]] [[https://www.digitalocean.com/community/tutorials/how-to-containerize-a-laravel-application-for-development-with-docker-compose-on-ubuntu-18-04-ru|Контейнеризация приложения Laravel 6 для разработки с помощью Docker Compose в Ubuntu 18.04]]
  
 +==== nodejs ====
 +Сборка в каталоге, лежащем на хосте
 +<code bash>
 +docker run --rm -w /home/node -v ./source:/home/node node:16 npm run build
 +</code>
 +
 +Сложный и неэффективный вариант (пока не понял, что можно проще).\\
 +Интересный приём - heredoc для ''docker build''.
 +<code bash>
 +workdir=/home/node
 +imagename=front:temp
 +
 +docker build -t $imagename -f - . << EOF
 +FROM node:16
 +WORKDIR $workdir
 +COPY --chown=node:node source/ ./
 +USER node
 +# npm rebuild нужен для решения проблемы с правами cross-env: Permission denied
 +RUN npm rebuild && npm run build
 +EOF
 +
 +# Вытащить каталоги client и admin из образа с архивацией gzip
 +id=$(docker create $imagename)
 +for i in client admin
 +do
 +  docker cp $id:$workdir/$i - |gzip > result/$i.tar.gz
 +done
 +docker rm $id
 +</code>
 ==== Скачивание и пересылка образа в закрытый контур ==== ==== Скачивание и пересылка образа в закрытый контур ====
 В закрытом контуре интернета нет, поэтому на какой-то внешней машине: В закрытом контуре интернета нет, поэтому на какой-то внешней машине:
Строка 550: Строка 627:
 Выгрузка образов: https://docs.docker.com/reference/cli/docker/image/save/ Выгрузка образов: https://docs.docker.com/reference/cli/docker/image/save/
  
-На целевом сервереобъединение частей и загрузка образа+На целевом сервереобъединение частей и загрузка образа.
 <code bash> <code bash>
 cat tomcat_jre11_* > tomcat_jre11.tar.gz cat tomcat_jre11_* > tomcat_jre11.tar.gz
Строка 565: Строка 642:
 #  Замена / на _ в именах архивов #  Замена / на _ в именах архивов
 for i in "${images[@]}" ; do docker save $i |gzip > $backupdir/${i//\//_}.tar.gz ; done for i in "${images[@]}" ; do docker save $i |gzip > $backupdir/${i//\//_}.tar.gz ; done
 +</code> 
 +<code bash>
 user@k3:~/dockerimages$ ll -h user@k3:~/dockerimages$ ll -h
 total 3.6G total 3.6G
Строка 588: Строка 666:
 -rw-rw-r--  1 user user  98M May 31 14:35 tomcat:9-jre11.tar.gz -rw-rw-r--  1 user user  98M May 31 14:35 tomcat:9-jre11.tar.gz
 -rw-rw-r--  1 user user  98M May 31 14:34 tomcat:jre11.tar.gz -rw-rw-r--  1 user user  98M May 31 14:34 tomcat:jre11.tar.gz
 +</code>
  
 +==== Загрузка всех образов из архивов ====
 +<code bash>
 +for i in $(ls *.tar.gz); do zcat $i |docker load; done
 </code> </code>
  
 +==== Убрать повторяющиеся куски кода из docker-compose.yml ====
 +Называется "compose file extensions". Пишется код, ему присваивается якорь, а потом на него идёт ссылка.\\
 +''version:'' должна быть ''3.4'' и новее. Механизм негибкий, дочернюю строку в алиас не добавишь.
 +
 +<code yaml>
 +version: '3.7'
 +
 +x-fluentd: &fluentd
 +  driver: fluentd
 +  options: &fluentdopts
 +    fluentd-async-connect: 1
 +
 +services:
 +  nodeinfo:
 +    image: nodeinfo
 +    logging:
 +      <<: *fluentd
 +      options:
 +        <<: *fluentdopts
 +        tag: "nodeinfo"
 +</code>
 +
 +https://docs.docker.com/compose/compose-file/11-extension/\\
 +https://stackoverflow.com/questions/39731125/can-i-concatenate-aliases-in-yaml
 +
 +==== Сделать сеть с другим именем, не прописывая её явно для всех сервисов ====
 +Все сервисы стандартно ссылаются на сеть default, а тут ей задано другое имя. В результате будет сеть elastic, но прописывать её в сервисы не надо.
 +<code yaml>
 +networks:
 +  default:
 +    name: elastic
 +    external: false
 +</code>
 +https://github.com/elkninja/elastic-stack-docker-part-one/blob/main/docker-compose.yml
service/docker.1717923780.txt.gz · Последнее изменение: 30.07.2024 19:20 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki