Docker

Виртуальные машины и среды исполнения

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 29 июл 2017, 21:47

Ну и напоследок, на сегодня ;-) ... multi-host networking

Код: Выделить всё

[olej@xenix ~]$ docker ps
CONTAINER ID        IMAGE                                     COMMAND             CREATED             STATUS              PORTS               NAMES
bb548b8a65fa        docker.io/vcatechnology/base-linux-mint   "/bin/bash"         3 hours ago         Up 3 hours                              clever_curie

[olej@xenix ~]$ docker network create -d bridge --subnet 10.0.9.0/24 multi-host
2983db90c2000c578f17510929f61cc46d25c389161226be9166eff89bbe544d

[olej@xenix ~]$ docker network ls
NETWORK ID          NAME                            DRIVER              SCOPE
0f82fa586537        bridge                          bridge              local               
ba7c44df422c        host                            host                local               
2983db90c200        multi-host                      bridge              local               
6487f69290a2        my-new-bridge                   bridge              local               
0da3fd3b6955        none                            null                local               
09fe500720a4        qkdproxyserver_default          bridge              local               
265a19a5e1e3        qkdrxserver_default             bridge              local               
7f5df562e08f        qkdrxserver_zabbix_zbx_net_rx   bridge              local               
Подключаем выполняющийся контейнер к новой созданной подсети:

Код: Выделить всё

[olej@xenix ~]$ docker network connect multi-host clever_curie
И наблюдаем внутри контейнера:

Код: Выделить всё

...
bb548b8a65fa / # ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
34: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:14:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.20.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe14:2/64 scope link 
       valid_lft forever preferred_lft forever
36: eth1@if37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever
39: eth2@if40: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:0a:00:09:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.9.2/24 scope global eth2
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:fe00:902/64 scope link 
       valid_lft forever preferred_lft forever

bb548b8a65fa / # ping 10.0.9.1
PING 10.0.9.1 (10.0.9.1) 56(84) bytes of data.
64 bytes from 10.0.9.1: icmp_seq=1 ttl=64 time=0.178 ms
64 bytes from 10.0.9.1: icmp_seq=2 ttl=64 time=0.081 ms
64 bytes from 10.0.9.1: icmp_seq=3 ttl=64 time=0.092 ms
^C
--- 10.0.9.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2056ms
rtt min/avg/max/mdev = 0.081/0.117/0.178/0.043 ms
...
Так что разговоры (как пишут) о том, что нельзя указать Docker в какой подсети и с каким IP выполнять контейнер - сильно преувеличены! :lol:
По крайней мере, это достигается созданием дополнительного сетевого интерфейса и подсети.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 29 июл 2017, 22:22

Здесь вот: Знакомимся с основными возможностями Docker
Евгений Зобнин
01.06.2015

- замечательно в своей простоте и доступности объяснение "на пальцах" о структуре образов Docker, слоях в образах и как всё это устроено... достаточно, чтобы понимать и не влезать в ненужные детали.
Дело в том, что в подaвляющем большинстве случаев «образ Docker» — это вовсе не монолитный образ файловoй системы, а своего рода слоеный пирог, состоящий из нескольких образов файловых сиcтем, на основе которых формируется контейнер. При этом отдельно взятые образы ФС вoвсе не отвечают за те или иные части структуры каталога (как, например, в случае с разбиениeм диска под Linux на разделы /home, /var, /boot), а наслаиваются друг на друга с помощью мeханизма AUFS ядра Linux (также есть поддержка той же функциональности через использование btrfs, device mapper и overlay).
Мы уже выяснили, что каждый Docker-образ состоит из нескольких образoв ФС. Когда мы запускаем контейнер, эти образы монтируются и собираются в одну структуру каталога с пoмощью AUFS. Например, первый образ может содержать только базoвую установку Ubuntu, второй добавляет к ней набор стандартных демoнов, третий — утилиты администрирования и так далее. Docker монтирует все слои в режиме «только чтениe», но, чтобы мы имели возможность изменять содержимое образа, сверху подключаeтся еще один изначально пустой слой в режиме «чтение/запись».
По умолчанию после завершения контейнера (которое происходит после завершения пoследнего работающего в нем процесса) последний слой стираeтся и все наши изменения пропадают. Однако, используя кoманду docker commit, мы можем «зафиксировать» изменения, создав нoвый Docker-образ на основе уже существующих образов ФС плюс образа ФС с нашими изменениями. Так внeсенные нами изменения сохранятся.
Такой подход к формированию образов дает большую гибкость в управлении контейнeрами, экономит уйму времени и позволяет с легкостью перенoсить уже сконфигурированные Docker-образы между машинами (образ можно выложить на Docker Hub и зaтем развернуть на другой машине). Менее очевидный плюс — экономия дискового пpостранства. Если мы развернем на машине целый зоопарк контейнеров, каждый из кoторых будет изначально основан на одном базовом обpазе (той же Ubuntu, например) — они все будут ссылаться на этот базовый образ и не дублировать его содeржимое.

