諸事情あって、Ubuntu上でのMavenビルドを確認したくて、環境を作るため、初めてのDockerに手を出しました。その時の覚え書きです。
なお、私はUbuntuは触ってみたことがある程度で、あまり詳しくはありません。LPIC Level1は昔持ってたので(現在は期限切れ)、初歩的なコマンドはわかります。という程度です。
環境
ホスト側
ツールなど | 環境 |
---|---|
macOS | Mojave 10.14.5 |
Docker | 19.03.8 |
Dockerコンテナ側
ツールなど | 環境 |
---|---|
Ubuntu | 18.0.4(Latest) |
Apache Maven | 3.6.3 |
JDK | AdoptOpenJDK 11.0.6 2020-01-14 |
Dockerインストール
まずMacにDockerをインストールします。
1. Dockerアカウント作成
その前に、Dockerの公式サイトでアカウントを作成します。
2. Docker Desktop for Macをインストール
Docker Desktop for Macというアプリをインストールします。
インストール後、下記コマンドでバージョンが表示されればOK.
$ docker --version
UbuntuをDockerに構築
1. Ubuntuイメージをpull
$ docker pull ubuntu
pull出来たかは以下のコマンドで確認。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e5021d210f6 5 days ago 64.2MB
2. Ubuntuの起動とセットアップ
2.1 コンテナを起動
$ docker run -it -d --name ubuntuLatest ubuntu:latest
--name
のあとの名称は任意です。
ubuntu:latest
は、docker images
コマンドで表示された、{REPOSITORY}:{TAG}
としています。
Ubuntuのイメージが1つしかなければ、{TAG}
の部分は不要かも。
2.2 コンテナに入る/抜ける
$ docker exec -it ubuntuLatest /bin/bash
これでバッシュコマンドが打てる状態で繋がります。
抜けるときは、
$ exit
でOK.
もう一度入るときは、
$ docker exec -it ubuntuLatest bash
とする。
3. apt-getのアップデート
いろいろパッケージをインストールするのに必要なのでまずはこれから。やっておかないと何もインストールできませんでした。
$ apt-get update
また、add-apt-repositoryなどが動くように以下を実行して、再度apt-get update
しておく。
$ apt-get install -y software-properties-common
$ apt-get update
4. vimをインストール
なにかエディタ入れておかないと何も出来ないので、vimでも入れておきます。
お好みで良いでしょう。
$ apt-get install -y vim
5. SSHをインストール
Gitに繋ぐのに、SSH鍵が必要だったので、入れました。
$ apt-get install -y ssh
Ubuntuにビルド環境をセットアップ
1. AdaoptOpenJDK 11のインストール
$ add-apt-repository --yes ppa:rpardini/adoptopenjdk
$ apt-get update
$ apt-get install -y adoptopenjdk-11-installer
1行目のコマンドで、AdoptOpenJDKのリポジトリを追加しています。
リポジトリを追加したら、apt-get update
が必要みたいです。
JDKインストール後、java --version
とやって以下のように出ればOKです。
/# java --version
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)
2. Maven
$ apt-get install -y maven
インストール後に、mvn -v
と打ってバージョンが表示されればOK。
3. Git
$ apt-get install -y git
インストール後に、git --version
と打ってバージョンが表示されればOK.
また、グローバルユーザー設定をしておく。
$ git config --global user.name [任意のユーザ名]
$ git config --global user.email [任意のメールアドレス]
4. Git接続用SSH鍵生成
$ cd ~
$ mkdir .ssh
$ cd .ssh
$ ssh-keygen -t rsa
あとは通常通りに設定を行う。
公開鍵の内容のコピーは、cat id_rsa.pub
とやってコピーすれば良い。
Gitへの公開鍵の登録をお忘れなく。
Githubの場合、以下で接続確認ができる。
$ ssh -T git@github.com
yes
と打つのを忘れずに。
5. Gitからクローンしてビルド
任意のフォルダを作ってそこに移動してから、
$ git clone [SSH用のリポジトリURL]
Githubなどから、SSH用のURLをコピーしてくるのを間違えないように。
クローンしてきたらプロジェクトフォルダに移動してから、任意のブランチをチェックアウト。
$ cd [project dir name]
$ git checkout -b branch_name origin/branch_name
ビルド実行。
$ mvn install
おめでとうございます。
Dockerコンテナ内のUbuntuでmavenビルドが出来るようになりました。
ステップ数は長いけど、結構単純なことの繰り返しなので、それほど難しくないように思います。
でも、どこかに、Mavenビルド用のイメージはいろいろ転がっていそうですよね(汗)
これを社内で共有しようと思ったら、Dockerリポジトリに公開すればいいのかしら??
その他のコマンド
1. コンテナを停止する
$ docker stop ubuntuLatest
2. コンテナを再起動する
$ docker start ubuntuLatest
3. Dockerのコンテナリストを確認する
起動中のコンテナ表示。
$ docker ps
停止中のコンテナ表示。
$ docker ps -a
4. コンテナを削除する
コンテナは停止していること。
$ docker rm [CONTAINER ID]
[CONTAINER ID]
は、docker ps -a
で確認したもの。
5. イメージを削除する
$ docker rmi [IMAGE ID]
[IMAGE ID]
は、docker images
で確認したもの。
注意
コマンドにすべてsudo
をつけてませんが、Dockerのコンテナに普通に繋ぐと、root
ユーザーになるからです。
通常の(Dockerでない)Ubuntuでやる場合は、sudo
が必要かもしれません。
なお、root
以外ユーザーを追加してそのユーザーでコンテナに入る方法は、いくつかググって試したのですが成功しませんでした。
仕方なくroot
ユーザーのままで作業しましたが、用途によってはだめでしょうね^^;
参考
- DockerをMacにインストールする(更新: 2019/7/13)
https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81 - Mac+Docker+ubuntu (??)
https://qiita.com/teruru/items/073f7e8c7dba75993323 - Dockerイメージとコンテナの削除方法
https://qiita.com/tifa2chan/items/e9aa408244687a63a0ae - Ubuntu Linuxで、add-apt-repositoryしようとして「コマンドがない」って言われたら
https://kazuhira-r.hatenablog.com/entry/20160116/1452933387 - Debian, Ubuntuへapt(-get)でAdoptOpenJDKをインストールする方法
https://qiita.com/tabimoba/items/aef82dd0426ee4c32d40 - UbuntuでSSHをインストールする手順
https://qiita.com/shimidai2100/items/bc210a3e09ee3dd0fc1a