Обмен технологиями

Сводка Докера

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Подготовьте среду:

  • VMware17
  • Ubuntu18.04(LTS): https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso

1. Предварительный просмотр Докера


Документы, связанные с Docker:

  • Адрес официального сайта докера: https://www.docker.com/
  • Адрес документации докера: https://docs.docker.com/
  • Склад образов докеров: https://hub.docker.com/

Счастливый Докер

1. Что такое докер: это механизм контейнеров с открытым исходным кодом, который позволяет легко управлять контейнерами, причем контейнеры изолируются друг от друга с помощью механизма песочницы.

2. Какую проблему решает докер: решить проблему миграции программной среды.

3. Разница между контейнерами и виртуальными машинами:

  • Контейнер: это абстракция приложения (упаковка кода и зависимостей вместе), занимающая меньше ресурсов, быстрый запуск, легкий и гибкий.
  • Виртуальная машина: это абстракция физического оборудования (преобразование одного сервера в несколько серверов). Она требует много ресурсов, является громоздкой и мощной.

изображение-20240706011000322

4. хранилище докеров:

  • Каталог монтирования, пример: -v /宿主机目录:容器目录
  • Сопоставление томов данных, пример:数据卷:容器目录

5. Сеть Docker: создайте собственную сеть для доступа к имени хоста как к стабильному доменному имени. (Позволяет контейнерам в одной сети взаимодействовать друг с другом)

#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 
-v /app/rd1:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet --name redis01 
bitnami/redis

#从节点
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=slave 
-e REDIS_MASTER_HOST=redis01 
-e REDIS_MASTER_PORT_NUMBER=6379 
-e REDIS_MASTER_PASSWORD=123456 
-e REDIS_PASSWORD=123456 
--network mynet --name redis02 
bitnami/redis
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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


Эта статья основана на установке в среде Ubuntu. Если у вас нет разрешений, просто добавьте sudo впереди.

1. Отключаем фаервол (нет необходимости вручную выставлять порт для последующего внешнего доступа, что удобно для тестирования)

sudo ufw disable

#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable
  • 1
  • 2
  • 3
  • 4
  • 5

2. Установите докер

#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc

#更新软件包
sudo apt-get update

#安装一些工具
sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg-agent 
    software-properties-common

#安装docker
sudo apt install docker.io 

#验证dokcer是否安装成功
docker --version

#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now

#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3. Общие команды Docker


изображение-20240706032721566

1. Управление статусом докер-сервиса:

  • systemctl status docker: просмотр рабочего состояния докера.
  • systemctl остановить докер: закрыть докер
  • systemctl запустить докер: запустить докер
  • systemcl перезапустить докер: перезапустить докер
  • systemctl Enable Docker: настроить автоматический запуск Docker при загрузке.

2. Управление образами Docker:

  • Изображение для поиска: имя изображения для поиска в Docker
  • Извлечь изображение: docker pull Имя изображения: тег Если тег не указан, будет извлечено последнее
  • Просмотр изображений: изображения докера
  • Удалить изображение: имя образа docker rmi: тег

3. Управление Docker-контейнером:

  • Создайте контейнер: docker run -di --name=имя контейнера имя изображения: тег
  • Закройте контейнер: имя контейнера остановки docker
  • Запустите контейнер: имя контейнера запуска Docker.
  • Удалить контейнер: имя контейнера docker rm
  • Посмотреть контейнер:
    • docker ps -a Просмотр всех контейнеров, включая неработающие
    • docker ps для просмотра запущенных контейнеров
  • Введите контейнер: docker exec -it имя контейнера/bin/bash

