Ответы пользователя по тегу Docker
  • Gitlab CI локально. Ошибка?

    OxCom
    @OxCom
    GitLab runner запускает job'ы в соответствии с конфигурацией .gitlab-ci.yml, в котором вы говорите, что image, в котором будет выполнятся ваш job - php:7.2.

    Воспользуйтесь любым online переводчиком, чтобы понять, что вам необходимо установить расширения GD (Root composer.json requires PHP extension ext-gd) и PostgreSQL (pomm-project/cli 2.0.2 requires ext-pgsql), который в этом образе PHP просто нет:

    $ docker run --rm php:7.2 php -m
    
    [PHP Modules]
    Core
    ctype
    curl
    date
    dom
    fileinfo
    filter
    ftp
    hash
    iconv
    json
    libxml
    mbstring
    mysqlnd
    openssl
    pcre
    PDO
    pdo_sqlite
    Phar
    posix
    readline
    Reflection
    session
    SimpleXML
    sodium
    SPL
    sqlite3
    standard
    tokenizer
    xml
    xmlreader
    xmlwriter
    zlib
    
    [Zend Modules]


    Как это сделать? Есть несколько вариантов:
    - custom image на основе php:7.2
    - перед запуском тестов, как вы делаете с docker-php-ext-install exif
    Ответ написан
  • Докер занимает всё выделенное место, как его почистить (docker system prune не помогает)?

    OxCom
    @OxCom
    Попробуйте с параметром -a: docker system prune -a. Если не помогает, то чистим ручками.

    Делаем docker image ls. И смотрим какие образы нужны, а какие не нужны.
    Далее чистим docker image rm ....

    Сам по себе docker system prune - не панацея.
    Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.
    .
    Ответ написан
  • Docker logs, писать/читать в console output(STDOUT)?

    OxCom
    @OxCom
    В офф документации они описывают пример nginx и httpd. И там же ссылка на Dockerfile, где они собирают image вот с такой командой:
    # forward request and error logs to docker log collector
    RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    	&& ln -sf /dev/stderr /var/log/nginx/error.log

    Пример из моей практики: я собираю образы PHP и пишу логи так:
    php_admin_value[error_log] = /proc/self/fd/2
    Ответ написан
  • Как запустить образ Docker registry в Kubernetes?

    OxCom
    @OxCom
    Добрый день. Из описания не понятно где, что и как вы делаете. Поиграем в угадайку:

    1) minikube:
    Заходим в minikube shell и там что-то делать со встроенным докером и там работать с образами. Как-то так:
    host$ docker run -d nginx:latest
    host$ docker exec -it <container> /bin/sh
    container$ # hack, hack, hack...
    container$ exit
    host$ docker commit <container> <yuour-image-name:and-tag-here>

    После этого вы можете использовать новый образ в minikube, где производили изменения. Помните, что minikube отличается от реального k8s кластера.

    2) k8s cloud или baremetal
    Тут для своих образов нужно создавать собственный registry. Поднимать его лучше всего отдельно, чтобы при создании нового кластера не собирать все версии ваших docker images (иначе где он возьмёт эти образы?).

    Допустим есть какой-то приватный registry доступом по логину и паролю. Для его использования нужно создать секрет в k8s с конфигурацией, которая хранит нужную пару логина и пароля.
    apiVersion: v1
    kind: Secret
    type: kubernetes.io/dockerconfigjson
    data:
        .dockerconfigjson: <configuration>
    metadata:
        name: registry-secret

    Как сделать, читаем тут

    Далее мы можем использовать приватный registry примерно так:
    # ...
    spec:
    	imagePullSecrets:
    		-   name: registry-secret
    	# ...
    	containers:		
    		-   name: php
    			image: <private-registry-domain>/<image-name:tag-here>


    Так же можно сделать авторизацию по ключам, но это уже другая история, которая потянет на статью на хабре.
    Ответ написан