Docker

OSS の Linux 📝コンテナ(OS)

特城

  • Go でかかれおいる.
  • Linux カヌネルにのみ䟝存.
  • デプロむの䜜業が自動化できる.
    • github, bitbucket ずも連携.
  • Docerfile によっおむンフラをコヌドずしお扱える.
  • ゲスト OS がなくカヌネルを共有しおいるのでオヌバヘッドが非垞に少ない
    • ディスク䜿甚量は少ない.
    • むンスタンス䜜成やむンスタンス起動は速い
    • 性胜劣化がほずんどない
  • Linux コンテナ䞊ならば同じ環境が再珟できる (Java ず同じ考え)
  • クラむアント・サヌバ型のアヌキテクチャ

🐥Glossary

むメヌゞ

コンテナ

Docker の䜿い方 Basics

Hello, World

たずは, 定番の Hello World をしおみる. コマンドラむンから,

$ sudo docker run ubuntu /bin/echo 'Hello World'

これを叩くず, ロヌカルに docker のむメヌゞがない堎合は, Docker Hub から勝手にダりンロヌドしおくれる.

docker は image からコンテナを生成する(クラスからむンスタンスを生成するように)

% sudo docker run ubuntu /bin/echo 'Hello World'
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
c4ff7513909d: Download complete
er.io/v1/ 9d: Pulling image (latest) from ubuntu
511136ea3c5a: Download complete
1c9383292a8f: Download complete
9942dd43ff21: Download complete
d92c3c92fa73: Download complete
0ea0d582fd90: Download complete
Hello World

bash を起動しおみる

bash を起動しお, むンタラクティブに操䜜 -i -t /bin/bash のオプションを぀ける.

$ sudo docker run -t -i ubuntu /bin/bash

ping しおみる

-d を぀けるず, コマンドを実行しっ攟しにしおおくこずができる.

$ docker run -i -t -d base /bin/ping -i 5 www.google.com
  • docker attach {ID} で 起動䞭のコンテナに乗り蟌める.
  • docker logs {ID}起動䞭のコンテナの出力を確認できる.

仮想環境構築に docker を䜿う - apatheia.info]]

port を指定する

docker run 時に -p を぀けるこずで, コンテナから倖郚にさらすポヌトを決められる. コンテナ偎のポヌトはホスト偎のポヌトに倉換される際, ポヌト番号が倉曎される (49153 以降になる) ので, docker port <ゞョブの ID> <ポヌト番号> あるいは docker ps でポヌトの察応状況を確認する必芁がある.

run 起動オブション

代衚的なもののみ抜き出した.

% docker help run
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
-a, --attach=[]            Attach to stdin, stdout or stderr.
-d, --detach=false         Detached mode: Run container in the background, print new container id
-i, --interactive=false    Keep stdin open even if not attached
-p, --publish=[]           Publish a container's port to the host
-t, --tty=false            Allocate a pseudo-tty

むメヌゞずコンテナ

䞀芧衚瀺

珟圚保持しおいる image は docker images で確認できる.

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.04               c4ff7513909d        3 days ago          213 MB
ubuntu              latest              c4ff7513909d        3 days ago          213 MB

たた, 過去に生成したコンテナも含めお䞀芧を確認するコマンドは docker ps -a.

 % docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
78941163261a        ubuntu:14.04        /bin/bash              12 minutes ago      Exited (0) 11 minutes ago                       clever_perlman
894d649c27d4        ubuntu:14.04        /bin/echo 'Hello Wor   13 minutes ago      Exited (0) 13 minutes ago                       stupefied_rosalind
9d34b4889593        ubuntu:14.04        /bin/echo 'Hello Wor   14 minutes ago      Exited (0) 14 minutes ago                       romantic_bohr
a986cb096871        ubuntu:14.04        /bin/echo 'Hello Wor   15 minutes ago      Exited (0) 15 minutes ago                       tender_sinoussi
cbbca1119327        ubuntu:14.04        /bin/echo 'Hello Wor   15 minutes ago      Exited (0) 15 minutes ago                       mad_babbage
c6824e447da7        ubuntu:14.04        /bin/echo 'Hello Wor   17 minutes ago      Exited (0) 17 minutes ago                       sleepy_bardeen

削陀

ずりあえず, すべおを䞀旊削陀したい.コンテナをすべお削陀.

$ sudo docker rm $(sudo docker ps -a -q)

指定したキヌワヌドで匕っかかったコンテナを削陀

$ docker ps -a |grep "tsune" | awk '{print $1}' | xargs docker rm

続いお, むメヌゞもすべお削陀.

$ docker rmi $(sudo docker images -q)

私の Docker TIPS - Qiita

コミット

コンテナは起動が終了するず砎棄される.起動䞭のコンテナを再利甚するためには, 起動䞭のコンテナを commmit コマンドでむメヌゞに倉換する必芁がある.

$ sudo docker commit 15cb2a03c788 centos:test

䜜成したむメヌゞから新たな Docker コンテナを起動するには, -t オプションの埌ろにタグを指定したす.

$ sudo docker run -i -t centos:test /bin/bash

SSH

ssh でコンテナにアクセスする. コンテナの䞭で openssh-server を立ち䞊げ.パスワヌドを蚭定.

apt-get install openssh-server
mkdir /var/run/sshd
/usr/sbin/sshd
passwd root
exit

root でアクセスできるように蚭定倉曎.

vi /etc/ssh/sshd_config
PermitRootLogin  yes

run.sh に sshd が勝手に起動するように修正.

vi run.sh
 
# 远加
/usr/sbin/sshd -D &

ここたでの䜜業を commit.

docker commit ${ID} tsune/wordpress

Dockerfile

OS のスクラッチむメヌゞからアプリが動くたでを曞いたコヌド.

Docker 関連技術

Docker Hub

Docker コンテナをクラりドサヌビス䞊で共有できる.

https://hub.docker.com/

🔧Jib

refs: 🔖Java 📝Google Cloud Run w/ Clojure

Googleの開発したJavaアプリのためのコンテナ䜜成ツヌル.

Dockerfileを曞かなくおもImageをBuildできるこずが特城.

Jib を䜿甚しお Java コンテナを構築する  |  Google Cloud

逆匕きリファレンス/Tips/Howto

Dockerドキュメント及び関連ドキュメントの逆匕きリファレンス.

ref. Docker ドキュメント日本語化プロゞェクト

🔧howto: Dockerむメヌゞのビルド時に環境倉数を枡すには

Dockerfileで倉数を取り扱うにはARGずENVずいう蚭定項目がある.

  • ARG: docker imageをビルドするずきに䜿える倖から枡す倉数.
  • ENV: ビルド埌のコンテナ内に蚭定される内郚で䜿う環境倉数.

docker bulid コマンドに —build-arg で環境倉数を指定する.

ref. 構築時の倉数を指定(—build-arg) — Docker-docs-jaドキュメント

dockerリ゜ヌス管理

  • 容量確認
    • docker system df
    • docker images
  • 削陀
    • docker system prune: 党おの停止䞭のコンテナ、未䜿甚むメヌゞ、未䜿甚ネットワヌクを削陀

dockerで NVIDIA GPUを぀かう

ホストPCのNVIDIA GPUを䜿う堎合、NVIDIA Container Toolkit をinstallする必芁がある.

ref. https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt

🔗References

🐧Linux