Лучшие практики Docker: практика автономного развертывания Docker и Docker Compose.
Лучшие практики Docker: практика автономного развертывания Docker и Docker Compose.

Лучшие практики Docker: практика автономного развертывания Docker и Docker Compose.

2024 Практические документы по эксплуатации и обслуживанию Cloud Native, 2019 г. 99 оригинальный проект Нет. 008 Глава |Docker Серия лучших практик «2024» Нет. 008 Глава

Привет,добро пожаловать вКвалифицирован в эксплуатации и обслуживании

Контент, которым сегодня поделились, Docker Лучшая практика «2024» в серии документов Docker и Docker Compose Практика автономного развертывания

карта содержания

docker-compose-mindmap
docker-compose-mindmap

Фактическая конфигурация сервера (копия архитектуры 1:1 мелкомасштабной производственной среды, конфигурация немного отличается)

имя хоста

IP

ЦП (ядро)

Память (ГБ)

Системный диск (ГБ)

Диск с данными (ГБ)

использовать

docker-node-1

192.168.9.81

4

16

40

100

Докер-узел 1

docker-node-2

192.168.9.82

4

16

40

100

Докер-узел 2

docker-node-3

192.168.9.83

4

16

40

100

Докер-узел 3

общий

3

12

48

120

300

Реальная боевая среда включает информацию о версии программного обеспечения.

  • Операционная система:openEuler 22.03 LTS SP3
  • Docker:24.0.9
  • Docker-Compose:v2.24.7

1. Установите Докер

1.1 Загрузка автономного двоичного пакета docker

На машине с доступом в Интернет начните с docker Загрузите бинарный пакет с официального сайта и загрузите его на сервер развертывания. /srv Оглавление(Персональная настройка Установитьпрограммное обеспечениеи Данные размещаются здесь по умолчанию Оглавление)。

Язык кода:bash
копировать
# wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.9.tgz
cd /srv

1.2 Установите Docker в автономном режиме

  • Разархивируйте и скопируйте все двоичные файлы в /usr/local/bin Оглавление Вниз
