ものづくりのブログ

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

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

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

処理の一部を抜粋

befor

docker run コマンドでローカルのユーザにて処理をさせたかったのですが...指定方法がわからず docker コンテナ内で sudo コマンドを使ってムリムリユーザ指定させてしまいました。

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)\""

after

docker コマンドでユーザ指定オプション(-u)があったので、以下の方法の方がいいことを後々知りました。

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)"