4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dockerの使い方 2日でDocker習得編 (udemy 米国AI開発者がゼロから教えるDocker講座)

Last updated at Posted at 2020-08-11

660_bit202003301411424272.jpg

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の用意したマシンのリソース(容量)のうち、ある部分だけを仮想マシンを作ってもらい、使わせてもらうことです。

概念基本

bft_container_ojisan_03_08.jpg

基本操作

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

shell2.png

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など)を追加できる。

sharing-layers (1).jpg

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の仕組み

architecture.png

Docker Context(状況・環境) =Docker fileのあるFolder のこと
Docker Context(★フォルダまるごと)をデーモンに渡し、デーモンが処理を行うことでコンテナが作られる。

COPYとADD

基本COPYでよい
ADDはホストに圧縮したファイルがあって、それを解凍してコンテナ落としたいときに使う。

ENV 環境変数を設定 (↓よくある書き方2選)
ENV 1
2 =

WORKDIR
デフォルトだとdcokerfileからdockerimageを作る際、コンテナ側のroot直下にフォルダを作成する。
それを避けるために、WORKDIRで作りたいフォルダを指定する。

ホストのファイルシステムをコンテナにマウントする

docker-v01-300x144.png

目的
・コンテナを軽くするため(共有するものであるため)
コンテナは解析をするための場所(実行環境)として使い、ホストにコードを置く。

<マウントのやり方>
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)マンション 、「どのような方法」で「どこのマンション(コンピュータ)」の「何号室(何番ポート)」を使うか

20181118153602.png

重要     ホスト→コンテナへポートを繋げるやり方

-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 ソフトの情報が書いてあるところ

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?