Язык кода:bash
копировать
tar xvf docker-24.0.9.tgz 
mv docker/* /usr/local/bin/
rm -rf docker

иллюстрировать: Персональная услуга индивидуальной установки bin Файлы хранятся в /usr/local/bin/ каталог, его можно разместить по любому пути при фактическом использовании.

  • Содержимое распакованного файла docker-24.0.9.tgz следующее.
Язык кода:bash
копировать
# [root@docker-node-1 srv]# tar xvf docker-24.0.9.tgz 
docker/
docker/docker-proxy
docker/docker-init
docker/containerd-shim-runc-v2
docker/dockerd
docker/containerd
docker/docker
docker/runc
docker/ctr
  • Добавить переменную среды PATH
Язык кода:bash
копировать
echo "export PATH=$PATH:/usr/local/bin" >> /etc/profile.d/docker.sh

проиллюстрировать: Не помещайте персонализированную конфигурацию переменных среды в /etc/profile документ, рекомендуется /etc/profile.d/ Создайте новый файл конфигурации с именем службы в каталоге.

  • Проверьте версию Докера
Язык кода:bash
копировать
source /etc/profile
docker version
  • Правильный результат следующий
Язык кода:bash
копировать
# Потому что Докер Служить еще не запустить. При выполнении команды вы видите следующее. Client изинформация)
[root@docker-node-1 srv]# docker version
Client:
 Version:           24.0.9
 API version:       1.43
 Go version:        go1.20.13
 Git commit:        2936816
 Built:             Thu Feb  1 00:47:46 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

1.3 Редактирование файла конфигурации службы Docker

чтобы достичь Docker Персонализированная конфигурация услуг, нам необходимо настроить daemon.json файл конфигурации.

  • создавать docker Служить Конфигурациядокументкорень Оглавление
Язык кода:bash
копировать
mkdir /etc/docker
  • создавать Конфигурациядокумент /etc/docker/daemon.json
Язык кода:bash
копировать
cat > /etc/docker/daemon.json <<EOF
{
  "data-root": "/data/docker",
  "exec-opts": [
    "native.cgroupdriver=systemd"
  ],
  "log-level": "info",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  },
  "storage-driver": "overlay2"
}
EOF

проиллюстрировать:

data-root обозначение Docker Каталог данных по умолчанию для службы: /data/docker Для использования в производственной среде подключите независимый диск с данными. /data Оглавление

1.4 Настройте systemd для управления службой Docker

Чтобы удобно управлять службами Docker в повседневном использовании, мы пишем файлы конфигурации systemd для управления службами Docker.

  • Напишите файл docker.service
Язык кода:bash
копировать
cat > /usr/lib/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
#BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
#Requires=docker.socket

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
#Restart=on-failure 
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target 

EOF

1.5 Запустите службу докеров и настройте ее автоматический запуск при загрузке.

Язык кода:bash
копировать
systemctl daemon-reload  
systemctl enable docker --now

1.6 Проверьте информацию о сервисе Docker

Язык кода:bash
копировать
[root@docker-node-1 srv]# docker info
Client:
 Version:    24.0.9
 Context:    default
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.9
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7c3aca7a610df76212171d200ca3811ff6096eb8
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 5.10.0-153.51.0.129.oe2203sp2.x86_64
 Operating System: openEuler 22.03 (LTS-SP2)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.261GiB
 Name: docker-node-1
 ID: ba867abb-8ca1-440b-9376-0d335a8886ae
 Docker Root Dir: /data/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

2. Установите docker-compose

2.1 Загрузка автономного двоичного пакета docker-compose

На машине с доступом в Интернет начните с docker Загрузите бинарный пакет с официального сайта и загрузите его на сервер развертывания. /srv Оглавление(Персональная настройка Установитьпрограммное обеспечениеи Данные размещаются здесь по умолчанию Оглавление)。

Язык кода:bash
копировать
# curl -L https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
cd /srv
cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2.2 Проверка информации о создании докера

Язык кода:bash
копировать
[root@docker-node-1 srv]# docker-compose version
Docker Compose version v2.24.7

3. Создайте проверочные тесты приложения.

Далее мы используем docker-compose Создайте использование busybox Зеркальный контейнер, тест и проверка Docker и docker-compose Правильна ли конфигурация установки.

3.1 Редактирование файла docker-compose.yml

Язык кода:yaml
копировать
name: busybox
services:
  busybox:
    container_name: busybox
    image: busybox
    command:  /bin/sh -c "sleep 3600"

3.2 Создайте тестовый контейнер

Язык кода:bash
копировать
[root@docker-node-1 srv]# docker-compose up -d
[+] Running 2/2
 ✔ busybox 1 layers [⣿]      0B/0B      Pulled                                                                                            6.4s 
   ✔ 7b2699543f22 Pull complete                                                                                                           2.2s 
[+] Running 1/2
 ⠼ Network busybox_default  Created                                                                                                       0.4s 
 ✔ Container busybox        Started                                                                                                       0.3s 

3.3 Проверка рабочего статуса контейнера

Язык кода:bash
копировать
[root@docker-node-1 srv]# docker-compose ps
NAME      IMAGE     COMMAND                  SERVICE   CREATED          STATUS          PORTS
busybox   busybox   "/bin/sh -c 'sleep 3…"   busybox   41 seconds ago   Up 41 seconds 

3.4 Удаление тестового контейнера

Язык кода:bash
копировать
# удалить
[root@docker-node-1 srv]# docker-compose down
[+] Running 2/2
 ✔ Container busybox        Removed                                                                                                      10.2s 
 ✔ Network busybox_default  Removed                                                                                                       0.1s 

# Проверятьпроверять
[root@docker-node-1 srv]# docker-compose ps
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS

4. Автоматизированные сценарии оболочки

Все действия в статье,Все организовано как автоматизация Скрипт,Из-за ограничения главы,В этом документе не показано.

Участники Планеты, пожалуйста, посетите склад эксклюзивных кодов.Внизнагрузка(Ценный контент, эксклюзивный только для участников Planet)。

5. Часто задаваемые вопросы

5.1 Вопрос 1

  • Проблемное явление
Язык кода:bash
копировать
# docker Служитьзапускатьнеудача
# Проверять journalctl Журнал ошибок
[root@docker-node-1 srv]# journalctl -xe
░░ Subject: Process /usr/local/bin/dockerd could not be executed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ The process /usr/local/bin/dockerd could not be executed and failed.
░░ 
░░ The error number returned by this process is ERRNO.
Apr 21 11:10:44 docker-node-1 (dockerd)[18962]: docker.service: Failed at step EXEC spawning /usr/local/bin/dockerd: Permission denied

# Проверять messages бревно
[root@docker-node-1 srv]# tail /var/log/messages  -n 20
Apr 21 11:10:46 docker-node-1 systemd[1]: Starting Docker Application Container Engine...
Apr 21 11:10:46 docker-node-1 (dockerd)[18966]: docker.service: Failed to locate executable /usr/local/bin/dockerd: Permission denied
Apr 21 11:10:46 docker-node-1 (dockerd)[18966]: docker.service: Failed at step EXEC spawning /usr/local/bin/dockerd: Permission denied
  • Решение
Язык кода:bash
копировать
# закрытие selinux (вступает в силу после перезапуска сервера Служить)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# Временное закрытие (вступает в силу немедленно)
setenforce 0

6. Резюме

В этой статье рассказывается об автономном развертывании с использованием двоичных файлов. Docker и Docker-Compose Подробные процедуры и меры предосторожности. Основное содержание резюмируется следующим образом:

  • Развертывание сервисов Docker в автономном режиме с использованием двоичных файлов
  • Базовая конфигурация установки службы Docker
  • Развертывание Docker-Compose в автономном режиме с использованием двоичных файлов
  • использовать Docker-Compose создаватьприложениепроверятьтест Docker Служить

Отказ от ответственности:

  • Уровень автора ограничен,Несмотря на то, что много раз проверять и исследовать,Мы прилагаем все усилия для обеспечения точности содержания.,Однако могут быть и пропуски。Пожалуйста, дайте свой совет экспертам отрасли.。
  • Содержимое, описанное в этой статье, было проверено только в реальной боевой обстановке.,Читатели могут учиться и извлекать уроки из,ноКатегорически запрещено использовать непосредственно в производственной среде.Автор не несет ответственности за любые проблемы, возникшие в связи с этим.

Получите практическое видео из этой статьи.(пожалуйста, обрати внимание,Асинхронный выпуск документального видео,пожалуйста, сначаласосредоточиться на)

Если вам понравилась эта статья, поделитесь, добавьте в избранное, поставьте лайк и прокомментируйте! Пожалуйста, продолжайте обращать внимание @Operation&Maintenance Юшу, жди новых хороших статей!

Добро пожаловать присоединиться «Планета знаний|Навыки эксплуатации и технического обслуживания» , получи больше KubeSphere, Kubernetes, облачная эксплуатация и обслуживание, автоматизированная эксплуатация и обслуживание, искусственный интеллект Практические навыки, такие как большие модели。В будущей карьере оператора и технического обслуживания я всегда буду сидеть в роли вашего второго пилота.

Заявление об авторских правах

  • Весь контент принадлежит оригиналу,Спасибо, что прочитали и собрали,Пожалуйста, свяжитесь с нами для получения разрешения на перепечатку. Воспроизведение без разрешения запрещено.
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose