事の起こり
re:dashセットアップ手順
上記を見て、re:dashをdockerで動かしてみようかと手を動かした時に、
sudoユーザでインストールするようなプログラムだけど、
今まではdockerはrootでやっていたので、
いい機会なのでsudoユーザ作成についてまとめました。
ゴール
- 追加するsudoユーザ情報
ユーザ名 | ユーザが所属するグループ | ユーザのpassword |
---|---|---|
iganari | developer | hogehoge |
Dockerfile
- ubuntu:16.04で構築しますが、他のOSでも基本的にいけると思います。
- 中身
Dockerfile
FROM ubuntu:16.04
MAINTAINER iganari <iganari@qiita.com>
# apt update
RUN apt-get update
RUN apt-get install -y sudo
# add sudo user
RUN groupadd -g 1000 developer && \
useradd -g developer -G sudo -m -s /bin/bash iganari && \
echo 'iganari:hogehoge' | chpasswd
RUN echo 'Defaults visiblepw' >> /etc/sudoers
RUN echo 'iganari ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER iganari
- 実行コマンド
cmd
# docker build --no-cache .
# docker tag $(docker images -q | head -1) sudo-test
# docker run --rm -it sudo-test /bin/bash
================
コンテナ内でsudo有りと無しで確認してみる
### sudo無し
iganari@4b6360fbafce:/$ apt-get update
W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted)
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
### sudo有り
iganari@4b6360fbafce:/$ sudo apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://archive.ubuntu.com/ubuntu xenial-security InRelease
Reading package lists... Done
以上で、sudoユーザが出来ました。
ソース
Gistにも載せておきます。
- Gist
補足
ハマったポイントとしては
echo 'Defaults visiblepw' >> /etc/sudoers
これが見慣れなくてすこし調べました。
ちなみに、当初の目的であるredashを入れるところは別途構築中です…
参考
dockerでsudoできるユーザを追加するdockerfile
ssh で sudo 実行
Jenkinsでsudo実行時のエラー