dockerコンテナに使いたいコマンドを入れる

スポンサーリンク

はじめに

お久しぶりです。

新しい仕事を覚えるのが忙しくブログを後回しにしていました。

少しずつ仕事にもなれてきたのでネタを投稿します。

今回はdockerコンテナに自分の使いたいコマンドを入れる方法です。

Ubuntu16.04のコンテナでifconfigやipコマンドが使えない!

dockerコンテナを勉強しているときにubuntu16.04のコンテナを使っていました。

ubuntu16.04のコンテナだとifconfigやip address show(ip a)が使えず

ネットワーク周りの確認ができません。

何でかな?と思いぐぐってみると、最小構成のコンテナなため上記コマンドを含んでいないらしい・・・

なら自分で追加すればいいということで、

今回は簡単にDockerfileで構成する方法を残しておきます。

0. dockerをインストールする

そもそもインストールしないと使えません。

インストール方法は公式サイト、もしくは探せばいっぱい出てくるので割愛。

今回は17.03.2-ceを使っています。

1. 組み込みたいコマンドの確認

まずコマンドの場所を探すためにwhichコマンドを使います。例えばipコマンドを探す場合は

$ which ip

/sbin/ip

こんな感じで/sbin/ipにあるのがわかります。

次に入っているパッケージを探します。dpkg -Sを使います。

$ dpkg -S /sbin/ip

iproute2: /sbin/ip

こんな感じでiproute2パッケージにあるのがわかります。

これをDockerfileに組み込めばOK。

ちなみにこの2つを合体させて

$ dpkg -S $(which ip)

iproute2: /sbin/ip

なんてのも。

ifconfigも見たいので

$ dpkg -S $(which ifconfig)

net-tools: /sbin/ifconfig

2.Dockerfileファイル作成

適当なディレクトリにDockerfileを作ります。

$ cd ~

$ mkdir testDockerfile

$ cd testDockerfile

$ vim Dockerfile

Dockerfileの中身はこんな感じです。

--no-install-recommendsは余計なものをいれないおまじない。

3.buildします

作ったDockerfileをbuildしてimageを作ります。

$ sudo docker build -t test/ubuntu16.04:001 ~/testDockerfile/

~/testDockerfile/はDockerfileがある場所です。

DockerHubにアップ(push)する場合はユーザ名/リポジトリ名:タグ名としますが、

ローカルで自分だけが使うなら適当でも動きます。

上記コマンド以外にもDockerfileのあるディレクトリに行き、以下コマンドでもOK。

 $ sudo docker build -t test/ubuntu16.04:001 .

途中で、debconf: delaying package configuration, since apt-utils is not installedという警告は気にせず進めます。apt-utilsつけても出ますし。。

作成後はsudo docker imagesでimageが出来ているか確認。

4.imageをrunする

先ほど作ったimageをrunしてコンテナを作ります。

$ sudo docker run -itd --name test test/ubuntu16.04:001

他にはsudo docker imagesのIMAGE IDを使って、こんなのもあり。

$ sudo docker run -itd --name test a62fa59d7e78

コンテナ作成後はsudo docker ps -aで確認。わかりにくいですが--nameのすぐ後にある「test」がコンテナ名です。

5. コンテナでコマンド実行

さきほどtestというコンテナを作ったのでこれを使って、以下コマンドを実行します。

$ sudo docker exec test 打ちたいコマンド

結果はこちら。ubuntuコンテナないでip aコマンドが打ててます。

ifconfigの結果はこちら。

おまけ

コンテナにログインしたい場合はこちら

$ sudo docker exec -it test /bin/bash

最後に

わかったら簡単な話なんですよね。

わからないときはさっぱりですが。。

とりあえずこれでコンテナないで自由にコマンドが打てますね!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする