Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Docker

$
0
0

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.

Установка

Использование

Работа с образами / 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-composer.yml

docker-composer.yml

version: '2'
services:
  mariadb:
    build: ./provision/mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: skringo
      MYSQL_USER: skringo
      MYSQL_PASSWORD: skringo
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - './logs/mysql:/var/log/mariadb'
  redis:
    build: ./provision/redis
    restart: always
    environment:
      - REDIS_VERSION=4.0.9
    ports:
      - '6379:6379'
    expose:
      - '6379'
  redis-commander:
    container_name: redis-commander
    hostname: redis-commander
    image: rediscommander/redis-commander:latest
    build: .
    restart: always
    environment:
    - REDIS_HOSTS=local:redis:6379
    ports:
    - 8081:8081
  nginx:
    build: ./provision/nginx
    restart: always
    links:
      - php
    volumes:
      - './:/app'
      - './provision/nginx/etc/conf.d/yii2.advanced.template:/etc/nginx/conf.d/site.template'
      - './logs/nginx:/var/log/nginx'
    environment:
      - NGINX_VERSION=1.13.12-1~stretch
      - NGINX_HOST=skringo.loc
      - NGINX_PORT=80
    ports:
      - '80:80'
    command: 'sh -c "envsubst \"`env | awk -F = ''{printf \" $$%s\", $$1}''`\" < /etc/nginx/conf.d/site.template > /etc/nginx/conf.d/default.conf && nginx -g ''daemon off;''"'
  elasticsearch:
    build: ./provision/elasticsearch
    restart: always
    ports:
      - '9200:9200'
    expose:
      - '9200'
    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
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 1g
  kibana:
    build: ./provision/kibana
    links:
      - elasticsearch
    ports:
      - '5601:5601'
  php:
    build: ./provision/php/7.1
    restart: always
    links:
      - mariadb
      - redis
      - elasticsearch
    ports:
      - '9001:9000'
    expose:
      - '9000'
      - '9001'
    environment:
      - PHP_IDE_CONFIG=serverName=skringo.loc
    volumes:
      - './:/app'
      - './provision/php/7.1/xdebug.ini:/etc/php7/conf.d/xdebug.ini'
      - './logs/php7:/var/log/php7'
      - './logs/php7/xdebug:/tmp/xdebug_log'

networks:
  default:
    external:
      name: nginx-proxy

Подсоеденение к контейнеру

$ 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

Автоматический запуск контейнеров в 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}"]; thenecho"Already running ID: ${status}"fi;; 
    *)
        log_action_msg "Usage: /etc/init.d/portainer {start|stop|restart|reload|status}"||trueexit1;;esac 
exit0

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 volumesExecStartPre=/usr/bin/docker-compose -f/var/lib/jenkins/workspace/portainer/docker-compose.yml down -vExecStartPre=-/bin/bash-c'docker network rm docker_portainer_net'ExecStartPre=-/bin/bash-c'docker ps -aqf "name=portainer" | xargs docker rm' 
# Compose upExecStart=/usr/bin/docker-compose -f/var/lib/jenkins/workspace/portainer/docker-compose.yml up
 
# Compose down, remove containersExecStop=/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 :!:

Репозитории

Документация / Статьи

Другие системы виртуализации


Viewing all articles
Browse latest Browse all 1318

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes