Использование docker-compose для сборки существующего файла docker с некоторыми небольшими изменениями не работает:
Step 1/10 : FROM alpine:latest
---> 055936d39205
Step 2/10 : LABEL MAINTAINER = "Peter Winter <[email protected]>" Description = "Simple and lightweight Samba docker container, based on Alpine Linux." Version = "1.0.2"
---> Using cache
---> e99eafd27cc6
Step 3/10 : RUN apk --no-cache upgrade && apk --no-cache add samba samba-common-tools supervisor
---> Running in 99c71d23252f
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
OK: 6 MiB in 14 packages
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz: could not connect to server (check repositories file)
ERROR: unsatisfiable constraints:
samba (missing):
required by: world[samba]
samba-common-tools (missing):
required by: world[samba-common-tools]
supervisor (missing):
required by: world[supervisor]
ERROR: compose.cli.main.main: Service 'samba' failed to build: The command '/bin/sh -c apk --no-cache upgrade && apk --no-cache add samba samba-common-tools supervisor' returned a non-zero code: 3
Кажется, вы не используете прокси?
докер-compose.yml
version: "3.7"
services:
samba:
#image: pwntr/samba-alpine
build:
context: .
dockerfile: Dockerfile
container_name: samba
volumes:
- /some/path:/shared:ro
restart: unless-stopped
Я попытался установить разделы args и environment с данными прокси, но без разницы.
version: "3.7"
services:
samba:
#image: pwntr/samba-alpine
build:
context: .
dockerfile: Dockerfile
# args: # Environment variables available at build-time
# - http_proxy=http://127.0.0.1:3128
# - https_proxy=http://127.0.0.1:3128
# - HTTP_PROXY=http://127.0.0.1:3128
# - HTTPS_PROXY=http://127.0.0.1:3128
# environment: # Environment variables available at container run-time
# - http_proxy=http://127.0.0.1:3128
# - https_proxy=http://127.0.0.1:3128
# - HTTP_PROXY=http://127.0.0.1:3128
# - HTTPS_PROXY=http://127.0.0.1:3128
container_name: samba
volumes:
- /some/path:/shared:ro
restart: unless-stopped
Если я использую docker run или через изображение, все работает нормально.
version: "3.7"
services:
samba:
image: pwntr/samba-alpine
container_name: samba
volumes:
- /some/path:/shared:ro
restart: unless-stopped
Сервер/хост работает под управлением Alpine Linux, соединения работают нормально.
docker info | grep -i proxy
HTTP Proxy: http://127.0.0.1:3128/
HTTPS Proxy: http://127.0.0.1:3128/


Попробуй это
docker build -t localhost/smb:v1 .
Вам лучше изменить RUN apk --no-cache upgrade && apk --no-cache add samba samba-common-tools supervisor на RUN apk --no-cache --upgrade add samba samba-common-tools supervisor, чтобы избежать нескольких сетевых запросов.
Пробовал docker build -t localhost/smb:v1 . все равно выдает ту же ошибку. Мои env vars уже установлены, иначе ничего не будет работать, верно? ``` окружение | grep -i proxy http_proxy=127.0.0.1:3128 https_proxy=127.0.0.1:3128 ``` Я занимался этим пару дней, это действительно меня поразило :(
Попробуйте глобальные настройки, такие как ``` RUN echo 'export http_proxy=х.х.х.х:3128' >> /etc/profile RUN echo 'export https_proxy=х.х.х.х:3128' >> /etc/profile ``` 'xxxx' должен быть адресом, доступным из внутри контейнера.
нет... Я, конечно, в растерянности: / Чего я не понимаю, так это того, что если я просто использую image: pwntr/samba-alpine в файле компоновки, он работает. Разве это не доступ к моему прокси-серверу из контейнера?
Если вы используете фиксированный image:, он не отключается и не перестраивает его, он просто загружает встроенный образ из Docker Hub (или другого реестра).
В случае, если у кого-то еще есть проблема.
Запустите ifconfig и найдите IP-адрес docker0
Отредактируйте cntlm.conf и добавьте следующее
Listen 172.17.0.1:3128 # IP-адрес docker0
Перезапустить cntlm
Создайте файл конфигурации в /root/.docker/config.json и добавьте следующее
{
"proxies":
{
"default":
{
"httpProxy": "http://172.17.0.1:3128",
"httpsProxy": "http://172.17.0.1:3128",
"ftpProxy": "http://172.17.0.1:3128"
}
}
}
Переменные среды действуют только в командной строке, а не в APK, например, в yum, вам нужно установить /etc/yum.conf, apk - то же самое.