Код: Выделить всё

[olej@xenix ~]$ docker images
REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
qkd/proxy_server                          latest              c29047e43bf8        3 months ago        558.5 MB
qkd/base                                  latest              52872f1783db        3 months ago        1.161 GB
docker.io/cdbishop89/docker-mint18-ci     latest              d5ff8e8ae673        10 months ago       4.67 GB
docker.io/vcatechnology/base-linux-mint   latest              857e091bbb4b        10 months ago       4.445 GB

Код: Выделить всё

[olej@xenix ~]$ docker history -H docker.io/vcatechnology/base-linux-mint
IMAGE               CREATED             CREATED BY          SIZE                COMMENT
857e091bbb4b        10 months ago                           4.445 GB            Imported from -

Код: Выделить всё

[olej@xenix ~]$ docker history -H docker.io/cdbishop89/docker-mint18-ci
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
d5ff8e8ae673        10 months ago       /bin/sh -c apt-get update                       106.1 MB            
<missing>           10 months ago       /bin/sh -c echo 'APT::Update::Post-Invoke-Suc   108 B               
<missing>           10 months ago       /bin/sh -c apt-get install -y   python   git    118.7 MB            
<missing>           10 months ago       /bin/sh -c #(nop)  MAINTAINER VCA Technology    0 B                 
<missing>           10 months ago                                                       4.445 GB            Imported from -

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 30 июл 2017, 13:12

Полная автоматизация «development» среды с помощью docker-compose
22 февраля в 21:55
Docker в 2017
На конференции Dockercon 2016 CEO компании Docker рассказал, что количество приложений, которые запускаются в Docker выросло на 3100% за последние два года. Боле 460 тысяч приложений по всему миру запускаются в Docker. Это невероятно!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 31 июл 2017, 08:09

Olej писал(а):Здесь вот: Знакомимся с основными возможностями Docker
Евгений Зобнин
01.06.2015

- замечательно в своей простоте и доступности объяснение "на пальцах" о структуре образов Docker, слоях в образах и как всё это устроено... достаточно, чтобы понимать и не влезать в ненужные детали.
И вот этот перевод (постов в сети) полностью разрисовывает внутреннюю картину Docker (хоть это и по какой-то предыдущей версии, но суть сохраняется) - Образы и контейнеры Docker в картинках
Станислав Попов
2 декабря 2015 в 12:39
Изображение
Пост предназначен для тех, кто пытается освоить docker cli, понять, чем отличается контейнер и образ. В частности, будет объяснена разница между просто контейнером и запущенным контейнером.
...
Содержимое Docker (образы, контейнеры, метаданные) находятся (у меня! ... и у вас, полагаю ;-) ) здесь (это отличает от публикации выше):

Код: Выделить всё

[root@xenix lib]# pwd
/var/lib

[root@xenix lib]# ls -l | grep docker
drwx--x--x  1 root           root            94 июл 18 19:19 docker
Обратите внимание на флаги каталога - без root вы даже посмотреть ничего не сможете!

Код: Выделить всё

[root@xenix docker]# pwd
/var/lib/docker

[root@xenix lib]# ls -l docker
итого 0
drwx------ 1 root root  20 июл 22 19:18 btrfs
drwx------ 1 root root 384 июл 30 23:01 containers
drwx------ 1 root root  10 июл 22 18:43 image
drwxr-x--- 1 root root  10 июл 22 18:43 network
drwx------ 1 root root   0 июл 22 18:43 swarm
drwx------ 1 root root   0 июл 30 22:22 tmp
drwx------ 1 root root   0 июл 22 18:43 trust
drwx------ 1 root root 254 июл 24 15:50 volumes

