Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
system:docker [2018/11/17 17:52] – [Автоматический запуск контейнеров в Debian] mirocowsystem:docker [2025/01/22 18:24] (текущий) 192.168.1.104
Строка 5: Строка 5:
 {{https://habrastorage.org/files/67f/73a/551/67f73a551a254c19854adf3b4665a7bb.png?300}} {{https://habrastorage.org/files/67f/73a/551/67f73a551a254c19854adf3b4665a7bb.png?300}}
  
-| VIRTUAL MACHINES                                                                                                                                                  | CONTAINERS                                                                                                                                                                                                                                                                                                       | 
-| Virtual machines include the application, the necessary binaries and libraries, and an entire guest operating system -- all of which can amount to tens of GBs.   | Containers include the application and all of its dependencies --but share the kernel with other containers, running as isolated processes in user space on the host operating system. Docker containers are not tied to any specific infrastructure: they run on any computer, on any infrastructure, and in any cloud.   | 
  
 ====== Установка ====== ====== Установка ======
  
-  * https://www.docker.com/community-edition#/download :!: +===== Ubuntu =====
-  * https://store.docker.com/editions/community/docker-ce-desktop-mac :!: +
-  * https://docs.docker.com/engine/installation/linux/debian/+
  
-nano /etc/apt/sources.list +<code bash> 
-<code> +$ apt update && \ 
- deb https://apt.dockerproject.org/repo debian-stretch main+apt install ca-certificates curl gnupg lsb-release -y && \ 
 +mkdir -p /etc/apt/keyrings && \ 
 +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ 
 +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ 
 +apt update && \ 
 +apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
 </code> </code>
 +
 +===== Debian =====
 +
 +<code bash>
 +$ apt update && \
 +apt install ca-certificates curl gnupg lsb-release -y && \
 +mkdir -p /etc/apt/keyrings && \
 +curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
 +echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
 +apt update && \
 +apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
 +</code>
 +
 +====== Docker ======
 +
 +<code bash>
 +$ sudo groupadd docker
 +$ sudo usermod -aG docker $USER
 +$ newgrp docker
 +</code>
 +
 +====== UI ======
 +
 +  * https://github.com/DockStation/dockstation :!:
 +  * https://github.com/felixgborrego/simple-docker-ui :!:
 +  * https://github.com/docker/kitematic
 +  * https://github.com/bcicen/ctop
 +  * https://github.com/portainer/portainer
 +  * https://github.com/kubernetes/kubernetes
  
 ===== Использование ===== ===== Использование =====
 +
 +  * [[Dockerfile]]
 +  * [[docker-compose.yml]]
  
 ==== Работа с образами / Images ==== ==== Работа с образами / Images ====
Строка 40: Строка 73:
 <code bash> <code bash>
 $ docker image rm 6a950c96e01d $ docker image rm 6a950c96e01d
 +</code>
 +
 +=== Удалить все образы ===
 +
 +<code bash>
 +$ sudo docker rm -f $(sudo docker ps -a -q)
 +$ sudo docker rmi -f $(sudo docker images -q)
 </code> </code>
  
Строка 76: Строка 116:
 yii2_mariadb                 latest              03ddc39bcf15        27 hours ago        204MB yii2_mariadb                 latest              03ddc39bcf15        27 hours ago        204MB
 </code> </code>
 +
 +=== Получение образов ===
 +
 +<note tip>Для справки \\ <code bash>
 +$ docker save vorobev4/mule-runtime-ee:v3-4.4.0 > /tmp/mule-runtime-ee.tar
 +</code></note>
 +
 +=== Установка образа ===
 +
 +<note tip>Для справки \\ <code bash>
 +$ docker load /tmp/mule-runtime-ee.tar
 +</code></note>
  
 ==== Работа с контейнерами / Containers ==== ==== Работа с контейнерами / Containers ====
Строка 86: Строка 138:
 === Запуск контейнера === === Запуск контейнера ===
  
-<note tip>Необходим Dockerfile</note>+<note important>Необходим Dockerfile</note>
  
 <code bash>$ docker up</code> <code bash>$ docker up</code>
Строка 241: Строка 293:
  
 <code bash>$ docker-compose -f docker-compose.yml -f docker-compose-local.yaml up -d</code> <code bash>$ docker-compose -f docker-compose.yml -f docker-compose-local.yaml up -d</code>
 +
 +==== Сети ====
 +
 +=== Сетевые драйверы ===
 +
 +**bridge**: сетевой драйвер по умолчанию.
 +Если вы не указываете драйвер, это тип сети, которую вы создаете.
 +Мостовые сети обычно используются, когда ваши приложения работают в автономных контейнерах, которые должны взаимодействовать.
 +
 +**host**: для автономных контейнеров, удаляет сетевую изоляцию между контейнером и Docker-хостом.
 +Хост доступен только для служб swarm в Docker версии 17.06 и выше.
 +
 +**overlay**: overlay сети соединяют несколько демонов Docker вместе и позволяют сервисам Swarm связываться друг с другом.
 +Вы также можете использовать overlay сети для облегчения связи между сервисом Swarm и автономным контейнером.
 +Или между двумя автономными контейнерами на разных демонах Docker.
 +Эта стратегия устраняет необходимость выполнять маршрутизацию на уровне ОС между этими контейнерами.
 +
 +**macvlan**: сети Macvlan позволяют назначать MAC-адрес контейнеру, делая его физическим устройством в вашей сети.
 +Демон Docker направляет трафик в контейнеры по их MAC-адресам.
 +Использование драйвера macvlan иногда является лучшим выбором при работе с устаревшими приложениями.
 +Приложениям, которые ожидают прямого подключения к физической сети, а не маршрутизации через сетевой стек хоста Docker.
 +
 +**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>
 +
 +=== Использование ===
 +
 +<code bash>
 +$ 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
 +</code>
 +
 +=== Аанализ сетей ===
 +
 +<code bash>
 +$ docker network inspect bridge
 +$ docker network inspect nginx-proxy
 +$ docker network ls
 +</code>
  
 ====== Особенности работы с MAC OS ====== ====== Особенности работы с MAC OS ======
Строка 254: Строка 356:
 ====== Автоматический запуск контейнеров в Debian ====== ====== Автоматический запуск контейнеров в Debian ======
  
-===== System.V =====+===== System V =====
  
 nano /etc/init.d/portainer nano /etc/init.d/portainer
 <code bash> <code bash>
 +#!/bin/sh
 +
 +### BEGIN INIT INFO
 +# Provides: portainer
 +# Required-Start: $docker
 +# Required-Stop: $docker
 +# Default-Start: 2 3 4 5
 +# Default-Stop: 0 1 6
 +# Short-Description: Portainer Services
 +### END INIT INFO
 +
 +set -e
 +
 +PROJECT_NAME=portainer
 +YAMLFILE=/var/lib/jenkins/workspace/portainer/docker-compose.yml
 +OPTS="-f $YAMLFILE -p $PROJECT_NAME"
 +UPOPTS="-d --no-recreate --no-build --no-deps"
 +
 +. /lib/lsb/init-functions
 +
 +case "$1" in
 +    start)
 +        log_daemon_msg "Starting service portainer" "portainer" || true
 +        docker-compose $OPTS up $UPOPTS
 +        ;;
 +
 +    stop)
 +        log_daemon_msg "Stopping service portainer" "portainer" || true
 +        docker-compose $OPTS stop
 +        ;;
 +
 +    reload)
 +        log_daemon_msg "Reloading service portainer" "portainer" || true
 +        docker-compose $OPTS up $UPOPTS
 +        ;;
 +
 +    restart)
 +        docker-compose $OPTS stop
 +        docker-compose $OPTS up $UPOPTS
 +        ;;
 +
 +    status)
 +        status=$(docker ps -aqf "name=${PROJECT_NAME}")
 +        if [ ! -z "${status}" ]; then
 +          echo "Already running ID: ${status}"
 +        fi
 +        ;;
 +
 +    *)
 +        log_action_msg "Usage: /etc/init.d/portainer {start|stop|restart|reload|status}" || true
 +        exit 1
 +        ;;
 +esac
 +
 +exit 0
 </code> </code>
  
