skillup

技術ブログ

サーバー・ネットワーク

dockerでの環境構築 〜コンテナ作成し、実作業ができるまで(mac編)

投稿日:2019年4月28日 更新日:

今や環境構築の保存や移行などが比較的自由にできるようにはなってきていると思います。

自分の場合は未だにvagrantのイメージフォルダを移行してやっていますが(汗)。

参考リンク

vagrantで仮想環境を別PCにコピー

やってみるとわかるんですけどvagrantの場合、非常に重いんですよね、boxを移行すると何Gも取られることが多いため、複数の環境を気軽に移行したりはできないんではないかなと思います。
(そういう用途では使わない気もしますし。)

そんなこともあり、仮想環境ツールとしてdockerを復習してます。

以前は2年ぐらい前に勉強してましたね・・・

やたらエラーがボコボコ出て結局断念した記憶があります。今回は数時間程度ですが、そこまでトラブルはなく無事にすすめられました(と言っても超基本的なことしかやってませんが。)

以前の学習リンク

dockerインストール

dockerメモ

docker上でミニサービスを起動させるまで

Dockerfileでのコンテナ作成

vagrantとdockerの違い

vagrant

  • VirtualBox起動の代理(これを使うことでVirtualBoxの起動や設定が楽になる)
    【決定版】仮想環境ってなに?Vagrantってなんなの?に答える!
  • カーネル(OSの中核部分)を含めて仮想環境を丸ごと構築
  • イメージでいうとサーバーを丸ごと作るのに近い
  • vagrantの内で全て完結
  • ホスト環境に依存しないため、丸ごと環境を移管したい時に便利かも。
  • かなり重く、起動時間も時間がかかる。複数のvagrantを入れたりするとPC自体を圧迫する

docker

  • カーネル部分はホスト環境の物を使うため、比較的軽量
  • 比較的素早く環境を建てたいor壊したい時などに便利
  • Windowsだと動かないことが結構あるらしい
  • Linux上でしか使えないため、使用する場合はVirtualBoxで仮想環境を作るか、Windows or Mac用のdockerツールを使う。

Web系のDocker民から見たVagrantについて

Macでのインストール

docker.hub(https://hub.docker.com/)でアカウントを作成後、

https://hub.docker.com/editions/community/docker-ce-desktop-mac

上記リンクの「Get Docker Desktop for Mac (Stable)」からダウンロードすればOKです。

その後、docker version で下記のようにdockerの情報が表示されればOKです。

おおまかな一連のプロセス

imageのpull

例えばCentOS6に環境を作りたいとき、CentOS6のイメージ(CentOS6のテンプレート的なもの)を取得します。

Dockerではイメージから作られた実環境のことを「コンテナ」と言います。基本的にはrunコマンドからコンテナを作成します。

必要な作業を色々

例えばhttpd,php,mysqlを実際にyumで入れるなど

適当なところでコミット&プッシュ

ある程度色々な作業をしたところでcommitをします。

このコマンドによってコンテナの状態をイメージとして登録することができます。後述しますが、この時点でDockerHubに登録することを前提としてアカウント名/リポジトリ名にします。

この時点でDockerHubに入ってリポジトリ(centos6)を作成します。

pushコマンドとはDockerHubに作成したイメージをpushします。gitのpushと全く同じです。

pushしようとしたところusername,passwordが正しくないと出ました。

Docker for macでログインはしているんですが・・・

調べたところemail、passwordでログインしてしましたが、docker loginで再度username,passwordを入力します。

docker login での Sign in について

コンテナ削除&再作成

vagrantでもそうですが、

  1. 実ホストからアクセス
  2. エディタで編集をするために実ホスト上で共有フォルダを作る

が必要になります。(準備ができていたら最初のrunコマンドからでもいいですが・・・)

1ですが、vagrantは別環境なのでipでアクセスしますが、dockerの場合はコンテナのポートを割り当てます。そのオプションが-p 8080:80です。これはコンテナの80番を実ホストの8080に割り当てるという処理です。

これによりlocalhost:8080でアクセスした時にコンテナ上の/var/www/htmlを見に行くようになります。

2ですがコンテナ上でソースを編集する場合、共有するフォルダがなければ延々とvimで作業することになります。そのため共有フォルダを作るために-v /Users/*****/docker_dev:/var/www/htmlというオプションで共有できるようにします。

ソース自体はコンテナではなくホスト上においておきましょう。同期を取るので、ホスト上のものが基本的に優先されます。(これはvagrantも一緒です。)

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

インメモリデータベース redis

インメモリデータベースのredis(レディース)について。 キャッシュとして以前はmemcachedを使っていましたが、いろいろ多機能ということでredisをちょっと触ってみようかと。 Content …

no image

webサーバーがどのように動いているか(GETとPOST)

webがリクエストを受け取って画面に表示するまでの流れをおさらい。基本です。 Contents1 全体の流れ2 参考文献 全体の流れ 1 ユーザーがブラウザのURL欄に[crayon-6624faf0 …

no image

ログ抽出コマンド特集 その2 シェルスクリプトの算術計算、配列とループ

前回の続きですが、ログを収集し、分布(80%台が~%、70%台が~%)を出したいとします。 Contents1 ロジック2 ソース3 気づいたこと4 参考リンク ロジック ロジックは以下のような流れに …

no image

sourceコマンドに関して(Linuxサーバー&MySQL)

Linux上ではコマンドをテキストファイルに記述して、

と入力すると命令を実行してくれます。 シェルスクリプトよりもお手軽に実行できる …

no image

zabbixアラートメール

以前、zabbixの基本設定についてこのエントリーでかきました。 今回はzabbixでの何らかの障害が発生した時に、アラートメールを送信したい場合について Contents1 ユーザーの登録&ユーザー …

アーカイブ