[root@xenix docker]# du -hs *
60G     btrfs
72K     containers
17M     image
68K     network
0       swarm
0       tmp
0       trust
24K     volumes
Размер! :-o :-(
Осторожно ... для вольных экспериментов с Docker нужно иметь такой вот, и больше, запас в корневой файловой системе Linux.

Образы здесь:

Код: Выделить всё

[root@xenix subvolumes]# pwd
/var/lib/docker/btrfs/subvolumes

[root@xenix subvolumes]# ls -l
итого 0
drwxr-xr-x 1 root root 132 июл 24 15:38 146b71f9dc534a12c01b3ac26a578fa6d06af172c49ffc9dd88778cd54a61f64
drwxr-xr-x 1 root root 186 июл 30 22:55 2e3dcc9b62313b531d4c09f1641b7f398d62925ed7455eb42129719d5e3025db
drwxr-xr-x 1 root root 186 июл 30 13:51 2e3dcc9b62313b531d4c09f1641b7f398d62925ed7455eb42129719d5e3025db-init
drwxr-xr-x 1 root root 166 июл 28 10:08 380b52a5e4b97cef3381142bd872f48fcdb77a97deb081f3cb1f0f2f1ce55fcb
drwxr-xr-x 1 root root 132 июл 24 15:38 483ce59163c424247cf2bd6812be28ba056709fffa18a4b27087a12a843d589f
drwxr-xr-x 1 root root 132 июл 24 15:38 483f609e01fcd255cf8500fbf7a284f053c469a94e0a04da239a6402f961ad5a
drwxr-xr-x 1 root root 200 июл 24 15:34 513a53b8e95a87f81ac0b3d2d9dc1ef96ac07c8d05cc3c1cf07ee9c8a5bd2525
drwxr-xr-x 1 root root 132 июл 24 15:38 523c9675a61c3db96a5da2614461f33f1ee321e40d437001ec0a17de7017a5c3
drwxr-xr-x 1 root root 132 июл 24 15:38 546eefacf14141ae53b2658be20b70400e8ca37779d1f4ffe75119d64c9860bd
drwxr-xr-x 1 root root 232 июл 24 15:34 581fc810304e98930c3cfe06e2eeabea2f2df71431ea4b83de53b2c934b0a9d2
...

... ну и так далее ;-)

Вся структура становится совершенно понятной!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 31 июл 2017, 08:26

Olej писал(а):Вся структура становится совершенно понятной!
Самые не очевидные детали, нужные при работе:
Команда 'docker images' выводит список образов верхнего уровня (top-level images).
...
Только те образы, которые имеют присоединенные контейнеры или те, что были получены с помощью pull, считаются образами верхнего уровня. Это различие нужно для удобства, так как за каждым образом верхнего уровня может быть множество слоев.
...
Команда 'docker images -a' выводит все образы на хост-машине. Это фактически список всех слоев для чтения в системе. Если вы хотите увидеть все слои одного образа, воспользуйтесь командой 'docker history'.
В отличие от 'docker stop' и 'docker kill', которые посылают настоящие UNIX сигналы процессам контейнера, команда 'docker pause' используют специальную возможность cgroups для заморозки запущенного пространства процессов. Подробности можно прочитать здесь, если вкратце, отправки сигнала Ctrl+Z (SIGTSTP) не достаточно, чтобы заморозить все процессы в пространстве контейнера.
Команда 'docker rmi' удаляет слой для чтения, который определяет «сущность» образа. Она удаляет образ с хост-системы, но образ все еще может быть получен из репозитория через 'docker pull'. Вы можете использовать 'docker rmi' только для слоев верхнего уровня (или образов), для удаления промежуточных слоев нужно использовать 'docker rmi -f'.
Команда 'docker commit' берет верхний уровень контейнера, тот, что для записи и превращает его в слой для чтения. Это фактически превращает контейнер (вне зависимости от того, запущен ли он) в неизменяемый образ.
Изображение
Команда 'docker exec' применяется к запущенному контейнеру, запускает новый процесс внутри пространства процессов контейнера.
Команда 'docker save' создает один файл, который может быть использован для импорта образа на другую хост-систему. В отличие от команды 'export', она сохраняет все слои и их метаданные. Может быть применена только к образам.
Команда 'docker export' создает tar архив с содержимым файлов контейнера, в результате получается папка, пригодная для использования вне docker. Команда убирает слои и их метаданные. Может быть применена только для контейнеров.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 31 июл 2017, 10:08

Olej писал(а): Размер! :-o :-(
Привожу Docker в исходное, девственное ;-) состояние (1-й тур мусорных экспериментов закончен, начнём 2-й более осмысленный)...

