背景
仕事で、複数のエッジコンピュータにデプロイを行うにあたり、Dockerイメージを利用する必要があった
記事の目的
UbuntuにDockerを導入する
Dockerの導入
ここでは、Dockerの導入方法と使用方法について記載する。
Dockerとは
Dockerはコンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである。 Dockerはコンテナ仮想化を用いたOSレベルの仮想化(英語版)によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にする。かつその環境自体をアプリケーションと同じようにコード(イメージ)として管理可能にする。Dockerを開発・テスト・デプロイに用いることで「コードを書く」と「コードが製品として実行される」間の時間的ギャップを大きく短縮できる。
利点
- コンテナに再現性があり、どの環境下でも同じ動作をする
- コンテナイメージはリポジトリ管理できるため、ロールバックが容易
- イメージ内で環境が出来上がっているため、環境構築が容易になる
導入方法
Dockerの導入手順は、下記の通りである。ここを参照- Dockerをインストールする(Ubuntuの場合)
- プロキシ設定(オプション)
- 動作確認
$ sudo apt update
$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo mkdir -p /etc/systemd/system/docker.service.d/
$ sudo nano /etc/systemd/system/docker.service.d/10_docker_proxy.conf
10_docker_proxy.conf [service]
Environment=HTTP_PROXY=http://your.proxy.com:8080
Environment=HTTPS_PROXY=http://your.proxy.com:8080
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo docker run hello-world
...
Hello from docker
...
使用方法
Dockerの使用手順は、下記の通りである。- DockerイメージをDocker Hubで探す 以下のコマンドでも検索可能(nvidiaを検索)
- Dockerイメージをpullする
- Dockerイメージを確認する
- Dockerイメージの詳細を確認する
- Dockerイメージを起動する
- 実行中のコンテナを確認する
- 実行中のコンテナ一時中断、再開
- 実行中のコンテナを削除する
- コンテナの中で作業する
- コンテナからイメージを作成する
- Dockerイメージを削除する
$ sudo docker search nvidia | more
$ sudo docker pull nvidia/cuda
$ sudo docker images
$ sudo docker inspect nvidia/cuda
$ sudo docker run nvidia/cuda:latest echo "Hello World"
$ sudo docker run nvidia/cuda:latest -d echo "Hello World" #バックグラウンド実行
$ sudo docker attach --sig-proxy=false id(コンテナID) #フォアグラウンド実行に変更
$ sudo docker ps
$ sudo docker kill id(コンテナID) #中断
$ sudo docker start id(コンテナID) #再開
$ sudo docker rm id(コンテナID)
$ sudo docker run -i -t nvidia/cuda /bin/bash
$ sudo docker run -i -t nvidia/cuda /bin/bash #コンテナに入る
$ root@7432974# 作業をする
...
$ root@7432974# exit
$ sudo docker ps -a #先ほどのコンテナを探す
$ sudo docker commit id(コンテナID) emptySet/sample
$ sudo docker rmi nvidia/cuda
アンインストール方法
Dockerのアンインストール手順は、下記の通りである。- docker docker-engine containerd.ioを削除する
- イメージ・コンテナを削除する
$ sudo apt remove docker docker-engine containerd.io
# Docker CEを削除
$ sudo apt-get purge docker-ce docker-ce-cli
# dockerイメージやコンテナも削除
sudo rm -rf /var/lib/docker
# 不要なパッケージの削除
sudo apt autoremove
備考
- Dockerコマンド一覧 Dockerコマンド
# コンテナ作成
run image - コンテナを作成する(起動状態で)
create image - コンテナを作成する(停止状態で)
# コンテナ一覧
ps - コンテナの一覧を表示する
stats - コンテナのリソース使用状況一覧を表示する
# コンテナ操作(1)
rm container - コンテナを削除する
start container - コンテナを開始する
stop container - コンテナを停止する
kill container - コンテナを強制停止する
restart container - コンテナを再起動する
pause container - コンテナ上のプロセスを一時停止する
unpause container - コンテナ上のプロセスを再開始する
# コンテナ操作(2)
exec container - コンテナ内でプロセスを起動する
attach container - コンテナに標準入出力をアタッチする
# コンテナ操作(3)
cp srcfile dstfile - コンテナに(から)ファイルをコピーする
rename container newname - コンテナ名を変更する
update container - コンテナの設定(CPU数等)を変更する
# コンテナ詳細
logs container - コンテナのログを表示する
port container - コンテナのポートマッピングを表示する
top container - コンテナ内のプロセスの一覧を表示する
# Dockerレジストリ関連
pull name - レジストリからイメージをダウンロードする
push name - レジストリにイメージをアップロードする
search term - Dockerレジストリからイメージを検索する
login - Dockerレジストリにログインする
logout - Dockerレジストリからログアウトする
# イメージ管理
images - イメージの一覧を表示する
rmi images - イメージを削除する
history image - イメージのヒストリを表示する
commit container - コンテナからイメージを作成する
tag image NEWimage - イメージにタグをつける
build dockerfile - イメージをビルドする
trust - イメージに署名する
# ボリューム管理
volume - Dockerボリュームを管理する
# ネットワーク管理
network - Dockerネットワークを管理する
# インポート/エクスポート/セーブ/ロード
export container - コンテナをファイルにエクスポートする
import file - エクスポートファイルをイメージとしてインポートする
save image - イメージをファイルにセーブする
load file - セーブファイルをイメージとしてロードする
# Docker Swarm(クラスタリング)関連
swarm - Swarmを管理する
node - Swarmノードを管理する
stack - Swarmスタックを管理する
secret - Swarmシークレットを管理する
service - Swarmサービスを管理する
# その他
version - バージョンを表示する
help - ヘルプを表示する
info - Dockerに関するシステム情報を表示する
inspect - 様々なDockerオブジェクトの詳細情報を表示する
diff container - コンテナ生成後の更新ファイルを表示する
wait container - コンテナの停止を待ち合わせる
events - Dockerエンジンのイベントを監視・表示する
image - イメージ管理系コマンドを実行する
container - コンテナ管理系コマンドを実行する
builder - イメージビルド系コマンドを実行する
system - システム管理系コマンドを実行する
config - コンフィグを管理する
context - ビルド時のコンテキストを管理する
engine - Dockerエンジンを管理する
plugin - プラグインを管理する
オプション(OPTIONS) --config string
-c, --context string
-D, --debug
-H, --host list
-l, --log-level string
-v, --version
--tls
--tlscacert string
--tlscert string
--tlskey string
--tlsverify
$ sudo docker rm $(sudo docker ps -aq)
$ sudo docker rmi $(sudo docker images -aq)
まとめ
- Dockerの導入方法について調査、記載した
参考文献
変更履歴
- 2020/04/08: 新規作成
- 2020/05/04: アンインストール方法追記
- 2020/05/13: Dockerイメージの一括削除方法追記
0 件のコメント:
コメントを投稿