Информация:
|
Docker - это средство упаковки, доставки и запуска приложения. https://www.docker.com/ - оф сайт https://habr.com/ru/post/277699/ - введение https://www.8host.com/blog/ustanovka-i-ispolzovanie-docker-v-debian-9/ - установка и инструкция https://linux-notes.org/rabota-s-setju-networking-v-docker/ - установка и инструкция https://sysadmin.ru/articles/ustanovka-docker-v-linux - установка и инструкция https://docs.docker.com/docker-for-windows/install/ - установка на windows https://docs.docker.com/docker-for-mac/install/ - установка на MACOS https://habr.com/ru/post/277699/ https://www.digitalocean.com/community/tutorials/docker-ru - хороший гайд для новичков |
Установка:
|
Ставить будем на debian 11 apt install docker docker-compose |
Основные команды кратко:
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 36 37 38 39 40 41 42 43 44 45
|
# справочная информация docker --help # список доступных команд docker <command> --help # информация по команде docker --version # версия Docker docker info # общая информация о системе # работа с образами docker search debian # поиск образов по ключевому слову debian docker pull ubuntu # скачивание последней версии (тег по умолчанию latest) официального образа ubuntu (издатель не указывается) из репозитория по умолчанию docker.io/library docker pull prom/prometheus # скачивание последней версии (latest) образа prometheus от издателя prom из репозитория docker.io/prom docker pull docker.io/library/ubuntu:18.04 # скачивание из репозитория docker.io официального образа ubuntu с тегом 18.04 docker images # просмотр локальных образов docker rmi <image_name>:<tag> # удаление образа. Вместо <image_name>:<tag> можно указать <image_id>. # Для удаления образа все контейнеры на его основе должны быть как минимум остановлены docker rmi $(docker images -aq) # удаление всех образов # работа с контейнерами docker run hello-world # Hello, world! в мире контейнеров docker run -it ubuntu bash # запуск контейнера ubuntu и выполнение команды bash в интерактивном режиме docker run --name docker-getting-started --publish 8080:80 docker/getting-started # запуск контейнера gettind-started с отображением (маппингом) порта 8080 хоста на порт 80 внутрь контейнера docker run --detach --name mongodb docker.io/library/mongo:4.4.10 # запуск контейнера mongodb с именем mongodb в фоновом режиме. Данные будут удалены при удалении контейнера! docker ps # просмотр запущенных контейнеров docker ps -a # просмотр всех контейнеров (в том числе остановленных) docker stats --no-stream # просмотр статистики docker start alpine # создание контейнера из образа alpine docker start <container_name> # запуск созданного контейнера. Вместо <container_name> можно указать <container_id> docker start $(docker ps -a -q) # запуск всех созданных контейнеров docker stop <container_name> # остановка контейнера. Вместо <container_name> можно указать <container_id> docker stop $(docker ps -a -q) # остановка всех контейнеров docker rm <container_name> # удаление контейнера. Вместо <container_name> можно указать <container_id> docker rm $(docker ps -a -q) # удаление всех контейнеров # система docker system info # общая информация о системе (соответствует docker info) docker system df # занятое место на диске docker system prune -af # удаление неиспользуемых данных и очистка диска |
Основные команды подробней:
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
### https://hub.docker.com/ - тут ищем контейнеры docker --help - помощь docker ps - показать бегущие контейнеры docker ps --all - показать бегущие контейнеры и остановленные Загрузка: docker image ls - показать загруженные образы контейнеров docker image pull nginx:1.20.1-alpine - скачать контейнер nginx:1.20.1-alpine docker image pull nginx - скачать контейнер nginx, будет скачан самый последний образ Запуск: docker run \ --name nginx \ -v /srv/nginx/:/usr/share/nginx/html \ -p 80:80 \ -d nginx Запуск: docker run nginx:1.18 - запуск контейнера nginx:1.18, контейнер будет запущен в текущей консоли docker run -p 7777:80 nginx - запуск контейнера nginx, docker run -d -p 7777:80 nginx - запуск в режиме демона docker run -d --rm --name nginx -p 8888:80 nginx:1.18 - опция (--rm) говорит о том что при завершение контейнера он будет удален Подключение: docker ps -a docker exec -it ID_CONTEINER bash - подключится к контейнеру ID_CONTEINER, используем bash внутри контейнера docker exec -it ID_CONTEINER sh - подключится к контейнеру ID_CONTEINER, используем sh внутри контейнера docker exec -it 263d85d77e14 bash docker exec -it 263d85d77e14 sh Информация: docker ps -a docker inspect ID_CONTEINER docker inspect 2a420e4ceb84 ps - uax |grep docker Логи: docker ps -a docker logs -f ID_CONTEINER docker logs -f 12622b1bd1a8 Отключение и удаление контейнеров: docker ps -a docker stop ID_CONTEINER docker rm ID_CONTEINER Отключение и удаление всех контейнеров: docker ps -a | awk '{print $1}' docker stop $(docker ps -a | awk '{print $1}') docker rm $(docker ps -a | awk '{print $1}') Docker compose: mkdir test-docker - создали каталог cd test-docker/ - перешли в каталог vim test.yaml - отредактировали docker-compose up -d - запуск в режиме демона docker-compose down - выключить |
Пример создания своего контейнера с python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
0. Создали директорию test0 mkdir test0 cd test0 1. Создали файл app.py cat > app.py << "EOF" print("Hello, World!") EOF 2. Создали файл Dockerfile cat > Dockerfile << "EOF" FROM python:3.6 RUN mkdir -p /usr/src/app/ WORKDIR /usr/src/app/ COPY . /usr/src/app/ CMD ["python", "app.py"] EOF 3. Выполнили сборку контейнера: docker build -t hellow-world . |
docker пример запуска mariadb + adminer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
Скачиваем образ mariadb: docker pull mariadb Смотрим доступные образы: docker images Запускаем контейнер mariadb с параметрами: -d - запуск в режиме демона -p - проброс портов -name - имя контейнера docker run -p 127.0.0.1:3306:3306 --name mariadb -e MARIADB_ROOT_PASSWORD=superoass -d mariaddb Проверяем что там запустилось: docker ps Запускаем контейнер adminer: --link - просим докер добавить запись в /etc/hosts docker run --name adminer --link mariadb:db -p 8080:8080 -d adminer Подключаемся к контейнер: -ti - команда t термина, команда i не отпускать терминал docker exec -ti adminer sh Cмотрим что там у нас в /etc/hosts: cat /etc/hosts docker stop docker rm docker rmi |
Dockerfile
|
vim Dockerfile -------------------- # syntax=docker/dockerfile:1 FROM ubuntu:18.04 COPY . /app RUN make /app CMD python /app/app.py --------------------- docker build -f /path/to/a/Dockerfile |
dockerfile from python
dockerfile from apline + python + 8 слоев
|
FROM apline RUN apk add --update-cache RUN apk add python3 RUN apk add pyhton3-dev RUN apk add py-pip RUN apk add build-base RUN pip install virtualenv RUN rm -rf /var/cache/apk/* |
dockerfile from apline + python + уменьшаем кол-во слоев (2 слоя)
|
FROM apline RUN apk add --update-cache \ python3 \ pyhton3-dev \ py-pip \ build-base \ && pip install virtualenv \ && rm -rf /var/cache/apk/* |
dockerfile from golang:alpine
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
FROM golang:apline AS builder WORKDIR /src COPY go.mod . COPY go.sum . RUN go mod download COPY main.go FROM alpine:3.15 WORKDIR /app COPY --from=bulder /src/hello-docker /app/hello-docker ENTRYPOINT ["/app/hello-docker"] |
Docker compose:
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 36 37 38 39 40 41 42
|
mkdir test-docker - создали каталог cd test-docker/ - перешли в каталог vim test.yaml - отредактировали ------------------------------------- version: "2.2" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {} wordpress_data: {} ------------------------------------- docker-compose up - запустится, ctrl+с прервет выполнение docker-compose up -d - запустить в режиме демона docker-compose down - выключить !!! Внимание docker-compose down --volumes - удалит еще и данные контейнера |
Чем docker не является
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Docker часто путают с Vagrant’ом или OpenVZ, или даже VirtualBox’ом. Docker это всего-лишь user-space демон на языке Go, который умело жонглирует уже существующими технологиями ядра Linux. Не вагрант Вагрант занимается тем, что управляет виртуальными машинами (или, более приближенно к теме хостинга, виртуальными серверами). Так же как и у docker'а, у вагранта есть целая библиотека образов виртуальных машин, и он как и docker умеет их снепшотить, скачивать и заливать, настраивать и запускать. Vagrant управляет полноценными тяжелыми виртуальными машинами запущенными, например, в VirtualBox, VMWare, DigitalOcean, AWS, да где только он их не запускает. Шикарная вещь, этот вагрант, если вам нужна полноценная виртуальная машина с состоянием внутри. Не виртуальная машина И конечно, docker вовсе не является новой технологией (пара)виртуализации, как например KVM/Qemu, VirtualBox/VMWare/Parallels, XEN, etc. Docker-демон (не путать с консольной командой docker) работает только в Линуксе (и скоро в винде) поверх линуксовых же контейнеров. А контейнеры, в свою очередь, не являются полноценной виртуальной средой, так как они делят общее запущенное ядро одной физической машины. Docker состоит из трех частей: Docker daemon Docker Docker Hub |
Docker daemon:
|
docker daemon — сердце docker'а. Это демон работающий на хост-машине и умеющий скачивать и заливать образы, запускать из них контейнеры, следить за запущенными контейнерами, собирать логи и настраивать сеть между контейнерами (а с версии 0.8 и между машинами). А еще именно демон создает образы контейнеров, хоть и может показаться, что это делает docker-client. |
Docker
|
docker это консольная утилита для управления docker-демоном по HTTP. Она устроена очень просто и работает предельно быстро. Вопреки заблуждению, управлять демоном docker'а можно откуда угодно, а не только с той же машины. В сборке нового образа консольная утилита docker принимает пассивное участие: архивирует локальную папку в tar.gz и передает по сети docker-daemon, который и делает всё работу. Именно из-за передачи контекста демону по сети лучше собирать тяжелые образы локально. |
Docker Hub:
|
Docker Hub централизованно хранит образы контейнеров. Когда вы пишете docker run ruby docker скачивает самый свежий образ с руби именно из публичного репозитория. Изначально хаба не было, его добавили уже после очевидного успеха первых двух частей. |
Установка:
|
apt update - обновляем список пакетов apt upgrade - обновляем пакеты apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common - устанавливаем пакеты curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" - добавляем репозиторий apt update - обновляем список пакетов apt-cache policy docker-ce - проверяем доступность пакетов docker apt install docker-ce - устанавливаем docker sudo systemctl status docker - проверяем что docker запущен |
Добавление пользователя в группу docker:
|
usermod -aG docker user_name |
Добавление пользователя в группу docker:
|
$ sudo usermod -aG docker ${USER} - добавить текущего пользователя $ su - ${USER} $ id -nG - проверить |
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
|
docker info - общая информация docker run hello-world - первая команда которой обычно проверяют успешность установки docker docker search ubuntu - поиск образов ubuntu docker images - показать установленные образы docker ps -a - показать все контейнеры docker start ID_контейнера docker stop ID_контейнера Проверяем что у нас установлено: https://hub.docker.com/ - репозиторий sudo docker version - посмотреть версию докера sudo docker login - выполняем авторизацию на докер sudo docker images - посмотреть установленные образы sudo docker ps -a - посмотреть что сейчас выполняется в докер Еще пример: docker run -it -p 8080:80 yeasy/simple-web Флаг -i необходим, чтобы контейнер запустился в интерактивном режиме. Флаг -t необходим для переноса ввода и вывода в контейнер, то есть если мы используем флаг -t для запуска контейнера мы окажемся внутри него. Флаг -p создает проброс портов между нашим устройством и контейнером, это необходимо для доступа к сети контейнера. В нашем случае для доступа к 80 порту внутри контейнера необходимо обратиться к 8080 порту на нашем устройстве. docker ps -a - посмотрим какие у нас сейчас есть контейнеры docker stop <container_id или container_name> - остановка контейнера docker start <container_id или container_name> - запуск контейнера docker rm <container_id или container_name> - удаление контейнера |
docker help:
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 36 37 38 39 40
|
attach - Присоедините локальные стандартные потоки ввода, вывода и ошибок к работающему контейнеру build - Создать образ из Dockerfile commit - Создать новый образ из изменений контейнера cp - Копировать файлы / папки между контейнером и локальной файловой системой create - Создать новый контейнер diff - Проверять изменения в файлах или каталогах в файловой системе контейнера events - Получить события в реальном времени с сервера exec - Запустить команду в работающем контейнере export - Экспортировать файловую систему контейнера как архив tar history - Показать историю изменений images - Показать доступные образы import - Импорт содержимое из архива, чтобы создать образ файловой системы info - Отображение информации о системе ( сколько контейнеров, работает, и т.д.) inspect - Показать подробную информации об объектах Docker kill - Завершить один или несколько работающих контейнеров load - Загрузить образ из архива tar или STDIN login - вход в реестор Docker logout - выход из реестра Docker logs - Получить журналы контейнера pause - Приостановить все процессы в одном или нескольких контейнерах port - Список сопоставлений портов или конкретное сопоставление для контейнера ps - Список контейнеров pull - Вытащить изображение или хранилище из реестра push - Добавить изображение или репозиторий в реестр rename - Переименовать контейнер restart - Перезапустите один или несколько контейнеров rm - Удалить один или несколько контейнеров rmi - Удалить одно или несколько изображений run - Запустите команду в новом контейнере save - Сохраните одно или несколько изображений в архив tar (по умолчанию передается в STDOUT) search - Поиск образов Docker Hub start - Запустить один или несколько остановленных контейнеров stats - Отобразить живой поток статистики использования ресурсов контейнера (ов) stop - Остановите один или несколько работающих контейнеров tag - Создать тег TARGET_IMAGE, который ссылается на SOURCE_IMAGE top - Отобразить запущенные процессы контейнера unpause - Отмена приостановки всех процессов в одном или нескольких контейнерах update - Обновить конфигурацию одного или нескольких контейнеров version - Показать информацию о версии Docker wait - ???что???Блокируйте, пока один или несколько контейнеров не остановятся, затем напечатайте их коды выхода |
Получить список опций конкретной под команды:
|
docker docker-subcommand --help |
docker подключение к контейнеру
|
docker create -it ubuntu:16.04 bash - создали контейнер docker ps -a - посмотрели все контейнеры docker start ИД_контейнера - запустили контейнер docker attach ИД_контейнера - подключились к контейнеру |
docker compose установка:
|
compose - требуется для сборки контейнеров https://docs.docker.com/compose/install/ - офф. инструкция sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version |
Создание образа докер:
|
sudo docker run -it --name Имя_будущего_образа --hostname Имя_будущего_образа ubuntu bash - создаем контейнер с ubuntu и открываем консоль ----------------------------------------------------------------------------------------- apt update && apt upgrade -y - обновим репозиторий apt install cowsay - установим нужное приложение ln -s /usr/games/cowsay /usr/bin/cowsay - !!! создаем символьную ссылку для запуска приложения exit - входим из контейнера ----------------------------------------------------------------------------------------- sudo docker commit Имя_будущего_образа Наш_логин_в_докер/Имя_будущего_образа - создаем образ sudo docker run Наш_логин_в_докер/Имя_будущего_образа cowsay "LOL" - проверяем работоспособность нашего образа sudo docker run Наш_логин_в_докер/Имя_образа /usr/games/cowsay "LOL" - !!! если забыли создать символьную ссылку придется написать полный путь до приложения /usr/games/cowsay sudo docker login - выполняем авторизацию на докер sudo docker push Наш_логин_в_докер/Имя_будущего_образа - собственно загружаем наш образ в репозиторий докер |
Запуск нашего контейнера:
|
sudo docker run Наш_логин_в_докер/Имя_образа cowsay "TEST" |
docker создание образов / докер файл / dockerfile / настройка образа
|
mkdir Папка_для_образа - создаем папку cd Папка_для_образа - переходим в папку для образа touch dockerfile - создаем файл dockerfile vim dockerfile - открываем для редактирования -------------- FROM ubuntu - определяем ос для образа ( обязательно ) RUN apt update && apt upgrade -y && apt install cowsay -y && ln -s /usr/games/cowsay /usr/bin/cowsay - выполняем установку программы cowsay и настраиваем ее -------------- sudo docker login - выполняем авторизацию на докер sudo docker build -t Наш_логин_в_докер/Имя_будущего_образа . - !!!в конце точка!!! выполняем находясь в каталоге Папка_для_образа и образ будет собран и отправлен в репозиторий sudo docker run Наш_логин_в_докер/Имя_будущего_образа cowsay "LOL" - проверяем работоспособность нашего образа |
модификация образа:
|
vim dockerfile - открываем для редактирования -------------- FROM ubuntu - определяем ос для образа ( обязательно ) MAINTAINER имя_автора_образа почта@автора.образа - эта строчка ничего не делает \ инфо для связи с автором образа RUN apt update && apt upgrade -y && apt install cowsay -y && ln -s /usr/games/cowsay /usr/bin/cowsay - выполняем установку программы cowsay и настраиваем ее ENTRYPOINT ["cowsay"] - указываем точку входа - позволит при запуске ( sudo docker run Наш_логин_в_докер/Имя_будущего_образа cowsay "LOL" ) не писать cowsay -------------- sudo docker build -t Наш_логин_в_докер/Имя_будущего_образа . - !!!в конце точка!!! выполняем находясь в каталоге Папка_для_образа и образ будет собран и отправлен в репозиторий sudo docker run Наш_логин_в_докер/Имя_будущего_образа "LOL" - проверяем работоспособность нашего образа sudo docker push Наш_логин_в_докер/Имя_будущего_образа - загружаем наш образ в репозиторий докер / реестор |
Еще пример своего образа sampleapp
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
0. ставим python и flask apt install python3 pip3 install flask 1. Создаем каталог mkdir sample_app.py 2. Переходим в sample_app.py и создаем файл sample_app.py cd sample_app.py vim sample_app.py ----------------- from flask import Flask from flask import request from flask import render_template sample = Flask(__name__) @sample.route("/") def main(): return render_template("index.html") if __name__ == "__main__": sample.run(host="0.0.0.0", port=8080) ----------------- 3. Cоздание, сборка, запуск контейнера vim sample_app.sh #!/bin/bash ----------- mkdir tempdir mkdir tempdir/template mkdir tempdir/static cp sample_app.py tempdir/. cp -r templates/* tempdir/templates/. cp -r static/* tempdir/static/. echo "From python" >> tempdir/Dockerfile echo "RUN pip install flask" >> tempdir/Dockerfile echo "COPY ./static /home/myapp/static" >> tempdir/Dockerfile echo "COPY ./tamplate /home/myapp/templates/" tempdir/Dockerfile echo "COPY sample_app.py /home/myapp/" >> tempdir/Dockerfile echo "EXPOSE 8080" >> tempdir/Dockerfile echo "CMD python3 /home/myapp/sample_app.py" >> tempdir/Dockerfile cd tempdir docker build -t sampleapp . docker - rub -d -p 8080:8080 --name samplerunning sampleapp docker ps -a ----------- 4. Запуск скрипта sample_app.sh bash sample_app.sh |
Docker работа с сетью / networking / драйверы:
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 36 37 38 39 40
|
bridge: Мост, — это сетевой драйвер по умолчанию. Бридж сеть используется, когда ваши приложения запускаются в автономных контейнерах, которые должны взаимодействовать между собой (Наглядный пример Nginx + MySQL). Лучше всего использовать для связи нескольких контейнеров на одном и том же Docker хосте. Можно юзать docker-compose и выберать даную сеть для такой связки host: Хост, — это сетевой драйвер для автономных контейнеров (удаленная сетевая изоляция между контейнером и Docker хостом). Данный драйвер доступен только для docker-swarm с поддержкой Docker 17.06 и выше. Лучше всего использовать, когда сетевой стек не должен быть изолирован от хоста Docker, но вы хотите, чтобы другие аспекты контейнера были изолированы. overlay/overlay2: Оверлей (Наложенная сеть), или наложение сетей — это сетевой драйвер для соединения несколько демонов Docker между собой и которые позволяют docker-swarm службам взаимодействовать друг с другом. Вы также можете использовать оверлейные сети для облегчения связи между docker-swarm и автономным контейнером или между двумя отдельными контейнерами на разных Docker демонах. Эта стратегия устраняет необходимость выполнения маршрутизации на уровне ОС между этими контейнерами. Лучше всего использовать, когда вам нужны контейнеры, работающие на разных Docker хостах для связи, или, когда несколько приложений работают вместе, используя docker-swarm. macvlan: Маквлан,- это сетевой драйвер, который позволяют назначать MAC-адрес контейнеру, делая его отображаемым как физическое устройство в вашей сети. Docker демон направляет трафик на контейнеры по их MAC-адресам. Использование macvlan драйвера иногда является лучшим выбором при работе с устаревшими приложениями, которые ожидают, что они будут напрямую подключены к физической сети. Лучше всего использовать, когда вы переходите с VM/дедикейта на контейнеры или хотите, чтобы ваши контейнеры выглядели как физические хосты в вашей сети, каждый с уникальным MAC-адресом. none: Нон,- это сетевой драйвер, который умеет отключать всю сеть для контейнеров. Обычно используется в сочетании с пользовательским сетевым драйвером. Network plugins: Вы можете установить и использовать сторонние сетевые плагины с Docker контейнерами. Эти плагины доступны в Docker Store или у сторонних поставщиков услуг. Сторонние сетевые плагины позволяют интегрировать Docker со специализированными сетевыми стеками. |
docker network ls
|
docker network ls - просмотреть сети в Docker NETWORK ID — При создании сети, ей присваивается ID. Так это собственно идентификатор сети. NAME — Имя сети. Можно задать произвольное имя. DRIVER — Используемый драйвер для созданной сети. SCOPE — Где используется. |
docker network create —driver=NAME NAME-NET
|
docker network create bridge-network - создать сеть bridge-network в Docker (по умолчанию создается bridge) docker network create --driver=bridge bridge-network - создать сеть bridge-network в Docker (--driver можно указать bridge, overlay, host, none ) docker network create -d overlay my-multihost-network - создать сеть оверлей docker network create --driver=overlay overlay_network - создать сеть оверлей docker network create -d macvlan --subnet=172.16.86.0/24 --gateway=172.16.86.1 -o parent=eth0 my-macvlan-net - создать сеть macvlan docker network create --subnet 10.1.0.0/16 --gateway=10.1.0.1 --ip-range 10.1.4.0/24 --driver=bridge --label=host4networks brifge04 - создать сеть bridge docker run -it --name=test_brifge04 --net brifge04 centos:centos7 /bin/bash - проверка docker run -it --name=test_brifge04_2 --net brifge04 --ip=10.1.4.100 centos:centos7 /bin/bash - проверка контейнеру даем статический ip |
docker network connect | disconnect
|
docker network connect YOUR_NETWORK YOUR_CONTAINER - подключить контейнер(ы) к сети в Docker docker network disconnect YOUR_NETWORK YOUR_CONTAINER - отключить контейнер(ы) от сети в Docker YOUR_NETWORK — Сеть YOUR_CONTAINER — Контейнер |
docker network inspect
|
docker network inspect bridge-network - позволяет получить подробную информацию о сети с имене bridge-network в Docker |
docker network rm
|
docker network rm YOUR_NETWORK - удаление сети YOUR_NETWORK в Docker |
docker контейнеры использование внешних каталогов / томов:
|
Контейнеры или протокол без сохранения состояния? Каждый контейнер изолирован и не сохраняет состояние. Это означает, что после удаления контейнера его содержимое будет удалено навсегда. docker create -it -v $(pwd):/var/www ubuntu:latest bash При создании нового контейнера добавьте флаг -v, чтобы указать, какой том создать. Эта команда привяжет текущий рабочий каталог на компьютере к директории /var/www внутри контейнера. |