自分の復習がてらざっくりと方針を書いてみました参考になれば幸いです^^
###1:自分が作っていないけども必要なプログラムの起動
例えばwebサーバーならnginxやapacheが必要なとき、OSならCentOSやUbuntuなどが必要なときの手続きです。
大まかな手順:dockerhub(https://hub.docker.com/) の公式イメージを探し、引っ張ってきて起動します。
もしDockerのイメージが知らない場合、イメージは、プログラムの設計図だと思ってください。
Docker pull で設計図(イメージ)を引っ張ってきて、Docker runでイメージを稼働させる(コンテナと言います)になります
例:nginxを引っ張ってくる
dockerhub内を検索し、探してきます↓が見つかります
https://hub.docker.com/_/nginx/
PULL COMAMNDが書いてますので、これをサーバーのCUIで実行すればイメージを引っ張ってこれます(GitHub git clone と似た感じです)
docker pull nginx
docker runで 稼働できます(コマンド詳細はマニュアルやら本やらに詳しく記載ありますのでご参照くださいませ^^)
こんな感じでOSやその他必要なソフトを引っ張ってきます。あとは自分で書いて実際に動かしたいプログラムですね、
###2:自分のプログラムのdockerでの起動
大まかな手順
1:Dockerfileを作り、docker イメージ(設計図)を作ります。(コマンドは docker built)
2:docker push で dockerhub にレポジトリを作って保存します。
**3:docker pull で レポジトリから引っ張ってきて、docker run 稼働させます
(3からは上記「1:自分が作っていないけども必要なプログラムの起動」とおんなじです)
なお、発展編ですが、上記 OS、webサーバー、自分のプログラムと別々のdocker imageによって作られたコンテナが動くことになりますが、どうつなげるかは手動でポート番号を指定したりします。
その指定の仕方をdocker-composeという機能を使うと、ひとつのファイルにまとめて保存できるので、理解が進み次第そちらを使うとより楽です。
上記は、サーバーにSSHで入って手動でやることを想定していますが、docker対応のデプロイ自動化パッケージを使えば遠隔で作業可能です。herokuとかが有名ですかね^^ (あ!herokuだとAWSにデプロイしかできないから・・・指定のサーバーがあるとしたら、使えないですね・・・ansible かchef あたりで対応していれば使えるかもですね^^)