Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【基本編】Dockerを使ってみる 自己学習①

Dockerの学習中に、たくさんのコマンドが出てきたのでアウトプットしていきます。

Docker Hubとは

image.png
Docker imageが管理されているレジストリの名前(Git Hubみたいな感じ)。
Docker imageを管理するレジストリは他にもあるが、その一つがこのDocker Hubである。

リポジトリーの共有

Git Hub同様、Docker Hubもリポジトリーで管理することが可能。
そのリポジトリー(image)をチームなど、様々な人と共有することで簡単に開発環境を整えられる。
Git Hubでいう、リモートリポジトリをローカルにクローンするイメージ。

Docker Hubを使用するには

Docker HubのWebサイトから新規登録を行う。
ターミナルを開き、ログインを行う。

$ docker login 
Login Succeeded

と表示されれば、ログイン成功。

リポジトリー(image)をローカル(Host)へPullする

Docker Hubで管理しているリポジトリーをローカルにプルする。

$ docker pull <imageの名前>

例えば、testOSがリポジトリ名であれば

$ docker pull testOS

これで、リポジトリのクローンがローカルに完成。

コンテナを作成する

testOSが入ったコンテナで作業するために、runコマンドを実行する。

$ docker run -it testOS bash

これでコンテナを作成し、コンテナの中に入ることが出来る。
ここで一旦次のパートで情報を整理する。

コンテナを作成する理由は?

先ほどDocker HubからtestOSというリポジトリー(image)をローカルにPullしました。
しかし、この時点ではローカル環境でtestOSを使うことは出来ません。

例えば、作成するアプリケーションの開発環境でtestOSが必要なので、testOSを使えるようにしたいとする。
そこで、testOSが含まれるコンテナを作成し、そのコンテナの中で作業することで、testOSが使えるようになる。

コンテナから抜けるには

$ exit

このコマンドで、コンテナから抜けることが出来る。

ローカルで管理しているコンテナの確認方法

$ docker ps -a

-aを付けないと、動いているコンテナしか表示されないので、全て表示するには-aが必要。

ローカルで管理しているイメージの確認方法

$ docker images

exitした後に、再度コンテナの中に入る方法

runした後にexitコマンドでコンテナから抜けると、コンテナはexited状態になる。
このままではコンテナが起動しておらず、中に入ることが出来ないので、再度立ち上げる。

$ docker restart

その後、execコマンドで、再びコンテナに入るコマンドを打つ

$ docker exec -it <containerの名前> bash 

Docker imageに変更を保存する方法

開発環境で、RubyやPHP、Javascriptが必要になったとする。
一人がコンテナの中で、Ruby、PHP,Javascriptを扱えるように設定した。

他の人も同じ環境構築をするのは手間も時間もかかり大変。
→ 一人が設定したコンテナの作業環境をimage(リポジトリ)に保存し、提供すれば解決!

$ docker commit <container> <image>

このコマンドで、コンテナの変更内容をimageに保存する。

Docoker Hubにimageをプッシュ前に、タグで名前を一致させる

予めDocker Hubでリポジトリを新規作成しておく。(ここではnew-repoとする)
名前が一致している必要があるので、タグを付ける。

$ docker tag old-repo:updated username/new-repo

old-repoが変更を加えたローカルのリポジトリで、タグが更新を表すupdated。
Docker Hubで新規作成した「new-repo」にusername/new-repoで名前を一致させる。

Docoker Hubにimageをプッシュする

$ docker push username/new-repo

これでDocker Hubで管理しているリポジトリにプッシュが完了
プルすることで、変更が加えられたimage(リポジトリ)をローカルで扱えるようになる。

imageの削除方法

$ docker rmi <image>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away