1. Удалить все сохранённые контейнеры:

Код: Выделить всё

[olej@xenix lib]$ docker ps -a
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS                      PORTS               NAMES
1b752deedd31        docker.io/cdbishop89/docker-mint18-ci     "bash"                   20 hours ago        Exited (0) 11 hours ago                         boring_turing
bb548b8a65fa        docker.io/vcatechnology/base-linux-mint   "/bin/bash"              39 hours ago        Exited (1) 33 hours ago                         clever_curie
488f17699a70        qkd/proxy_server                          "/bin/sh -c rabbitmq-"   6 days ago          Exited (137) 11 hours ago                       qkdproxyserver_proxy_server_1

[olej@xenix lib]$ docker ps -a -q
1b752deedd31
bb548b8a65fa
488f17699a70

[olej@xenix lib]$ docker rm $(docker ps -a -q)
1b752deedd31
bb548b8a65fa
488f17699a70

[olej@xenix lib]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2. Удалить все сохранённые образы:

Код: Выделить всё

[olej@xenix lib]$ docker images -a
REPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE
qkd/proxy_server                          latest              c29047e43bf8        3 months ago        558.5 MB
qkd/base                                  latest              52872f1783db        3 months ago        1.161 GB
docker.io/cdbishop89/docker-mint18-ci     latest              d5ff8e8ae673        10 months ago       4.67 GB
docker.io/vcatechnology/base-linux-mint   latest              857e091bbb4b        10 months ago       4.445 GB

[olej@xenix lib]$ docker rmi $(docker images -a -q)
Untagged: qkd/proxy_server:latest
Deleted: sha256:c29047e43bf8362f570038a86c8f3341cbe82b3c29d49818dc05d9cf5a492c0e
Deleted: sha256:90231ef374183157b6ec37b80cee57745d2df9b382570f05e84bca7acc2bced5
Deleted: sha256:8342693b23115b407476c56b37513949e6c2d9b971a3144791e3af37f2a68c15
Deleted: sha256:c5525e2332f1fb0b8788c93cfd7f908b664a4cac321286829c90a3fd66e245ee
Deleted: sha256:2e1f2a870a78190291aab5a2a324a0ef011bb44ba17a7153168dea985e7c8b9d
Deleted: sha256:a15b13c87927988869b540102317fc948e2ad85c2bc3b9b2dfa40632e6784962
Deleted: sha256:ca59736acbf716e31577e3d6698a6908e3a42ceffe03efdaaf747c8113edbc5a
Deleted: sha256:80b2dc6d977d33a64de5f1ce2828cafcc5b2e7e96e062ebba49f51da6044e6b8
Deleted: sha256:3d0edabed6de9902d38ef74868aae3628aa1be637a4c9d42ef8fb91a0f679ae4
Deleted: sha256:3ee2c5c73dc0d2aa06c723766c6ba56ade9d2a17e3e3393b0a951badfd89f9d9
Deleted: sha256:221dd0d0ba8e2d629951fce6eadf1c57c28a9a34afe7278c3fcbdf3a5612d349
Untagged: qkd/base:latest
Deleted: sha256:52872f1783db740fac9025052d200554828e05b8051db7621866d1cdb31fb24c
Deleted: sha256:d9552b5d5064992d019e8cb7d2bcdd4277773b311f889347dc96fa219140e7b5
Deleted: sha256:b40ff2be97ce6a16ba383cbcc875935412c3585cfcd9faa1036ddabc2a24a990
Deleted: sha256:47a3e518f54cfb55e8adcd68a7923d987c5d344b7a5a4718c3df7726d3fec781
Deleted: sha256:52889f2e800ece0f36c21a30acfb1bac841fd6438c98ffbf7b44eaed18bf10ba
Deleted: sha256:c3124649af16a4a694b19766126fa74db74ff61dbd9e5a4cb5c4c2c212748a14
Deleted: sha256:f59020d0c6c80a618f3ab9fca9a8fe39266de67685d1d06fbb6576fa11610edb
Deleted: sha256:c90405e6ef5e963dc81d55d8c755289ef7a3d5e82c6c6a008e714965923c1cbc
Deleted: sha256:df155b6059b72798ec0e54305d1a2f406038adf86dc866c6950d338e02110051
Deleted: sha256:3109d2a11d656ecfd9b25f712bdb9b74f721a4672d5fa6286f0f7ef8e016bac8
Deleted: sha256:8a2f18379923e59740261054677bbdbea0592dc93403fbc11c414a505c00f450
Deleted: sha256:17465cbe18ae95e8d57f184cdf8e73f44ee8650a955d8584865ef7576ce9f983
Deleted: sha256:c788b4a3dcab6e12d42c0cc49a402450edb4e435b78e3882c3a51b040f7f9c8a
Deleted: sha256:3a34a9e811ba592f35543867b5687549b420b7f5da359113c07c37077e610a22
Deleted: sha256:52d6775654ee8a215baedc5fd0631232d40fefa9f025d322644f2d8b3de891a5
Deleted: sha256:0e1349875d8623f491b439c2d543037bd45d6c1a6b551f6bcef69f5827df6186
Deleted: sha256:1887a9d8bd2c317857dad34b66eb80bf821430ef95239597c5d7f778ed74ab65
Deleted: sha256:4fb00f33cb21bf8247ff6512935c050b7fe175f3237bd85f9e276c68f8b4cb67
Deleted: sha256:6d2e5ba26cac8a4b3f11c2e123863ff83c34d9fd014b3074d6876dc823625215
Deleted: sha256:f48c218a6e712561c209f0f2d7bb1f8c2a60942fe81962a806fe6eec088f65a8
Deleted: sha256:a9e6ae0a88a11e2905c28f70d3f2167032d3d4342d308466b92c086ccea49535
Deleted: sha256:cfcef7911b5cdfcc36bee16f4cceb47df3fd430e0d58408eccf9a0dc283739d4
Deleted: sha256:5d6cbe0dbcf9a675e86aa0fbedf7ed8756d557c7468d6a7c64bde7fa9e029636
Untagged: docker.io/cdbishop89/docker-mint18-ci:latest
Untagged: docker.io/cdbishop89/docker-mint18-ci@sha256:7d095d26499c61651933a720d3273074132676a4ac11b1f26fd65ba631e932b6
Deleted: sha256:d5ff8e8ae6732d86ea6041979a97587df8aa70795b2849223611f395cfb2d241
Deleted: sha256:80471e306d81426c516a048507e7f291d365a7b37fc25bf0469b5140b2a6d8b1
Deleted: sha256:f373f43645ed1a53270ddcf57ff9fc75443da8facc7c91c766251cf3b54af991
Deleted: sha256:e524c80a1ea91145298bccde0005ece65427dd798308b5b2ad92c15b2c9cb067
Untagged: docker.io/vcatechnology/base-linux-mint:latest
Untagged: docker.io/vcatechnology/base-linux-mint@sha256:2a8275efdc9ac4fea0375ce15bffa19bd9bd8f7a7b96ed0f1b86e77f6660ddf9
Deleted: sha256:857e091bbb4bef95dc86635bdbf3a2178b69e3c276d3384e89f0f9aa68ee577d
Deleted: sha256:6e7e82703d4768d53559a742253ffe3bb21b2f56eeecd8542bd65121ba376d8b

