Dockerの使い方 2日でDocker習得編 (udemy 米国AI開発者がゼロから教えるDocker講座)
Docker マスコットのmobyくん
目標
祝日丸一日 8/10 半日勤務日 8/11の合計2日(実質1.5日)でDockerを叩き込む
以下、学習のログ (1日目)
前提
Q 仮想化とは?
仮想化は、PCの中に仮想的なコンピューターを作る技術です。一台のPC内に、MAC、Windowsなど別のPCが入っているイメージです。(そう見せかける技術)
Q 仮想化とコンテナの違い
コンテナは仮想OSを立ち上げる必要がありません!ホスト(自分のPC)のOSのカーネルを共有することによって、
独立した環境設定を作る技術です。
クラウドとのつながりが深いので、クラウドの勉強もするとより解像度が上がりそうです。(今度、深めます)
Qクラウドとは?
サーバーの一部を貸し出すことです。
ex)AWS
AWSの用意したマシンのリソース(容量)のうち、ある部分だけを仮想マシンを作ってもらい、使わせてもらうことです。
概念基本
基本操作
LINUXコマンド 内容
cd <path>| pathに移動 (cd = change the directory)
pwd| 現在のディレクトリを表示
mkdir| <new folder> 新しいフォルダを作成
touch <new file>| 新しいファイルを作成
ls | cd のフォルダ一覧を表示
rm <file> | fileを削除
rm-r <folder> | folderを削除
kernerlとShell
shellを起動するためのアプリがターミナル
1 Docker image 作成(hubを使う)
1 Docker hub へログイン
$docker login
2 hubからimageをpullする
$docker pull
3 docker image を起動(run) (コンテナを作る)
$docker run -it <image> bash
4 コンテナから出る
$exit
5 ホストにあるコンテナ一覧表示
$docker ps -a
6ホストにあるイメージを表示
$docker images
7exit状態のコンテナに入る
$docker restart
8指定したプログラムを実行
$docker exec -it<container> bash
9コンテナから新しいimageを作る
$docker commit images
10新しい名前にをタグづけする
$docker tage <oldname><newname>
11 docker hub にあげる
$docker push
docker layer のイメージ
(point) 新しく層(layer)を追加するだけで、コンテナに機能(プログラムex pythonなど)を追加できる。
3 Docker コンテナ
Q runとは?
A run = create+ start
コンテナの削除
$ docker rm 削除(1〜) (※複数指定したい場合は、スペースあける)
$ docker system prune 全削除
コンテナの名前をつける
$docker run --name<name> image
コンテナの使い方 2つ
1 常に起動
2 時々使い、すぐ捨てる
detatch mode (コンテナを起動後、deatchする)
$docker run -d <image>
foregraound mode (一回きりの起動で捨てる)
$docker run --rm <image>
4 Docker file
Docker file→Docker image を作る(ビルド)
dockerfileの作り方
INSTRUCTION (命令コマンド) argument(引数) で作る
主な4つ
FROM
ADD
RUN
CMD
FROM image 元となるイメージ
FROM ubuntu:latest
RUN Linux コマンドの実行
RUN touch test
(ファイルを作成)
(重要)Docker image layerの数は最小限にする
(理由)runするたびにコンテナが作られ、開発現場において、容量が圧迫される
(layer を作るのはrun,copy,addの3つ)
CMD コンテナのデフォルトのコマンドを指定
CMD[executable(コマンド)]
最後に記述する
・1つのDockerfileに一つだけ
docker context と docker deamonの仕組み
Docker Context(状況・環境) =Docker fileのあるFolder のこと
Docker Context(★フォルダまるごと)をデーモンに渡し、デーモンが処理を行うことでコンテナが作られる。
COPYとADD
基本COPYでよい
ADDはホストに圧縮したファイルがあって、それを解凍してコンテナ落としたいときに使う。
ENV 環境変数を設定 (↓よくある書き方2選)
ENV 1
2 =
WORKDIR
デフォルトだとdcokerfileからdockerimageを作る際、コンテナ側のroot直下にフォルダを作成する。
それを避けるために、WORKDIRで作りたいフォルダを指定する。
ホストのファイルシステムをコンテナにマウントする
目的
・コンテナを軽くするため(共有するものであるため)
コンテナは解析をするための場所(実行環境)として使い、ホストにコードを置く。
<マウントのやり方>
docker run (-it) -v <hostのパス> <containerのパス> (bash)
★-vをつけてコンテナを実行する
★かなりの頻度で使う
★コンテナ操作側がroot権限で実行するため、セキュリティ上問題
root権限問題の解消 (ユーザーIDとグループIDを指定して、コンテナをRUNする)
run -u <ユーザーID>:<グループID>
$(id -u):$(id -g)
#Linuxコマンド
ユーザーIDの指定
id -u
グループIDの指定
id -g
パーミッション(アクセス権限)見方
d rwx rwx rwx (実際 drwxrwxw-xwなどと書かれる)
(所有者) (所有グループ) (その他)
"d"ディレクトリ "-"ファイル "l"シムリンク
ホストのポートをコンテナのポートにつなげる
※ポート・・アクセスできる入り口
ネットワーク通信で必要な「プロトコル」 「IPアドレス」と「ポート番号」が必要
ex)マンション 、「どのような方法」で「どこのマンション(コンピュータ)」の「何号室(何番ポート)」を使うか
重要 ホスト→コンテナへポートを繋げるやり方
-p <host-port>:<container-port>
コンテナをWEBサービスとして立てる
CPU・メモリの上限を設定する
*共同開発だと1台のホストサーバー(クラウド上など)に負荷がかかりすぎて、ダウンすることもある・・。
<やり方>
$docker run -it --rm --cpus 4 --memory 2g ubuntu bash
(CPU上限) (メモリ上限)
コンテナの情報を一覧表示
dockler inspect <container>
docker inspect <container> | grep -i cpu #特定の情報のみ表示 ここではCPU
補足
・コンテナを実行するとroot権限(管理者権限=何でもできる権限)になる。
・環境変数
・OSが持っている変数(全てのプログラムに適用される) 変更可能
ex)HOME,PATH,USER
・プロンプト($) 意味 ここから入力しなさい
・CLI コマンドでのマシンとの対話
・Registory ソフトの情報が書いてあるところ
Author And Source
この問題について(Dockerの使い方 2日でDocker習得編 (udemy 米国AI開発者がゼロから教えるDocker講座)), 我々は、より多くの情報をここで見つけました https://qiita.com/sicentistengineer01/items/0e165369b287e34feb47著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .