🦁

dockerさんでコンテナを開発する(n*´ω`*n)~開発概要~

2021/02/03に公開

はじめに

くーばねてすをやっつけるためにこれまでにLinuxさんとAWSさんと仲良くさせていただいたが、新たなステージに上がるためについにdockerさんに会いに行くことにした。dockerさんと仲良くなることでコンテナシステムの仕組みの理解とくーばねてすを倒すための調査をする。
今回はdockerさんでコンテナを開発してみる。dockerさんでコンテナを開発することによって、くーばねてすでの構築の基礎的な部分を理解する。

概要

コンテナは一つのサーバーのように設計することができる。これまでコンテナはリモートリポジトリからイメージを引っ張ってきてそこから起動したり、そこへパッケージなどをインストールをしてからそれを元にイメージを作成してきたが、ここではイメージ自体を先に設定する。
■コンテナのベースイメージ、ミドルウェア
■コンテナのソフトウェアパッケージ
■実行部分のソースコード
■dockerファイルの作成

をまとめた(^_-)-☆
サーバーと同様こんな感じにするらしい。

■コンテナのベースイメージ、ミドルウェア(docker hubから)

コンテナを実行するための基盤を決める。アプリの実行部分を動作させたり色んな要求に対応できるようにするためにコンテナのベースとしてLinuxディストリビューションを指定する。
またデータベース、WEBサーバーなど使いたい用途によってミドルウェアも指定していく。
したのイメージはdocker Hubで設定されているイメージなので設計ファイルを作成するだけでなく、インストール、設定不要でコンテナ自体を起動できる!('_')
|種類|Docker Hubのイメージ名|
| --- | --- | --- |
|Linux|alpine,busybox,ubuntu,centos,debian,fedora,amazonlinux,opensuse,oraclelinux|
|プログラミング言語|node,golang,php,python,openjdk,ruby,jaba,jruby,perl,erlang,pypy,mono,gcc,rails,ibmjava,rust,swift|
|NoSQLデータベース|redis,mongo,memcached,cassandra,couchbase|
|SQLデータベース|postgres,mysql,mariadb,percona|
|WEBサーバー|nginx,httpd|
|Servlet/JSPサーバー|tomcat,jetty,websphere-liberty|
|コンテンツ管理|wordpress,ghost,drupal|
|コンテナ|registry,docker,swarm,hello-world|
|ログ分析|ElasticSearch,lnfluxDB,logstash,telegraf,kibana|
|CI/CD|maven,jenkins,sonarqube|
|スクラッチ|scratch|

Linux
ハードウェアを管理しているソフトウェアのこと
プログラミング言語
プログラムを記述するための形式言語
NoSQLデータベース
Not only SQL 。※SQLはデータベースを操作するための言語
大量のデータを素早く処理することを優先しているデータベース
WEBサーバー
インターネットができるやつ
Servlet/JSPサーバー
Webサーバ上でJavaを動作させるためのやつ
コンテンツ管理
ウェブコンテンツを構成するテキストや画像などのデジタルコンテンツを統合・管理し、配信など必要な処理を行うやつ
コンテナ
コンテナ!
ログ分析
プログラムの実行,データの送受信などを記録したログファイルを分析するやつ
CI/CD
ソフトウェア開発において、ビルド、テスト、デプロイを自動化するして、短期間で品質管理を行えるやつ
スクラッチ
既存のものを使用せずに新規に開発していくやつ。ベースイメージから作成したりするらしい

■コンテナのソフトウェアパッケージ(インターネットから)

アプリケーションの実行に必要なソフトウェア。
主にインターネットからソースコードを取得してコンテナへ必要なソフトをインストールするか、専用のパッケージ管理システムのコマンドを使ってソフトウェアをインストールする。
パッケージマネージャーでは、実行ファイルや設定ファイルやライブラリを一括で管理できるので楽。

■実行部分のソースコード(GitHub、パソコンから)

開発フォルダやソースコードリポジトリからアプリケーションコードをイメージへコピーする。

■dockerファイルの作成

上記の内容を記述してコンテナを起動できるようにしたもの。
・ベースイメージ
・パッケージ
・ソースコード、設定ファイル
・コンテナ起動時に実行されるコマンド

などがかかれている。

まとめ

我ながらざっくりとした説明だと思った !('_')

Discussion