[olej@xenix lib]$ docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Вот и всё ;-) :

Код: Выделить всё

[root@xenix docker]# tree /var/lib/docker/btrfs/
/var/lib/docker/btrfs/
└── subvolumes

1 directory, 0 files

[root@xenix docker]# pwd
/var/lib/docker

[root@xenix docker]# du -hs
336K	.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 31 июл 2017, 10:19

Olej писал(а): Вот и всё ;-) :
Не совсем всё ;-) ...

3. Нужно убрать сетевые интерфейсы, которые созданы образами / контейнерами Docker:

Код: Выделить всё

[olej@xenix lib]$ docker network list
NETWORK ID          NAME                            DRIVER              SCOPE
ee4a0d513069        bridge                          bridge              local               
ba7c44df422c        host                            host                local               
2983db90c200        multi-host                      bridge              local               
6487f69290a2        my-new-bridge                   bridge              local               
0da3fd3b6955        none                            null                local               
09fe500720a4        qkdproxyserver_default          bridge              local               
265a19a5e1e3        qkdrxserver_default             bridge              local               
7f5df562e08f        qkdrxserver_zabbix_zbx_net_rx   bridge              local               

[olej@xenix lib]$ docker network --help

Usage:	docker network COMMAND

Manage Docker networks

Options:
      --help   Print usage

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

[olej@xenix lib]$ docker network rm multi-host my-new-bridge qkdproxyserver_default qkdrxserver_default qkdrxserver_zabbix_zbx_net_rx
multi-host
my-new-bridge
qkdproxyserver_default
qkdrxserver_default
qkdrxserver_zabbix_zbx_net_rx