-===== System.D =====+===== System D =====
  
  
Строка 277: Строка 434:
 # Remove old containers, network and volumes # Remove old containers, network and volumes
 ExecStartPre=/usr/bin/docker-compose -f /var/lib/jenkins/workspace/portainer/docker-compose.yml down -v ExecStartPre=/usr/bin/docker-compose -f /var/lib/jenkins/workspace/portainer/docker-compose.yml down -v
-ExecStartPre=-/bin/bash -c 'docker network rm docker_jfrog_net+ExecStartPre=-/bin/bash -c 'docker network rm docker_portainer_net
-ExecStartPre=-/bin/bash -c 'docker ps -aqf "name=artifactory" | xargs docker rm'+ExecStartPre=-/bin/bash -c 'docker ps -aqf "name=portainer" | xargs docker rm'
  
 # Compose up # Compose up
Строка 339: Строка 496:
 ====== Документация / Статьи ====== ====== Документация / Статьи ======
  
 +  * [[system:docker:xdebug]]
   * http://docker.crank.ru/ :!:   * http://docker.crank.ru/ :!:
   * [[https://habr.com/post/261415/|Свой облачный хостинг за 5 минут. Часть 1: Ansible, Docker, Docker Swarm]]   * [[https://habr.com/post/261415/|Свой облачный хостинг за 5 минут. Часть 1: Ansible, Docker, Docker Swarm]]
Строка 358: Строка 516:
   * https://ast.rocks/blog/docker-orchestration   * https://ast.rocks/blog/docker-orchestration
   * https://docs.docker.com/docker-for-mac/#uninstall-or-reset   * https://docs.docker.com/docker-for-mac/#uninstall-or-reset
 +  * https://habr.com/ru/post/333874/
 +  * https://linux-notes.org/rabota-s-tomami-volumes-v-docker/
  
-====== Другие системы виртуализации ======+====== Ссылки ======
  
-{{topic>[virtual]}}+{{topic>[docker]}}