使用環境
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とは・・・イメージを作成する際に実行するコマンドを記述したもの。
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!!!