Это старая версия документа!
Docker
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. |
Установка
nano /etc/apt/sources.list
deb https://apt.dockerproject.org/repo debian-stretch main
Использование
Работа с образами / Images
Для справки
$ docker image
Вывести список образов
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yii2_php latest 6a950c96e01d 23 hours ago 159MB
Удалить образ
$ docker image rm 6a950c96e01d
Анализировать образ
$ docker image inspect 6a950c96e01d [ { "Id": "sha256:6a950c96e01de12b463f1fce232b48f530c487c2d7af5fef2e59c693c21c8af1", "RepoTags": [ "yii2_php:latest" ], "RepoDigests": [], "Parent": "sha256:a0883c ... }
Избавляемся от неиспользуемых образов
$ docker image prune
Список образов
Алиас к
$ docker images
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE yii2_php latest 6a950c96e01d 23 hours ago 159MB yii2_nginx latest 878bb2a77dfa 27 hours ago 23.2MB yii2_kibana latest e3f6594b57e1 27 hours ago 221MB yii2_elasticsearch latest 117a536c2655 27 hours ago 129MB yii2_redis latest 546a364104fd 27 hours ago 31.1MB yii2_mariadb latest 03ddc39bcf15 27 hours ago 204MB
Работа с контейнерами / Containers
Для справки
$ docker $ docker exec --help
Запуск контейнера
Необходим Dockerfile
$ docker up
Список запущеных контейнеров
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a50423920e0d yii2_php "/usr/sbin/php-fpm -F" 23 hours ago Up 23 hours 9001/tcp, 0.0.0.0:9001->9000/tcp yii2_php_1 fa24abd60049 yii2_nginx "sh -c 'envsubst \"`e…" 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp yii2_n
Подсоеденение к контейнеру
Проверить предварительно на наличие запрашиваемой оболочки. В alpine по умолчанию нет bash
$ sudo docker exec -i -t a50423920e0d /bin/bash $ sudo docker exec -i -t a50423920e0d /bin/sh
Запустить контейнер
$ docker start a50423920e0d
Остановить контейнер
$ docker stop a50423920e0d
Пребить контейнер
$ docker kill a50423920e0d
Использование docker-composer.yml
Для справки
$ docker-compose
$ docker-compose exec
Подсоеденение к контейнеру
$ docker-compose exec php /bin/sh
Где php название используемого сервиса / services
Запуск с использованием локального конфига
$ docker-compose -f docker-compose.yml -f docker-compose-local.yaml up -d
Особенности работы с MAC OS
Все контейнеры в MAC OS находятся в виртуальной машине qcow2 и находятся по адресу /Users/mirocow/Library/Containers/com.docker.docker/Docker.qcow2
- где mirocow имя вашего пользователя
Для MacOs устанавливается в отдельную виртуальную машину. К которой можно законектится с помощью tty.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Автоматический запуск контейнеров в Debian
System V
nano /etc/init.d/portainer
#!/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
System D
nano /etc/systemd/system/portainer.service
[Unit] Description=Portainer service with docker-compose Requires=docker.service After=docker.service [Service] Restart=always WorkingDirectory=/var/lib/jenkins/workspace/portainer/ # Remove old containers, network and volumes ExecStartPre=/usr/bin/docker-compose -f /var/lib/jenkins/workspace/portainer/docker-compose.yml down -v ExecStartPre=-/bin/bash -c 'docker network rm docker_portainer_net' ExecStartPre=-/bin/bash -c 'docker ps -aqf "name=portainer" | xargs docker rm' # Compose up ExecStart=/usr/bin/docker-compose -f /var/lib/jenkins/workspace/portainer/docker-compose.yml up # Compose down, remove containers ExecStop=/usr/bin/docker-compose -f /var/lib/jenkins/workspace/portainer/docker-compose.yml down [Install] WantedBy=multi-user.target
Проблемы и их решения
Circular import between fpm and nginx
Возникает при циклическом связывании контейнеров (2-ух сторонее связывание) В качестве решенияпроблемы, на данный момент, можно воспользоваться прокси сервером/контейнером docker-grand-ambassador
fpm: build: ./build/fpm links: - ambassador:nginx nginx: build: ./build/nginx links: - ambassador:fpm ambassador: image: cpuguy83/docker-grand-ambassador volumes: - "/var/run/docker.sock:/var/run/docker.sock" command: "-name testapp_fpm_1 -name testapp_nginx_1"
ERROR: Couldn't connect to Docker daemon - you might need to rundocker-machine start default`
скорее всего вам потребуется сделать следующее:
$ docker-machine create --driver=xhyve dev --xhyve-experimental-nfs-share
Компоненты
- Репозитории - Репозитории Dokerfile - ов
- docker-compose - Компановщик контейнеров
- docker-machine - Это инструмент, позволяющий управлять удалёнными хостами Docker с локального компьютера.
- Docker Toolbox - Комплект необходимых программ для Windows или MacOs (Внимание!!! ставит VirtualBox )
- Weave Scope - Это очень удобный и наглядный сервис для мониторинга Docker контейнеров.
- cAdvisor - Система мониторинга за контейнерами
- DockStation - Отличный клиент для работы с docker-compose, docker-composer.yml
Репозитории
Документация / Статьи
Другие системы виртуализации
2015/10/13 09:01 | linkbacks Linkbacks | system, kernel, virtual | ||
2017/11/09 13:38 | linkbacks Linkbacks | container, virtual | ||
2015/10/13 09:01 | linkbacks Linkbacks | virtual | ||
2017/11/09 13:34 | linkbacks Linkbacks | linux, container, containers, virtual | ||
2016/12/05 00:08 | linkbacks Linkbacks | vagrant, chef, shell, puppet, salt, ansible, docker, devops, virtual, alpine | ||
2025/02/10 11:29 | linkbacks Linkbacks | vagrant, chef, shell, puppet, salt, ansible, docker, devops, virtual, alpine | ||
2015/10/13 09:01 | linkbacks Linkbacks | vagrant, chef, shell, puppet, salt, ansible, docker, virtual | ||
2015/10/13 09:01 | linkbacks Linkbacks | virtualbox, virtual | ||
2019/07/30 10:46 | linkbacks Linkbacks | vagrant, chef, shell, puppet, salt, ansible, docker, devops, virtual, alpine | ||
2018/02/28 22:23 | linkbacks Linkbacks | vagrant, chef, shell, puppet, salt, ansible, docker, virtual |