Linux Mint 18.3にDockerをインストールし、Ubuntu 16.04のイメージを元に自分の環境を作成しようと考えた。
この記事はそのときのメモである。
Docker環境の準備
インストール
$ sudo apt install docker.io
マイアカウントでdockerコマンドを実行可能に設定
$ sudo usermod -G docker -a マイアカウント
ここで一旦ログアウトして再度ログイン。
Ubuntuコンテナーを試す
先ずはUbuntuイメージを取得して実行
$ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
Digest: sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6
Status: Downloaded newer image for ubuntu:latest
root@69b685dbca2a:/#
そしてapt-getしてみる
root@69b685dbca2a:/# apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim
vimパッケージの在り処が分からないと言っている。
リポジトリ情報の更新が必要(これ大事!)
root@69b685dbca2a:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
:
:
Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [7705 B]
Fetched 25.0 MB in 33s (753 kB/s)
Reading package lists... Done
再度vimをインストール
root@69b685dbca2a:/# apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
file libexpat1 libgpm2 libmagic1 libmpdec2 libpython3.5 libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
mime-support vim-common vim-runtime
Suggested packages:
gpm ctags vim-doc vim-scripts vim-gnome-py2 | vim-gtk-py2 | vim-gtk3-py2 | vim-athena-py2 | vim-nox-py2
The following NEW packages will be installed:
file libexpat1 libgpm2 libmagic1 libmpdec2 libpython3.5 libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
mime-support vim vim-common vim-runtime
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.2 MB of archives.
After this operation, 58.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
:
:
終了してもこれまでやったことは忘れない
root@69b685dbca2a:/# exit
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69b685dbca2a ubuntu "bash" 32 minutes ago Exited (0) 3 seconds ago pedantic_heyrovsky
自分のUbuntuコンテナーを作成
簡単なDockerfileを作成
$ mkdir -p ~/docker/ubuntu
$ cd ~/docker/ubuntu
$ vim Dockerfile
以下の内容のDockerfileを作成。
FROM ubuntu
RUN apt-get update && apt-get -y upgrade
自分のubuntuイメージを作成
$ docker build -t 'my/ubuntu' .
Sending build context to Docker daemon 2.048 kB
Step 1/2 : FROM ubuntu
---> f975c5035748
Step 2/2 : RUN apt-get update && apt-get -y upgrade
---> Running in 8c60a01fadc1
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
:
:
Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [7705 B]
Fetched 25.0 MB in 19s (1256 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
---> af427ee95dbf
Removing intermediate container 8c60a01fadc1
Successfully built af427ee95dbf
正常にmy/ubuntuができているかを確認。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my/ubuntu latest af427ee95dbf 24 minutes ago 152 MB
ubuntu latest f975c5035748 3 days ago 112 MB
vimをインストールして凍結
参考:Dockerで、既存のイメージを少しだけ変えて再コミットする
先ずはオンデマンドでインストール。
$ docker run -it my/ubuntu bash
root@cc59edb12ad6:/# apt-get -y install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
file libexpat1 libgpm2 libmagic1 libmpdec2 libpython3.5 libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
mime-support vim-common vim-runtime
:
:
継続して作業したいと思うことが良くあるので、上記はそのままに、別の端末を開いて、コンテナーをコミットして凍結。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc59edb12ad6 my/ubuntu "bash" 4 minutes ago Up 4 minutes fervent_lamport
$ docker commit cc59edb12ad6 my/ubuntu
sha256:17e86bb43336827af0d225efcca8a69411bd3135826249826035f810fd9fae00
念のため、動作を確認。
root@cc59edb12ad6:/# exit
$ docker run -it my/ubuntu bash
root@388b3bff5bd8:/# vim
vimが実行されれば正常。
一度に多くのパッケージをインストールしたい場合や再現性を確保したい場合はDockerfileに記述すべきなので、その点を考慮に入れながら作業して欲しい。
このUbuntuのバージョンは?
最後にこのUbuntuのバージョンを確認しておこう。
root@388b3bff5bd8:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial