目的
- dockerインストール後、起動まで最低限の操作をメモ
- インストール:UbuntuにDocker CEをインストールする
環境
- Ubuntu 16.04
作業
1. Dockerファイル作成
- Dockerイメージのコアには容量削減のためのAlpine Linuxを使うことが多けど、パッケージ依存の解決が大変なので、とりあえずUbuntuを使う
Dockerfile
FROM ubuntu:16.04
ARG USER_NAME="lynlea"
ARG USER_HOME="/home/lynlea"
ARG ROOT_HOME="/root"
#-------------------------------------
# 初期設定
#-------------------------------------
# 時刻設定
RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# aptリポジトリ変更
RUN sed -i -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.iij.ad.jp/pub/linux/ubuntu/archive/%g" /etc/apt/sources.list \
&& apt-get update && apt-get upgrade -y
# 文字コード設定
RUN apt-get -y install language-pack-ja-base language-pack-ja \
&& locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8 \
&& LANGUAGE ja_JP:en \
&& LC_ALL ja_JP.UTF-8
# ユーザ作成
RUN echo "CREATE_HOME yes" >> /etc/login.defs \
&& useradd -u 1000 ${USER_NAME}
#-------------------------------------
# パッケージインストール
#-------------------------------------
# do something
#-------------------------------------
# 後処理
#-------------------------------------
RUN apt-get autoremove \
&& apt-get clean
2. Dockerイメージ作成
docker-build.sh
#!/bin/bash
set -e
IMAGE_NAME="lynlea/test-image"
docker build -t "${IMAGE_NAME}" .
$ ./docker-build.sh
3. Dockerコンテナ起動
docker-run.sh
#!/bin/bash
set -e
IMAGE_NAME="lynlea/test-image"
CONTAINER_NAME="test-container"
HOST_NAME="${CONTAINER_NAME}"
#PORT_HOST="8080"
#PORT_GUEST="80"
#DIR_HOST="/home/lynlea/docker_share"
#DIR_GUEST="/home/user/docker_share"
docker run -d -it \
--name "${CONTAINER_NAME}" \
--hostname "${HOST_NAME}" \
-v /etc/localtime:/etc/localtime:ro \
--restart=always \
"${IMAGE_NAME}"
#-p "${PORT_HOSt}:${PORT_GUEST}" \
#-v "${DIR_HOST}:${DIR_GUEST}" \
- -d … デーモン化(起動しっぱなし)
- -v /etc/localtime:/etc/localtime:ro … ホストと時刻を合わせる
- -p … ポート設定
- -v … ファイルマウント
- --restart=always … ホスト再起動したときに、このdockerコンテナを自動的に立ち上げる
$ ./docker-run.sh
4. 起動中のコンテナに入る
$ docker exec -it コンテナ名 bash
- 出るときは exit。-dでデーモン化しているからexitしてもコンテナ起動したまま