[olej@xenix lib]$ docker network list
NETWORK ID          NAME                DRIVER              SCOPE
ee4a0d513069        bridge              bridge              local               
ba7c44df422c        host                host                local               
0da3fd3b6955        none                null                local              
3 предопределённых сетевых интерфейса Docker не могут быть удалены!

Код: Выделить всё

[olej@xenix lib]$ docker network rm host
Error response from daemon: host is a pre-defined network and cannot be removed

Код: Выделить всё

[olej@xenix lib]$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 8c:89:a5:74:f4:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::8e89:a5ff:fe74:f4a5/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:bf:0e:b9:65 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
4. И ещё:

Код: Выделить всё

olej@xenix lib]$ docker volume ls
DRIVER              VOLUME NAME
local               qkdrxserver_auth_link_rx
local               qkdrxserver_config_rx
local               qkdrxserver_key_producer_rx
local               qkdrxserver_monitor_rx
local               qkdrxserver_storage_rx

[olej@xenix lib]$ docker volume rm qkdrxserver_auth_link_rx qkdrxserver_config_rx qkdrxserver_key_producer_rx qkdrxserver_monitor_rx qkdrxserver_storage_rx
qkdrxserver_auth_link_rx
qkdrxserver_config_rx
qkdrxserver_key_producer_rx
qkdrxserver_monitor_rx
qkdrxserver_storage_rx

[olej@xenix lib]$ docker volume ls
DRIVER              VOLUME NAME

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 31 июл 2017, 16:31

Olej писал(а):Так что разговоры (как пишут) о том, что нельзя указать Docker в какой подсети и с каким IP выполнять контейнер - сильно преувеличены! :lol:
По крайней мере, это достигается созданием дополнительного сетевого интерфейса и подсети.
Вот так можно запустить любой контейнер в любой подсети и с принудительно заданным ему IP:

Код: Выделить всё

[olej@xenix lib]$ docker network create -d bridge --subnet 10.0.9.0/24 host-10
0435cb761c08d4df396a2b8473a7de1d23265e44597fc078b0232475edc5d58e

[olej@xenix lib]$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
004727ebdb24        bridge              bridge              local               
ba7c44df422c        host                host                local               
0435cb761c08        host-10             bridge              local               
0da3fd3b6955        none                null                local               

[olej@xenix lib]$ docker run -ti --network=host-10 --ip=10.0.9.100 dc112c92acb3 bash 
e5fbd33864ba / # ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
36: eth0@if37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:0a:00:09:64 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.9.100/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:fe00:964/64 scope link 
       valid_lft forever preferred_lft forever
...
Но это нельзя сделать только единственно на дефаултном интерфейсе Docker:

Код: Выделить всё

olej@xenix lib]$ docker run -ti --ip=172.17.0.100 dc112c92acb3 bash 
/usr/bin/docker-current: Error response from daemon: User specified IP address is supported on user defined networks only.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 04 авг 2017, 17:06

То, как, опробовав свои дополнения (слои), сохранить образ как новый, командой docker-а commit детально расписано здесь рядом, на примере: графические приложения в Docker.
Там же можно найти о командах save - сохранить образ в файл для переноса на новый компьютер, и load - развернуть образ из ранее сохранённого файла.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Docker

Непрочитанное сообщение Olej » 04 авг 2017, 17:29

Olej писал(а):То, как, опробовав свои дополнения (слои), сохранить образ как новый, командой docker-а commit детально расписано здесь рядом, на примере: графические приложения в Docker.
Это совершенно работающий способ ... но довольно часто пишут - Погружаемся в Docker: Dockerfile и коммуникация между контейнерами
Подход docker commit, описанный в предыдущей статье, не является рекомендованным для Docker. Его плюс состоит в том, что мы настраиваем контейнер практически так, как привыкли настраивать стандартный сервер.

Вместо этого подхода мы рекомендуем использовать подход Dockerfile и команду docker build. Dockerfile использует обычный DSL с инструкциями для построения образов Docker. После этого выполняется команда docker build для построения нового образа с инструкциями в Dockerfile.
Почему так уж "не рекомендуется" мне не совсем понятно и не очевидно.
Но в ближайшем сообщении я покажу, альтернативно, как это делается.

В этой же публикации подробно расписаны инструкции Dockerfile - в этом её плюс.

Ответить

Вернуться в «Виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей