docker pull nginxしたものを編集し、自分のDockerHubにpushしたログ

imageは設計書。containerがそれを元に生成される。

$ docker pull nginx

コンテナ内に入る
$ docker run -it -p 8080:80 nginx bin/bash

viが使えるように
# apt update && apt install -y vim

psコマンドが使えるように
# apt update && apt install -y procps

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   3868  3228 pts/0    Ss   01:24   0:00 bin/bash
root       703  0.0  0.1   7640  2744 pts/0    R+   01:35   0:00 ps aux

nginxの起動
# nginx

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   3868  3228 pts/0    Ss   01:24   0:00 bin/bash
root       705  0.0  0.0  10636   872 ?        Ss   01:36   0:00 nginx: master process nginx
nginx      706  0.0  0.1  11032  2664 ?        S    01:36   0:00 nginx: worker process
root       708  0.0  0.1   7640  2720 pts/0    R+   01:36   0:00 ps aux

localhost:8080に表示されている

nginx止める
# nginx -s stop
2021/02/25 01:39:26 [notice] 709#709: signal process started

確認したら、止まってる
#ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   3868  3228 pts/0    Ss   01:24   0:00 bin/bash
root       710  0.0  0.1   7640  2700 pts/0    R+   01:39   0:00 ps aux

psやviコマンドをインストールしたから、imageにその設定を上書きする

一旦コンテナから抜ける(コンテナが起動→終了する)
# exit

起動しているコンテナ
% docker ps

起動していないが、存在しているコンテナ
% docker ps -a
ここにさっきのnginxのコンテナが出力される
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS                      PORTS                NAMES
c73c04f7366d   nginx     "/docker-entrypoint.…"   22 minutes ago      Exited (0) 49 seconds ago                        keen_hamilton

vi,psのダウンロードをコミット(名前はnginx-devにした)
% docker commit c73c04f7366d nginx-dev
sha256:a8b60f89df5c8bdad6a07e3327a14842f78ca6861f8c1a105103dcc879644684

コミットされて、新しいイメージが生成された。
% docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx-dev    latest    a8b60f89df5c   10 seconds ago   185MB

次から、そのイメージを使うときは、

docker run -it -p 8080:80 nginx-dev bin/bash

dockerhubにpushする

まずpushするために、tagを自分のdockerHub名に合わせる。そしてpush

$ docker tag 今のレポ名 新しいレポ名

docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx-dev    latest    a8b60f89df5c   10 seconds ago   185MB

 % docker tag nginx-dev kazumawada/nginx-dev

% docker images                               
REPOSITORY             TAG       IMAGE ID       CREATED          SIZE
kazumawada/nginx-dev   latest    a8b60f89df5c   35 minutes ago   185MB
nginx-dev              latest    a8b60f89df5c   35 minutes ago   185MB

% docker login
Authenticating with existing credentials...
Login Succeeded

% docker push kazumawada/nginx-dev:latest
The push refers to repository [docker.io/kazumawada/nginx-dev]
5d9b058db477: Pushed 
2acf82036f38: Mounted from library/nginx 
9f65d1d4c869: Mounted from library/nginx 
0f804d36244d: Mounted from library/nginx 
9b23c8e1e6f9: Mounted from library/nginx 
ffd3d6313c9b: Mounted from library/nginx 
9eb82f04c782: Mounted from library/nginx 
latest: digest: sha256:35776cc6b34e6f6948a74cd40f884585b4a1cc49bf4683787cf9b72868ef9b73 size: 1782

% docker run --rm -it kazumawada/nginx-dev

#nginx
起動確認
#ps aux
# nginx -s stop