LoginSignup
23
18

More than 5 years have passed since last update.

Docker(CentOS)イメージから新規ユーザを追加し運用できるようにするまで

Last updated at Posted at 2019-03-31

概要

DockerのCentOSイメージに新規ユーザを追加し、そのユーザで運用していける状態にする。最後にDockerfileを置いているので、手っ取り早く環境作りたい人はそちらを使ってみてください。

そもそもDockerだからrootで全部やればいい、という考えもあるので、この記事はrootでOKな人以外に向けた記事になります。
本番環境を想定して、root許可されてない同じ環境で試したい、そういう方に向けた記事になります。

環境

CentOS Linux release 7.6.1810 (Core)

補足
macOS High Sierra 10.14.3
Docker version 18.09.1, build 4c52b90

手順

イメージの取得

CentOSのイメージを取得する。最新バージョンでよいのでバージョンの指定はしない。

docker pull centos

起動

私はバックグラウンド起動する人なので-dオプションつけます。exitしたり複数コンソールからexecしたりするので。

docker run -d centos:latest /sbin/init

実行

コンテナIDは起動時に表示されます。
もしくは docker ps コマンドでも確認できます。

docker exec -it コンテナID /bin/bash

sudo権限付与

ユーザを追加してsudo権限を付与する。

sudoインストール

yum -y update && yum clean all
yum -y install sudo

ユーザ追加

useradd -m ユーザ名

パスワード設定

passwd ユーザ名

sudo設定

echo 'ユーザ名 ALL=(ALL) ALL' >> /etc/sudoers

確認

作成したユーザでsudoできるか確認する。

su - ユーザ名
sudo コマンド

Dockerfile

手順で実行したコマンドをDockerfileで書くと以下のようになる。
パスワードをコマンドライン上に書きたくない場合は、ログイン後に設定するようにDockerfileを書き換えてください。

FROM centos:latest
MAINTAINER kashipan

ARG USER
ARG PASSWD

RUN yum -y update && yum clean all && \
    yum -y install sudo && \
    useradd -m $USER && \
    echo "$USER:$PASSWD" | chpasswd && \
    echo "$USER ALL=(ALL) ALL" >> /etc/sudoers

ビルド(イメージ作成)

--build-argでDockerfileで使用する変数を与えることができる。
Dockerfile配置ディレクトリで実行する場合は下記のコマンドです。

docker build -t イメージ名:タグ名 . --build-arg USER=ユーザ名 --build-arg PASSWD=パスワード

ビルド後の確認

想定通りユーザが作成されていること、sudoでコマンド実行できることを確認する。

起動

docker run -d イメージ名:タグ名 /sbin/init

ユーザ指定でシェル実行

docker exec -u ユーザ名 -it コンテナID /bin/bash

※追記(2019/04/12)
上記ユーザ指定のシェル実行の場合、bash設定ファイルも読み込まれないし、通常のログインようになってくれない。
su でユーザ切り替える下記の方法がよいかと。

docker exec -it コンテナID su - ユーザ名

sudo確認

なんでもいいですが、visudoでDockerfileで指定した設定が書き込まれているか確認する。下記のコマンドが実行できること、また一番下の行にecho "$USER ALL=(ALL) ALL"があることが確認できればいいです。

sudo visudo

以上!

23
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
18