ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

Docker コンテナ(docker image alpine)内に一般ユーザーを作成して sudo の設定をする

Docker コンテナ内で一般ユーザで処理を行わせようとすると、権限の問題でうまくいかないことがありました。その時は、仕方がないので sudo の設定を入れて回避しました。
後々別方法でことが足りたのですが、ここにその時の設定方法をメモしておきます。

処理の一部を抜粋
docker run コマンドでローカルのユーザにて処理をさせたかったのですが...

UID := $(shell id -u)
GID := $(shell id -g)

ADD_SUDO_CMD := apk add sudo ; 
	addgroup -S ${GID};
	adduser -S -u ${UID} -G ${GID} ${UID}; \
	echo ${UID} ALL=\(ALL\) NOPASSWD:ALL >>/etc/sudoers; \
	echo ${UID}:${UID} | chpasswd;echo 'Defaults visiblepw' >>/etc/sudoers

DOCKER_IMAGE := *****
DOCKER_RUN := docker run -t --rm -v $(PWD):/v -w /v --net=host $(DOCKER_IMAGE)

$(DOCKER_RUN) sh -c "$(ADD_SUDO_CMD); sudo su ${UID} -s /bin/sh -c \"$(BUILD)\""


以下の方法の方がいいことを後々知りました。

UID := $(shell id -u)
GID := $(shell id -g)

DOCKER_IMAGE := *****
DOCKER_RUN := docker run -t --rm -u $(UID):$(GID) -v $(PWD):/v -w /v --net=host $(DOCKER_IMAGE)

$(DOCKER_RUN) sh -c "$(BUILD)"