Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| system:docker [2024/03/20 11:09] – [Получение образов] mirocow | system:docker [2026/01/12 20:37] (текущий) – 192.168.1.159 | ||
|---|---|---|---|
| Строка 8: | Строка 8: | ||
| ====== Установка ====== | ====== Установка ====== | ||
| - | * [[https:// | + | ===== Ubuntu ===== |
| - | * [[https:// | + | |
| - | + | ||
| - | nano / | + | |
| - | < | + | |
| - | deb https:// | + | |
| - | </ | + | |
| <code bash> | <code bash> | ||
| - | $ sudo groupadd | + | $ apt update && \ |
| - | $ sudo usermod | + | apt install ca-certificates curl gnupg lsb-release -y && \ |
| - | $ newgrp | + | mkdir -p / |
| + | curl -fsSL https:// | ||
| + | echo "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
| + | apt update && \ | ||
| + | apt install | ||
| </ | </ | ||
| - | ====== | + | ===== Debian |
| - | + | ||
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | + | ||
| - | ===== Использование ===== | + | |
| - | + | ||
| - | ==== Работа с образами / Images ==== | + | |
| - | + | ||
| - | + | ||
| - | <note important> | + | |
| - | $ docker image | + | |
| - | </ | + | |
| - | + | ||
| - | === Вывести список образов | + | |
| <code bash> | <code bash> | ||
| - | $ docker | + | $ apt update && \ |
| - | REPOSITORY | + | apt install ca-certificates curl gnupg lsb-release -y && \ |
| - | yii2_php | + | mkdir -p / |
| + | curl -fsSL https:// | ||
| + | echo "deb [arch=$(dpkg --print-architecture) signed-by=/ | ||
| + | apt update && \ | ||
| + | apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y | ||
| </ | </ | ||
| - | === Удалить образ | + | ====== Docker ====== |
| <code bash> | <code bash> | ||
| - | $ docker | + | $ sudo groupadd docker |
| + | $ sudo usermod -aG docker $USER | ||
| + | $ newgrp | ||
| </ | </ | ||
| - | === Удалить все образы | + | ====== Docker Swarm ====== |
| + | Если Docker Swarm создается | ||
| <code bash> | <code bash> | ||
| - | $ sudo docker | + | $ docker |
| - | $ sudo docker rmi -f $(sudo docker images | + | # В вответ |
| + | # Эту команду необходимо будет выполнить на каждой присоединяймой ноде | ||
| </ | </ | ||
| - | === Анализировать образ === | + | Если необходимо присоеденить к уже существующему |
| <code bash> | <code bash> | ||
| - | $ docker | + | $ docker |
| - | [ | + | # В вответ docker swarm join --token SWMTKN-1-54k2k418tw2j0juwm3inq6crp4ow6xogswihcc5azg7oq5qo7e-a3rfeyfwo7d93heq0y5vhyzod 172.31.245.104:2377 |
| - | { | + | # Эту команду необходимо будет выполнить на каждой присоединяймой ноде |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | ], | + | |
| - | " | + | |
| - | " | + | |
| - | ... | + | |
| - | } | + | |
| </ | </ | ||
| - | === Избавляемся от неиспользуемых образов === | + | ====== Настройки ====== |
| - | <code bash>$ docker image prune</ | + | === Log drivers: управление логами === |
| - | === Список образов === | + | nano /etc/docker/daemon.json |
| - | + | < | |
| - | <note tip> | + | { |
| - | + | " | |
| - | < | + | " |
| - | $ docker image ls | + | " |
| - | REPOSITORY | + | " |
| - | yii2_php | + | } |
| - | yii2_nginx | + | } |
| - | yii2_kibana | + | |
| - | yii2_elasticsearch | + | |
| - | yii2_redis | + | |
| - | yii2_mariadb | + | |
| </ | </ | ||
| - | === Получение образов | + | ====== |
| - | + | ||
| - | <note tip> | + | |
| - | $ docker save vorobev4/ | + | |
| - | </ | + | |
| - | + | ||
| - | === Установка образа | + | |
| - | + | ||
| - | <note tip> | + | |
| - | $ docker load / | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Работа с контейнерами / Containers ==== | + | |
| - | + | ||
| - | <note important> | + | |
| - | $ docker | + | |
| - | $ docker exec --help | + | |
| - | </ | + | |
| - | + | ||
| - | === Запуск контейнера === | + | |
| - | + | ||
| - | <note tip> | + | |
| - | + | ||
| - | <code bash>$ docker up</ | + | |
| - | + | ||
| - | === Список запущеных контейнеров === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ docker ps | + | |
| - | CONTAINER ID IMAGE COMMAND | + | |
| - | a50423920e0d | + | |
| - | fa24abd60049 | + | |
| - | </ | + | |
| - | + | ||
| - | === Подсоеденение к контейнеру === | + | |
| - | + | ||
| - | <note tip> | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ sudo docker exec -i -t a50423920e0d /bin/bash | + | |
| - | $ sudo docker exec -i -t a50423920e0d /bin/sh | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Запустить контейнер ==== | + | |
| - | + | ||
| - | <code bash>$ docker start a50423920e0d</ | + | |
| - | + | ||
| - | ==== Остановить контейнер ==== | + | |
| - | + | ||
| - | <code bash>$ docker stop a50423920e0d</ | + | |
| - | + | ||
| - | ==== Пребить контейнер ==== | + | |
| - | + | ||
| - | <code bash>$ docker kill a50423920e0d</ | + | |
| - | + | ||
| - | ===== Использование docker-composer.yml ===== | + | |
| - | + | ||
| - | <note important> | + | |
| - | $ docker-compose | + | |
| - | $ docker-compose exec | + | |
| - | </ | + | |
| - | + | ||
| - | <hidden docker-composer.yml> | + | |
| - | <code yaml> | + | |
| - | version: ' | + | |
| - | services: | + | |
| - | mariadb: | + | |
| - | build: ./ | + | |
| - | restart: always | + | |
| - | environment: | + | |
| - | MYSQL_ROOT_PASSWORD: | + | |
| - | MYSQL_DATABASE: | + | |
| - | MYSQL_USER: skringo | + | |
| - | MYSQL_PASSWORD: | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | expose: | + | |
| - | - ' | + | |
| - | volumes: | + | |
| - | - ' | + | |
| - | redis: | + | |
| - | build: ./ | + | |
| - | restart: always | + | |
| - | environment: | + | |
| - | - REDIS_VERSION=4.0.9 | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | expose: | + | |
| - | - ' | + | |
| - | redis-commander: | + | |
| - | container_name: | + | |
| - | hostname: redis-commander | + | |
| - | image: rediscommander/ | + | |
| - | build: . | + | |
| - | restart: always | + | |
| - | environment: | + | |
| - | - REDIS_HOSTS=local: | + | |
| - | ports: | + | |
| - | - 8081:8081 | + | |
| - | nginx: | + | |
| - | build: ./ | + | |
| - | restart: always | + | |
| - | links: | + | |
| - | - php | + | |
| - | volumes: | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | environment: | + | |
| - | - NGINX_VERSION=1.13.12-1~stretch | + | |
| - | - NGINX_HOST=skringo.loc | + | |
| - | - NGINX_PORT=80 | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | command: 'sh -c " | + | |
| - | elasticsearch: | + | |
| - | build: ./ | + | |
| - | restart: always | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | expose: | + | |
| - | - ' | + | |
| - | environment: | + | |
| - | - ELASTICSEARCH_VERSION=5.6.9 | + | |
| - | - JAVA_ALPINE_VERSION=8.151.12-r0 | + | |
| - | - JAVA_VERSION=8u151 | + | |
| - | - LANG=C.UTF-8 | + | |
| - | - cluster.name=docker-cluster | + | |
| - | - bootstrap.memory_lock=true | + | |
| - | - " | + | |
| - | ulimits: | + | |
| - | memlock: | + | |
| - | soft: -1 | + | |
| - | hard: -1 | + | |
| - | mem_limit: 1g | + | |
| - | kibana: | + | |
| - | build: ./ | + | |
| - | links: | + | |
| - | - elasticsearch | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | php: | + | |
| - | build: ./ | + | |
| - | restart: always | + | |
| - | links: | + | |
| - | - mariadb | + | |
| - | - redis | + | |
| - | - elasticsearch | + | |
| - | ports: | + | |
| - | - ' | + | |
| - | expose: | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | environment: | + | |
| - | - PHP_IDE_CONFIG=serverName=skringo.loc | + | |
| - | volumes: | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | - ' | + | |
| - | + | ||
| - | networks: | + | |
| - | default: | + | |
| - | external: | + | |
| - | name: nginx-proxy | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Подсоеденение к контейнеру ==== | + | |
| - | + | ||
| - | <code bash>$ docker-compose exec php / | + | |
| - | Где php название используемого сервиса / services | + | |
| - | + | ||
| - | ==== Запуск с использованием локального конфига ==== | + | |
| - | + | ||
| - | <code bash>$ docker-compose -f docker-compose.yml -f docker-compose-local.yaml up -d</ | + | |
| - | + | ||
| - | ==== Сети ==== | + | |
| - | + | ||
| - | === Сетевые драйверы === | + | |
| - | + | ||
| - | **bridge**: сетевой драйвер по умолчанию. | + | |
| - | Если вы не указываете драйвер, | + | |
| - | Мостовые сети обычно используются, | + | |
| - | + | ||
| - | **host**: для автономных контейнеров, | + | |
| - | Хост доступен только для служб swarm в Docker версии 17.06 и выше. | + | |
| - | + | ||
| - | **overlay**: | + | |
| - | Вы также можете использовать overlay сети для облегчения связи между сервисом Swarm и автономным контейнером. | + | |
| - | Или между двумя автономными контейнерами на разных демонах Docker. | + | |
| - | Эта стратегия устраняет необходимость выполнять маршрутизацию на уровне ОС между этими контейнерами. | + | |
| - | + | ||
| - | **macvlan**: | + | |
| - | Демон Docker направляет трафик в контейнеры по их MAC-адресам. | + | |
| - | Использование драйвера macvlan иногда является лучшим выбором при работе с устаревшими приложениями. | + | |
| - | Приложениям, | + | |
| - | + | ||
| - | **none**: для этого контейнера отключит все сети. | + | |
| - | Обычно используется в сочетании с пользовательским сетевым драйвером. Ни один не доступен для swarm услуг | + | |
| - | + | ||
| - | === Установка === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ docker network create bridge-network | + | |
| - | $ docker network create --driver=bridge bridge-network | + | |
| - | $ docker network create -d overlay my-multihost-network | + | |
| - | $ docker network create --driver overlay overlay_network | + | |
| - | $ 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 | + | |
| - | $ docker network create nginx-proxy | + | |
| - | </ | + | |
| - | + | ||
| - | === Использование === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ docker run -it --name=test_brifge04 --net brifge04 centos: | + | |
| - | $ docker run -it --name=test_brifge04_2 --net brifge04 --ip=10.1.4.100 centos: | + | |
| - | </ | + | |
| - | + | ||
| - | === Аанализ сетей === | + | |
| - | + | ||
| - | <code bash> | + | |
| - | $ docker network inspect bridge | + | |
| - | $ docker network inspect nginx-proxy | + | |
| - | $ docker network ls | + | |
| - | </ | + | |
| - | + | ||
| - | ====== Особенности работы с MAC OS ====== | + | |
| - | + | ||
| - | Все контейнеры в MAC OS находятся в виртуальной машине qcow2 и находятся по адресу | + | |
| - | / | + | |
| - | + | ||
| - | * где mirocow имя вашего пользователя | + | |
| - | + | ||
| - | <note tip> | + | |
| - | **screen ~/ | + | |
| - | + | ||
| - | ====== Автоматический запуск контейнеров в Debian ====== | + | |
| - | + | ||
| - | ===== System V ===== | + | |
| - | + | ||
| - | nano / | + | |
| - | <code bash> | + | |
| - | #!/bin/sh | + | |
| - | + | ||
| - | ### BEGIN INIT INFO | + | |
| - | # Provides: | + | |
| - | # Required-Start: | + | |
| - | # Required-Stop: | + | |
| - | # Default-Start: | + | |
| - | # Default-Stop: | + | |
| - | # Short-Description: | + | |
| - | ### END INIT INFO | + | |
| - | + | ||
| - | set -e | + | |
| - | + | ||
| - | PROJECT_NAME=portainer | + | |
| - | YAMLFILE=/ | + | |
| - | OPTS=" | + | |
| - | UPOPTS=" | + | |
| - | + | ||
| - | . / | + | |
| - | + | ||
| - | case " | + | |
| - | start) | + | |
| - | log_daemon_msg " | + | |
| - | docker-compose $OPTS up $UPOPTS | + | |
| - | ;; | + | |
| - | + | ||
| - | stop) | + | |
| - | log_daemon_msg " | + | |
| - | docker-compose $OPTS stop | + | |
| - | ;; | + | |
| - | + | ||
| - | reload) | + | |
| - | log_daemon_msg " | + | |
| - | docker-compose $OPTS up $UPOPTS | + | |
| - | ;; | + | |
| - | + | ||
| - | restart) | + | |
| - | docker-compose $OPTS stop | + | |
| - | docker-compose $OPTS up $UPOPTS | + | |
| - | ;; | + | |
| - | + | ||
| - | status) | + | |
| - | status=$(docker ps -aqf " | + | |
| - | if [ ! -z " | + | |
| - | echo " | + | |
| - | fi | + | |
| - | ;; | + | |
| - | + | ||
| - | *) | + | |
| - | log_action_msg " | + | |
| - | exit 1 | + | |
| - | ;; | + | |
| - | esac | + | |
| - | + | ||
| - | exit 0 | + | |
| - | </ | + | |
| - | + | ||
| - | ===== System D ===== | + | |
| - | + | ||
| - | + | ||
| - | nano / | + | |
| - | <code bash> | + | |
| - | [Unit] | + | |
| - | Description=Portainer service with docker-compose | + | |
| - | Requires=docker.service | + | |
| - | After=docker.service | + | |
| - | + | ||
| - | [Service] | + | |
| - | Restart=always | + | |
| - | + | ||
| - | WorkingDirectory=/ | + | |
| - | + | ||
| - | # Remove old containers, network and volumes | + | |
| - | ExecStartPre=/ | + | |
| - | ExecStartPre=-/ | + | |
| - | ExecStartPre=-/ | + | |
| - | + | ||
| - | # Compose up | + | |
| - | ExecStart=/ | + | |
| - | + | ||
| - | # Compose down, remove containers | + | |
| - | ExecStop=/ | + | |
| - | + | ||
| - | [Install] | + | |
| - | WantedBy=multi-user.target | + | |
| - | </ | + | |
| - | ====== Проблемы и их решения ====== | + | |
| - | + | ||
| - | ==== Circular import between fpm and nginx ==== | + | |
| - | + | ||
| - | Возникает при циклическом связывании контейнеров (2-ух сторонее связывание) | + | |
| - | В качестве решенияпроблемы, | + | |
| - | + | ||
| - | <code yaml> | + | |
| - | fpm: | + | |
| - | build: ./ | + | |
| - | links: | + | |
| - | - ambassador: | + | |
| - | nginx: | + | |
| - | build: ./ | + | |
| - | links: | + | |
| - | - ambassador: | + | |
| - | ambassador: | + | |
| - | image: cpuguy83/ | + | |
| - | volumes: | + | |
| - | - "/ | + | |
| - | command: "-name testapp_fpm_1 -name testapp_nginx_1" | + | |
| - | </ | + | |
| - | + | ||
| - | ==== ERROR: Couldn' | + | |
| - | + | ||
| - | скорее всего вам потребуется сделать следующее: | + | |
| - | <code bash>$ docker-machine create --driver=xhyve dev --xhyve-experimental-nfs-share</ | + | |
| - | + | ||
| - | ====== Компоненты ====== | + | |
| - | + | ||
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | + | ||
| - | ====== Репозитории ====== | + | |
| - | + | ||
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | ====== Документация / Статьи ====== | + | |
| - | + | ||
| - | * [[system: | + | |
| - | * http:// | + | |
| - | * [[https:// | + | |
| - | * [[http:// | + | |
| - | * [[https:// | + | |
| - | * [[https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * http:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * http:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * http:// | + | |
| - | * https:// | + | |
| - | * http:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | ====== Другие системы виртуализации ====== | + | * [[docker-socket|Docker Socket]] |
| - | {{topic> | + | ====== Мониторинг ====== |
| + | * [[software: | ||
| + | * [[software: | ||
| + | * [[software: | ||