4. Объем данных Docker:

  • Объем данных: это папка, управляемая Docker.

  • Использование томов данных. Вы можете привязать том данных к пути в контейнере, чтобы реализовать двустороннюю автоматическую передачу файлов между контейнером и хостом.

    Поместите файл в том данных хоста: докер автоматически синхронизирует файл с контейнером.

    Если файлы в контейнере изменятся: docker автоматически синхронизирует их с объемом данных хоста.

  • Команды работы с томом данных:

    Получение списка томов данных: Docker Volume ls

    Создайте том данных: том Docker создайте имя тома данных.

    Просмотр сведений о томе данных (фактический путь): том Docker, проверка имени тома данных.

    Удалить том данных: том Docker, имя тома данных rm

  • Создайте контейнер и привяжите том данных:

    docker run -di --name=имя контейнера -v имя тома данных: путь в образе контейнера имя: тег

    docker run -di --name=имя контейнера -v путь на хосте: путь в образе контейнера имя: тег

    Примечание. Все пути в параметре -v должны быть абсолютными.

5. Зеркальное резервное копирование:

  • Экспортировать изображение: docker save -o имя файла имя изображения
  • Загрузите изображение: docker load -i xxx.tar

4. Dockerfile


Документация: https://docs.docker.com/reference/dockerfile/.

Роль Dockerfile: создание пользовательских образов.

Dockerfile основан на базовом образе и записывает серию инструкций docker. Каждая инструкция создает слой образа. С помощью этих инструкций слой за слоем наконец создается целевой образ.

Общие инструкцииэффект
ОТУкажите базовую среду образа
БЕГАТЬЗапустить пользовательскую команду
КМДКоманда или параметры запуска контейнера
ЭТИКЕТКАПользовательские этикетки
РАЗОБЛАЧАТЬУкажите открытый порт
ОКРУЖАЮЩАЯ СРЕДАпеременные среды
ДОБАВЛЯТЬДобавляем файлы в изображение
КОПИЯСкопировать файлы в изображение
ВХОДНАЯ ТОЧКАИсправлена ​​команда запуска контейнера
ОБЪЕМобъем данных
ПОЛЬЗОВАТЕЛЬУкажите пользователей и группы пользователей
WORKDIRУкажите рабочий каталог по умолчанию
АРГУкажите параметры сборки

Пример:

#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar   #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]  #运行命令

# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. Оркестрация сервиса


Оркестрация служб или оркестрация контейнеров. Управляйте контейнерами в пакетном режиме в соответствии с определенными бизнес-правилами.

Docker Compose — это инструмент оркестрации для определения и запуска нескольких контейнеров Docker.

Несколько контейнеров можно запустить одной командой. В основном он решает проблему управления контейнерами и их оркестрации.

Использование Docker Compose состоит из трех шагов:

  1. Используйте Dockerfile, чтобы определить рабочую среду (если у вас уже есть зеркало, вы можете пропустить этот шаг)
  2. использоватьdocker-compose.ymlОпределите сервисы, составляющие приложение
  3. бегатьdocker-compose up -dЗапустить приложение

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

# 下载docker compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置权限
chmod +x /usr/local/bin/docker-compose

# 查看版本 
docker-compose -version
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Если вы хотите удалить docker-compose, вы можете выполнить следующую команду:

# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
  • 1
  • 2

Общие команды для docker-compose:

# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!

#创建容器并后台启动
docker-compose up -d

#直接启动容器
docker-compose start

#其它命令:
docker-compose help # 查看帮助
docker-compose stop  # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Пример:

1. Создайте каталог docker-compose.

mkdir ~/docker-compose
cd ~/docker-compose
  • 1
  • 2

2. Напишитеdocker-compose.yamlдокумент

version: "3.0"
services:
  redis:
    container_name: redis 
    image: redis:5.0
    ports:
      - 6379:6379
  nginx:
    container_name: nginx
    image: nginx:1.14.2
    ports:
      - 80:80
    volumes:
      - /root/volumes/nginx/html:/usr/share/nginx/html
  tomcat:
    container_name: tomcat
    image: tomcat:8.5.88
    ports:
      - 8080:8080
    volumes:
      - /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3. Старт

# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose

# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d
  • 1
  • 2
  • 3
  • 4
  • 5