ホーム >  仮想環境 > コンテナ >  DockerをUbuntuにインストール


Posted:2017/06/13 9:00:52 AM|Category : コンテナ

DockerをUbuntuにインストール

DockerをUbuntuにインストールします。

Ubuntu16.04にDocker開発環境を作る

今回は、Ubuntu(開発機)でDockerをインストールして必要な環境を整えます。Python環境を外部に持ちだしたり、VPSなどにデプロイしたりするのに便利です。

公式のインストール手順は以下の通りです。

Get Docker for Ubuntu/

今回の目的

クライアントPC(Ubuntu)に開発環境としてDockerをインストールします。

私の環境

OS Ubuntu 16.04.1 LTS 64bit

動作条件確認

①Ubuntuのディストリビューションを確認します。

lsb_release -a

②カーネルのバージョンを調べます。

uname -r

dockerは、カーネルのバージョンが3.10以上であることが動作条件です、インストール環境でのカーネルのバージョンを確かめます。

4.4.0-21-generic

リポジトリを追加

dockerをインストールする前に、Ubuntu公式以外のリポジトリを使用できる状態にします。

①Ubuntuを最新の状態にします。

sudo aptitude update
sudo aptitude safe-upgrade

②公式ドキュメントに従って以下のモジュールをインストールします。

sudo apt-get install apt-transport-https ca-certificates
apt-transport-https すべてのパッケージマネージャがhttps経由で利用可能なメタデータとパッケージにアクセスできるようにします。
ca-certificates SSL接続の信頼性をチェックできるようにします。

③Ubuntu公式以外リポジトリを認証する鍵情報(GPG鍵)を、ローカルキーチェーンに取り込みます。

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
apt-key パッケージを認証するのに使用するキーの一覧を管理します。
adv gpg に上級オプションを渡します。adv –recv-key とすると、公開鍵をダウンロードできます。

以下のような結果が出力されます。

Executing: /tmp/tmp.nvKi7oK1v0/gpg.1.sh --keyserver
hkp://p80.pool.sks-keyservers.net:80
--recv-keys
58118E89F3A912897C070ADBF76221572C52609D
gpg: 鍵2C52609Dをhkpからサーバp80.pool.sks-keyservers.netに要求
gpg: 鍵2C52609D: 公開鍵"Docker Release Tool (releasedocker) <docker@docker.com>"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1  (RSA: 1)

④「/etc/apt/sources.list.d/docker.list」に下記の行を記述します。14.04と16.04のように、記述内容はUbuntuのバージョンによって変わります。

# 16.04

sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list"

# 14.04

sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list"

インストール

①パッケージのバージョンをアップデートします。

sudo aptitude update

②カーネルも最新をインストールします。

sudo aptitude install linux-image-extra-$(uname -r)

③dockerをインストールします。

sudo apt-get install docker-engine

ファッ!?docker-engineのインストールがうまく行きません。

以下のパッケージには満たせない依存関係があります:
 docker-engine : 依存: libsystemd-journal0 (>= 201) しかし、インストールすることができません
                 推奨: aufs-tools しかし、インストールされようとしていません
                 推奨: cgroupfs-mount しかし、インストールされようとしていません または
                         cgroup-lite しかし、インストールされようとしていません
                 推奨: git
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

④依存パッケージに問題があるようです。「aptitude」をインストールします。

sudo apt-get install aptitude

再度インストールします。

sudo aptitude install docker-engine
sudo aptitude install docker.io

⑤動作確認をします。dockerを起動し、welcomeメッセージを表示します。

sudo service docker start
sudo docker run hello-world

すらずらと文字が表示されますが、以下のような文章があれば成功です。

Hello from Docker!
This message shows that your installation appears to be working correctly.

管理者権限なしにdockerコマンド実行

sudoなしでdockerコマンドを使うため、groupaddでdockerグループをユーザに追加します。

①dockerユーザを追加します。

sudo groupadd docker

②あなたのuser名をdockerグループに追加します。

sudo gpasswd -a ${USER} docker

③dockerをリスタートします。

sudo service docker restart

④コンピュータを再起動してください。

⑤これで当該ユーザでdockerを実行できるようになりました。以下のコマンドで試しにシステム情報を表示します。

docker info

コンテナ作成

試しにlsするとslになる簡単なコンテナを作成します。

①ディレクトリを作ります。

mkdir mydockerbuild
cd mydockerbuild

②Dockerfileという名前のファイルを作成します。

touch Dockerfile

③aliasでlsをslにすり替えるところは「bash_aliases」でやる予定なので、下記のような記述のファイルをbash_aliasesという名前で作ります。

vi bash_aliases

内容。

alias ls="/usr/games/sl"

④②で作成したDockerfileファイルに設定を書き込みます。

FROM buildpack-deps:jessie

# build-essentialとslを入れる
RUN apt-get -y update
RUN apt-get -y install build-essential sl

# ユーザを作っておく
RUN useradd -ms /bin/bash username

# ユーザのホームディレクトリから開始する感じにしておく
USER username
WORKDIR /home/username

# さっき作ったbash_aliasesを入れておく
COPY bash_aliases /home/username/.bash_aliases

⑤下記コマンドでbuildします。

docker build -t example/lssl .

⑥イメージが登録されたか確認します。

docker images

「example/lssl」という名前でイメージが登録されました。

example/lssl        latest              f60a37f122de        5 minutes ago       630 MB
buildpack-deps      jessie              3b84923989a0        3 weeks ago         614 MB
hello-world         latest              48b5124b2768        4 months ago        1.84 kB

⑦dockerを起動します。

docker run -i -t example/lssl /bin/bash

立ち上がりました。

username@60c700e125d1:~$ 

⑧lsをとります。すると、汽車のアスキーアートが走ると思います。

$ls

デタッチ

①ログイン状態を抜ける(dettach[デタッチ])には”CTRL”を押した状態で”p、q”を順番に押します。

※サーバからログアウトする感覚でexitコマンドを実行すると、起動したコンテナも停止してしまうので注意してください。

②再度docker psコマンドで稼働状況を確認します。

docker ps

STATUSがUPになっているのが確認できます。

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
456a0c0d1288        example/lssl        "/bin/bash"         57 minutes ago      Up 57 minutes                           determined_lamport

アタッチ

先ほどデタッチした「example/lssl」コンテナに再度ログイン(アタッチ)するには、「docker attach 」を実行します。

①アタッチを実行します。

docker attach 456a0c0d1288

または、

docker attach determined_lamport

デタッチ+コンテナ停止

exitコマンドで抜けると停止します。

exit

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 2008年04月 金融機関系I

最近の投稿
人気記事
カテゴリー
広告