0
1

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 3 years have passed since last update.

Dockerの基本について

Last updated at Posted at 2021-07-21

使用環境
Docker: version 20.10.5

業務でDockerを使う機会があったので、備忘録として。
まだ初学者なので、訂正あればご指摘いただけると幸いです。

##Dockerイメージからコンテナを作成する
dockerを使用する上で、一番基本的な流れは
①dockerhubからimageをpull
②①でpullしたイメージからコンテナを作成、実行

順を追って説明する。

①dockerhubからimageをpull
これはdockerhubにあげられているimageを以下のコマンドでダウンロードする。
以下では「gihyodocker/echo:latest」をダウンロードしている。

$ docker image pull gihyodocker/echo:latest

ダウンロードが完了しているかは、以下のコマンドを実行すれば確認できる。

$ docker images

これで自分がダウンロードしているimageを確認できる。

②①でpullしたイメージからコンテナを作成、実行
ダウンロードしたimageは以下のコマンドでコンテナとして作成、実行できる。

$ docker container run -t -p 3000:3000 gihyodocker/echo:latest

このコマンドによって
http://localhost:3000」
にアクセスすることで、正常に動作していることが確認できるはずだ。

##Dockerイメージの作り方
私の場合はReactアプリの作成の際にdockerを使用したため、今回は一例としてreact環境で話を進める。
以下は私が実際に作成したアプリのディレクトリ構造である。

myapp/
 ┣public/
 ┣src/
 ┣package.json
 ・
 ・
 ・
 ┗Dockerfile

$ ・・/myapp> npm start

このアプリは上のコマンドで起動するようになっている。

このアプリのDockerイメージを作成するために、myapp直下に「Dockerfile」を設置した。

Dockerfileとは・・・イメージを作成する際に実行するコマンドを記述したもの。

Dockerfile
FROM node:latest

RUN mkdir /react_test/

ADD public /react_test/public/
ADD src /react_test/src/
ADD .gitignore /react_test/
ADD package.json /react_test/
ADD package-lock.json /react_test/
ADD README.md /react_test/
ADD yarn.lock /react_test/

WORKDIR /react_test

RUN npm install -g create-react-app
RUN npm install --save react react-dom react-scripts
CMD ["npm","start"]

以下に基本的なコマンドを記述する。

####FROM
作成するDockerイメージのベースとなるイメージを作成する。今回の例ではnodeが必要ちなるため「node:latest」をダウンロードした。ここでの「:latest」とは、最新verでダウンロードして、とお願いしているわけです。「node:16.3」だの、versionを指定してあげれば自分の環境と同じものをダウンロードすることができる。
####RUN
Dockerイメージビルド時に、Dockerコンテナ内で実行するコマンドの定義。上の例ではmkdirでファイルを配置するためのディレクトリを作成したり、npmのインストールを行っている。
####ADD
Dockerを動作させているホストマシン上のファイルやディレクトリをDockerコンテナ内に加える。今回はアプリを起動するのに必要なファイル、フォルダを加えた。
記述方法としては「ADD 加えたいファイル/フォルダ 加えるディレクトリ」
####CMD
最後にコンテナ内で実行するプロセスの指定。注意点として、Dockerfile内に1つしか持てない。今回はアプリの起動コマンドである「npm start」を書いている。
記述方法は空白毎に配列で区切って書く必要がある。
   
  
これでDOckerイメージを作成する準備は整った。
あとはコマンドを入力していくだけである。

$ docker image build -t example:latest .

これで「example」という名前のイメージが作成された。
ちゃんと作成されているかは上で記述したように

$ docker images

で確認できる。

このイメージからコンテナを作成、アプリが起動するか確かめてみよう。
先ほど同様

$ docker container run -t -p 9000:8000 example:latest

これでlocalhost:90000で起動するはずである。

  
ここでアプリの起動が確認できたら、いよいよdockerhubに自分のイメージをアップしよう。

##Dockerhubにイメージをアップする
作業手順としては
①dockerhubのアカウント作成
②dockerhubでリポジトリの作成
③dockerhubにイメージをアップ
の3つである。
これも順を追って説明する。

  
①dockerhubのアカウント作成
特に説明はいらないと思います。以下のリンクでアカウントを作成してください。
https://hub.docker.com/

②dockerhubでリポジトリの作成
ヘッダーにある「Repositories」→「Create Repository」でリポジトリ作成画面に移行する。
そこでリポジトリの名前を付けて「Create」をクリックすれば作成完了。リポジトリの名前は「自分のアカウント名/今つけた名前」となっているはずである。
######ここでは例として「atsu123456789/dockerhub」というリポジトリを作ったとする。
  
③dockerhubにイメージをアップ
先ほど作成した「example」をアップする手順を記述する。
まず、「example」のイメージ名を②で作ったリポジトリ名と同じにする必要がある。
なのでまず「example」の「IMAGE ID」を取得する必要がある。
これは

$ docker images

から取得できる。
  
ここで取得したIMAGE IDを用いて

$ docker tag IMAGE_ID USER_NAME/IMAGE_NAME:TAG

というコマンドを実行しよう。ここで「IMAGE_ID」には先ほど取得したIMAGE IDを、「USER_NAME」、「IMAGE_NAME」には任意を値を入力する。「:TAG」は入力しなくてもよい。入力しなかったら勝手に「latest」となってくれる。
これで、先ほど作った「example」は「USER_NAME/IMAGE_NAME」という名前のイメージになる。
今回の例では「:TAG」は入力せず、「atsu123456789/dockerhub」としよう。

  
これで準備は整った。あとはpushするだけである。
以下のコマンドでdockerhubにpushしてあげよう

$ docker push atsu123456789/dockerhub:latest

これでdockerhubにイメージがアップされた。

  
あとは一番最初に記述したpullコマンドを使うなりして、他人と開発環境の共有などが容易にできる!すごいぞDocker!!!

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?