Docklerのダウンロード
# yum -y install docker
# 1.Dockerコマンドの基礎
## 1-1.imageの管理
### imageのダウンロード
[[email protected] ~]$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
214ca5fb9032: Pull complete
f0156b83954c: Pull complete
5c4340f87b72: Pull complete
9de84a6a72f5: Pull complete
63f91b232fe3: Pull complete
860d24db679a: Pull complete
Digest: sha256:2c72b42c3679c1c819d46296c4e79e69b2616fa28bea92e61d358980e18c9751
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
### ローカルにあるdockerイメージの一覧を表示
[[email protected] ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7425d3a7c478 4 days ago 141MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
```
[[email protected] ~]$ docker history nginx
IMAGE CREATED CREATED BY SIZE COMMENT
7425d3a7c478 4 days ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
4 days ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B
4 days ago /bin/sh -c #(nop) EXPOSE 80 0B
4 days ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
4 days ago /bin/sh -c #(nop) COPY file:09a214a3e07c919a… 4.61kB
4 days ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB
4 days ago /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0… 1.96kB
4 days ago /bin/sh -c #(nop) COPY file:65504f71f5855ca0… 1.2kB
4 days ago /bin/sh -c set -x && addgroup --system -… 61.1MB
4 days ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~bullseye 0B
4 days ago /bin/sh -c #(nop) ENV NJS_VERSION=0.7.2 0B
4 days ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.21.6 0B
4 days ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
4 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
4 days ago /bin/sh -c #(nop) ADD file:4a0bb88956083aa56… 80.4MB
[[email protected] ~]$ docker rmi nginx
Untagged: nginx:latest
Untagged: [email protected]:2c72b42c3679c1c819d46296c4e79e69b2616fa28bea92e61d358980e18c9751
Deleted: sha256:7425d3a7c478efbeb75f0937060117343a9a510f72f5f7ad9f14b1501a36940c
Deleted: sha256:c263493a5dc62ebefab0486e0019affdd5f663aad79cb5cf67f1ef21b2aba3c4
Deleted: sha256:c0a19d1cdcd1bebfd81765ad4971708d177b06a1cb0eaf0bb721745fd8d7f055
Deleted: sha256:c953b0422ec13844d8700eaf0159a800fba90fa6321f6ce1adc57f7f8566a0f1
Deleted: sha256:f121c2b08c669e9bb8e37bdc4ca0f32047d1b37f3ca3e3e302d9d1350301ad0b
Deleted: sha256:138bdf299d05c844ac8833a0a2227499678214d264c3f6dde62cd4c9fb134932
Deleted: sha256:fd95118eade99a75b949f634a0994e0f0732ff18c2573fabdfc8d4f95b092f0e
docker run <イメージ名> [:タグ名] コマンド
# docker run centos:6 cat /etc/redhat-release
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CentOS release 6.10 (Final)
そのほかにも、nginxというコンテナ名で起動。その場合は「--name」オプションをつける。
[[email protected] ~]$ docker run --publish 80:80 --name nginx nginx
#--publishは「-p」でもよい。
#80:80は、ホスト側のポートが80で、コンテナ側が80ということ
#host側はなんでもよい
#nginはデフォルトで80番ポートをオープンにしている
バックグラウンドで起動したい場合は以下
detach
することでターミナルからコンテナプロセスから切断することでアウトプットが返ってこなくなる。
docker run -p 80:80 --detach nginx
[[email protected] ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af082867c083 nginx "/docker-entrypoint.…" 33 seconds ago Up 31 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
動作終了したコンテナも含めて表示する場合は「-a」おオプションをつける。
docker stop <コンテナid>
停止したコンテナも含めてコンテナの一覧を表示したい場合は
[[email protected] ~]$ docker ps -all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af082867c083 nginx "/docker-entrypoint.…" 5 minutes ago Exited (0) 6 seconds ago nginx
[[email protected] ~]$
[[email protected] ~]$ docker rm <コンテナid>
$ docker exec --interractive --tty <コンテナid> bash
でコンテナ内のシェルの中に入ることができる。
bash
じゃなくてもsh
でもよい。
--interractive
と--tty
をまとめて-it
と表記してもよい。
[[email protected] ~]$ docker exec -it c7822718378e bash
[email protected]:/# pwd
/
[email protected]:/# whoami
root
[email protected]:/# cd /home/
/home
[email protected]:~# exit
exit
下記で、CentOS6のコンテナ内のシェルでコマンドを実行。
# docker run -it --name centosA centos:6 /bin/bash
コンテナから一時的に抜けるには、[Ctrl+P]+[Ctrl+Q]を実行する。この状態ではバックグラウンドではコンテナが実行中なので
再接続するためには、 docker attach
# docker attach centosA1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
[[email protected] /]#
コンテナを抜けて終了するためにはexitする。
[[email protected] /]# exit
exit
[[email protected] ~]# docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナの再開には「docker start コンテナ名またはコンテナID」を実行する。
まずは上書きしたいコンテナを調べる
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7822718378e nginx "/docker-entrypoint.…" 6 days ago Up 6 days 0.0.0.0:80->80/tcp, :::80->80/tcp modest_bassi
続いて、上書きしたいコンテナの中に入ってindex.htmlファイルを上書く。
[[email protected] ~]# docker exec -it c7822718378e bash
[email protected]:/# echo "Hello Taro">/usr/share/nginx/html/index.html
[email protected]:/# exit
exit
上書きしたコンテナを新規にイメージを作成
[[email protected] ~]# docker commit c7822718378e hello_Taro
sha256:ddb0b29808eb56539258060046bf06fdd12587a0057648f8d0714a4e40c11643
上書きした元のコンテナを停止。
[[email protected] ~]# docker stop c7822718378e
c7822718378e
新規に作成したイメージからコンテナを起動。
注意点として、ローカル側のポートは使われていないポートにすること。
今回は8080番ポートを使用する。
[[email protected] ~]# docker run -p 8080:80 -d --name hello_Taro hello_Taro
0931b542971f319c69eff05962efd69618a147064520b59396596f38df85b786
ちゃんと接続できる確認。
[[email protected] ~]# curl localhost:8080
Hello Taro
できました。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント