Dockerfile に基づいて Tomcat イメージを構築する方法

Dockerfile に基づいて Tomcat イメージを構築する方法

Dockerfile は Docker イメージを構築するために使用されるファイルです。コマンドパラメータスクリプト!

ビルド手順:

  • Dockerfileを書く
  • Dockerビルドはミラーを構築する
  • docker runはイメージを実行します
  • docker push はイメージを公開します (DockerHub、Alibaba Cloud イメージ リポジトリ)
# contes を例に挙げて、dockerhub で contes の dockerfile を表示します。

ゼロから
centos-7-x86_64-docker.tar.xz を追加します /

ラベル \
  org.label-schema.schema-version="1.0" \
  org.label-schema.name="CentOS ベースイメージ" \
  org.label-schema.vendor="CentOS" \
  org.label-schema.license="GPLv2" \
  org.label-schema.build-date="20200809" \
  org.opencontainers.image.title="CentOS ベースイメージ" \
  org.opencontainers.image.vendor="CentOS" \
  org.opencontainers.image.licenses="GPL-2.0のみ" \
  org.opencontainers.image.created="2020-08-09 00:00:00+01:00"

コマンド ["/bin/bash"]

DockerFile ビルドプロセス

基本:

  • 各予約キーワード (コマンド) は大文字にする必要があります。
  • 実行順序は上から下です
  • コメントを示す
  • 各命令は新しいイメージレイヤーを作成して送信します。

Dockerfile は開発向けです。将来的にプロジェクトを公開したりイメージを作成したりしたい場合は、Dockerfile ファイルを作成する必要があります。このファイルは非常にシンプルです。

Docker イメージは徐々にエンタープライズ配信の標準になりつつあります。

DockerFile: イメージをビルドし、すべてのステップとソース コードを定義します。

DockerImages: DockerFile をビルドして生成されたイメージ。このイメージが、最終的にリリースして実行する製品です。

Docker コンテナ: コンテナはサービスを提供するために実行されるイメージです。

DockerFileの手順

FROM # ベースイメージ MAINTAINER # イメージを作成した人は誰ですか? 名前 + メールアドレス RUN # イメージをビルドするときに実行するコマンド ADD # 手順 例: tomcat image---》tomcat の圧縮パッケージを入れます。コンテンツを追加しますWORKDIR # イメージの作業ディレクトリVOLUME # マウントされたディレクトリの場所EXPOST # ポート設定を公開しますCMD # このコンテナの起動時に実行するコマンドを指定します。最後のコマンドのみが有効になり、置き換えることができますENTRYPOINT # このコンテナの起動時に実行するコマンドを指定します。コマンドを追加できますONBUILD # 継承された DockerFile をビルドするときに、ONBUILD 命令が実行され、命令がトリガーされますCOPY # ADD と同様に、ファイルをイメージにコピーしますENV # ビルド時に環境変数を設定します

フィールドテスト

Docker Hubのイメージの99%は、ゼロから構築されたベースイメージに基づいており、構築に必要なソフトウェアと構成で構成されています。

独自の Centos を作成する

# 1. CentosからDockerFileファイルを書き込む
# 著者情報 MAINTAINER yinxiaodong<[email protected]>
# 環境変数 ENV MYPATH /user/local を設定します
# イメージの作業ディレクトリを指定する WORKDIR $MYPATH 
 
yum install -y vimを実行します。
yum install -y net-toolsを実行します。
# ポート 80 を公開 EXPOSE 80
 
CMD エコー $MYPATH
CMD エコー "---------終了---------"
コマンド /bin/bash


# 2. ファイルを使用してイメージをビルドする# コマンド docker build -f dockerfile ファイル パス -t イメージ名: バージョン番号。
[root@localhost dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 。
ビルドコンテキストを Docker デーモンに送信しています 2.048kB
ステップ 1/9: Centos から
 ---> 0d120b6ccaa8
ステップ 2/9: MAINTAINER yinxiaodong<[email protected]>
 ---> f79b12ffb083 で実行中
中間コンテナ f79b12ffb083 を削除しています
 ---> 8ee53d3f7a65
ステップ 3/9: ENV MYPATH /user/local
 ---> 659a2c96d5f7 で実行中
中間コンテナ 659a2c96d5f7 を削除しています
 ---> 59ab131ef44c
ステップ 4/9: WORKDIR $MYPATH
 ---> 0b4b8f9c65bb で実行中
中間コンテナ 0b4b8f9c65bb を削除しています
 ---> 408b06671488
ステップ5/9: yum install -y net-toolsを実行します
 ---> 151f81148a87 で実行中
CentOS-8 - AppStream 118 kB/s | 5.8 MB 00:50  
CentOS-8 - ベース 218 kB/s | 2.2 MB 00:10  
CentOS-8 - 追加 1.8 kB/s | 7.3 kB 00:04  
依存関係が解決されました。
================================================================================
 パッケージ アーキテクチャ バージョン リポジトリ サイズ
================================================================================
インストール中:
 net-tools x86_64 2.0-0.51.20160912git.el8 ベースOS 323 k

取引概要
================================================================================
1 パッケージをインストール

合計ダウンロードサイズ: 323 k
設置サイズ: 1.0M
パッケージのダウンロード:
net-tools-2.0-0.51.20160912git.el8.x86_64.rpm 219 kB/秒 | 323 kB 00:01  
--------------------------------------------------------------------------------
合計 66 kB/s | 323 kB 00:04   
警告: /var/cache/dnf/BaseOS-f6a80ba95cf937f2/packages/net-tools-2.0-0.51.20160912git.el8.x86_64.rpm: ヘッダー V3 RSA/SHA256 署名、キー ID 8483c65d: NOKEY
CentOS-8 - ベース 162 kB/s | 1.6 kB 00:00  
GPG キー 0x8483C65D をインポートしています:
 ユーザー ID: 「CentOS (CentOS 公式署名キー) <[email protected]>」
 指紋: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 出典: /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
キーが正常にインポートされました
トランザクションチェックを実行中
トランザクションチェックが成功しました。
トランザクションテストの実行
トランザクションテストが成功しました。
トランザクションの実行
 準備中: 1/1 
 インストール中: net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 
 実行中のスクリプトレット: net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 
 検証中: net-tools-2.0-0.51.20160912git.el8.x86_64 1/1 

インストール済み:
 ネットツール2.0-0.51.20160912git.el8.x86_64                   

完了!
中間コンテナ 151f81148a87 を削除しています
 ---> c0a0546c9b2a
ステップ 6/9: EXPOSE 80
 ---> 42000936515d で実行中
中間コンテナ42000936515dの取り外し
 ---> fe68114ecf3f
ステップ 7/9: CMD echo $MYPATH
 ---> c393fc53a354 で実行中
中間コンテナ c393fc53a354 を削除しています
 ---> a6924276bf90
ステップ 8/9: CMD echo "---------end--------"
 ---> 5994de56f0a1 で実行中
中間コンテナ 5994de56f0a1 を削除しています
 ---> a8ba0ebb3770
ステップ 9/9 : CMD /bin/bash
 ---> d1fa2d436363 で実行中
中間コンテナ d1fa2d436363 を削除しています
 ---> 41bb76be4884
41bb76be4884 の構築に成功しました
mycentos のタグ付けに成功しました:0.1
[root@localhost dockerfile]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
mycentos 0.1 41bb76be4884 7秒前 246MB
centos 1.0 d840628c30a9 6 時間前 215MB
centos 最新 0d120b6ccaa8 2日前 215MB

# mycentos を起動し、ifconfig コマンドを使用して IP 情報を表示します [root@localhost dockerfile]# docker run -it mycentos:0.1
[root@494c2bc72263 ローカル]# ifconfig
eth0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500
    inet 172.17.0.3 ネットマスク 255.255.0.0 ブロードキャスト 172.17.255.255
    ether 02:42:ac:11:00:03 txqueuelen 0 (イーサネット)
    RXパケット 6バイト 516 (516.0 B)
    RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0
    TXパケット 0 バイト 0 (0.0 B)
    TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 ネットマスク 255.0.0.0
    ループ txqueuelen 1000 (ローカル ループバック)
    RXパケット 0 バイト 0 (0.0 B)
    RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0
    TXパケット 0 バイト 0 (0.0 B)
    TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0
# dockerfile で指定したディレクトリとまったく同じ /user/local ディレクトリを確認します [root@494c2bc72263 local]# pwd
/ユーザー/ローカル

イメージのビルド履歴を表示する

# コマンド docker history イメージ ID

[root@localhost ~]# docker 履歴 41bb76be4884
画像作成者 サイズ コメント
41bb76be4884 16 分前 /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B         
a8ba0ebb3770 16 分前 /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B         
a6924276bf90 16 分前 /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B         
fe68114ecf3f 16 分前 /bin/sh -c #(nop) EXPOSE 80 0B         
c0a0546c9b2a 16 分前 /bin/sh -c yum install -y net-tools 31.3MB       
408b06671488 17 分前 /bin/sh -c #(nop) WORKDIR /user/local 0B         
59ab131ef44c 17 分前 /bin/sh -c #(nop) ENV MYPATH=/user/local 0B         
8ee53d3f7a65 17 分前 /bin/sh -c #(nop) MAINTAINER yinxiaodong<m1… 0B         
0d120b6ccaa8 2日前 /bin/sh -c #(nop) CMD ["/bin/bash"] 0B         
<不足> 2 日前 /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B         
<不足> 2 日前 /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d… 215MB

イメージを取得すると、それがどのように作成されたかを調べることができます---->docker history image id

CMDとENTRYPOINTの違い

CMD #このコンテナの起動時に実行するコマンドを指定します。最後のコマンドのみが有効になり、置き換えることができます。ENTRYPOINT #このコンテナの起動時に実行するコマンドを指定します。コマンドを追加できます。#CMD をテスト
# DockerFile ファイルを書き込む [root@localhost dockerfile]# cat dockerfile-cmd-test 
Centosより
コマンド ["ls","-a"]
# DockerFile [root@localhost dockerfile] に基づいてイメージをビルドします。# docker build -f dockerfile-cmd-test -t testcmd:0.1 。
ビルドコンテキストを Docker デーモンに送信 3.072kB
ステップ 1/2: Centos から
 ---> 0d120b6ccaa8
ステップ 2/2 : CMD ["ls","-a"]
 ---> b3f8ba72222b で実行中
中間コンテナ b3f8ba72222b を削除しています
 ---> 561e47f88730
561e47f88730 の構築に成功しました
testcmd:0.1 のタグ付けに成功しました # ビルドに成功しました# イメージを表示 [root@localhost dockerfile]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
testcmd 0.1 561e47f88730 6秒前 215MB
centos 最新 0d120b6ccaa8 2日前 215MB
# イメージを起動し、ls -a コマンドが有効であることを確認します [root@localhost dockerfile]# docker run -it testcmd:0.1
. .dockerenv dev home lib64 media opt root sbin sys usr
.. bin etc lib lost+found mnt proc run srv tmp var

# 起動コマンドに -l を追加します。ls -a -l を期待しますが、エラーが報告されます。ここでは、ls -a が -l に置き換えられています。最後のコマンドは -l なので、エラーが報告されます。
[root@localhost dockerfile]# docker run -it 561e47f88730 -l
docker: デーモンからのエラー応答: OCI ランタイムの作成に失敗しました: container_linux.go:349: コンテナ プロセスの開始により "exec: \"-l\" が発生しました: $PATH に実行可能ファイルが見つかりません: 不明。
# 起動コマンドを docker run -it testcmd:0.1 ls -al に置き換え、詳細情報を正常に出力します。
[root@localhost dockerfile]# docker run -it testcmd:0.1 ls -al
合計 0
drwxr-xr-x. 1 ルート ルート 6 8月 13 08:20 .
drwxr-xr-x. 1 ルート ルート 6 8月 13 08:20 ..
-rwxr-xr-x. 1 ルート ルート 0 8月13日 08:20 .dockerenv
lrwxrwxrwx. 1 ルート ルート 7 5月 11 2019 bin -> usr/bin
drwxr-xr-x. 5 ルート ルート 360 8月13日 08:20 dev
drwxr-xr-x. 1 ルート ルート 66 8月13日 08:20 など
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 ホーム
lrwxrwxrwx. 1 ルート ルート 7 2019年5月11日 lib -> usr/lib
lrwxrwxrwx. 1 ルート ルート 9 2019年5月11日 lib64 -> usr/lib64
drwx------. 2 ルート ルート 6 8月 9 21:40 lost+found
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 メディア
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 mnt
drwxr-xr-x. 2 ルート ルート 6 2019年5月11日 opt
dr-xr-xr-x. 123 ルート ルート 0 8月13日 08:20 proc
dr-xr-x---. 2 ルート ルート 162 8月 9日 21:40 ルート
drwxr-xr-x. 11 ルート ルート 163 8月9日 21:40 実行
lrwxrwxrwx. 1 ルート ルート 8 2019年5月11日 sbin -> usr/sbin
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 srv
dr-xr-xr-x. 13 ルート ルート 0 8月11日 09:58 sys
drwxrwxrwt. 7 ルート ルート 145 8月 9日 21:40 tmp
drwxr-xr-x. 12 ルート ルート 144 8月 9日 21:40 usr
drwxr-xr-x. 20 ルート ルート 262 8月 9日 21:40 var



# テスト 2: DockerFile の CMD を ENTRYPOINT に置き換えて再構築し、実行して結果を確認します [root@localhost dockerfile]# cat dockerfile-cmd-test 
Centosより
エントリポイント ["ls","-a"]
# イメージを再構築します [root@localhost dockerfile]# docker build -f dockerfile-cmd-test -t testcmd:0.2 。
ビルドコンテキストを Docker デーモンに送信 3.072kB
ステップ 1/2: Centos から
 ---> 0d120b6ccaa8
ステップ 2/2: ENTRYPOINT ["ls","-a"]
 ---> c634ca09fabe で実行中
中間コンテナの削除 c634ca09fabe
 ---> 52d295395f08
52d295395f08 の構築に成功しました
testcmd:0.2 のタグ付けに成功しました
# イメージを表示 [root@localhost dockerfile]# docker images
リポジトリ タグ イメージ ID 作成 サイズ
testcmd 0.2 52d295395f08 7秒前 215MB
testcmd 0.1 561e47f88730 12分前 215MB
centos 最新 0d120b6ccaa8 2日前 215MB
# testcmd:0.2 image を実行し、-l を追加すると、詳細情報が印刷されます。	
[root@localhost dockerfile]# docker run -it testcmd:0.2 -l
合計 0
drwxr-xr-x. 1 ルート ルート 6 8月 13 08:17 .
drwxr-xr-x. 1 ルート ルート 6 8月 13 08:17 ..
-rwxr-xr-x. 1 ルート ルート 0 8月13日 08:17 .dockerenv
lrwxrwxrwx. 1 ルート ルート 7 5月 11 2019 bin -> usr/bin
drwxr-xr-x. 5 ルート ルート 360 8月13日 08:17 dev
drwxr-xr-x. 1 ルート ルート 66 8月 13 08:17 など
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 ホーム
lrwxrwxrwx. 1 ルート ルート 7 2019年5月11日 lib -> usr/lib
lrwxrwxrwx. 1 ルート ルート 9 2019年5月11日 lib64 -> usr/lib64
drwx------. 2 ルート ルート 6 8月 9 21:40 lost+found
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 メディア
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 mnt
drwxr-xr-x. 2 ルート ルート 6 2019年5月11日 opt
dr-xr-xr-x. 121 ルート ルート 0 8月13日 08:17 proc
dr-xr-x---. 2 ルート ルート 162 8月 9日 21:40 ルート
drwxr-xr-x. 11 ルート ルート 163 8月9日 21:40 実行
lrwxrwxrwx. 1 ルート ルート 8 2019年5月11日 sbin -> usr/sbin
drwxr-xr-x. 2 ルート ルート 6 5月 11 2019 srv
dr-xr-xr-x. 13 ルート ルート 0 8月11日 09:58 sys
drwxrwxrwt. 7 ルート ルート 145 8月 9日 21:40 tmp
drwxr-xr-x. 12 ルート ルート 144 8月 9日 21:40 usr
drwxr-xr-x. 20 ルート ルート 262 8月 9日 21:40 var

DockerFile の多くのコマンドは非常に似ています。それらの違いを理解する必要があります。学習する最良の方法は、それらを比較してテストし、結果を確認することです。

実戦:トムキャットイメージ

1. イメージファイル tomcat 圧縮パッケージ jdk 圧縮パッケージを準備する

[root@localhost tomcat]# ls
apache-tomcat-8.5.43.tar.gz Dockerファイル jdk-8u211-linux-x64.tar.gz read.txt

2. Dockerfile ファイル (正式名称は Dockerfile) を記述します。ビルド時にこのファイルが自動的に検出されるため、-f 指定は必要ありません。

# centosから基本をインポートする
# 著者情報 MAINTAINER yinxiaodoong<[email protected]>

# ファイル read.txt をコンテナの /usr/local/read.txt ディレクトリにコピーします。 COPY read.txt /usr/local/read.txt

# jdk tomcat を追加 ---> 自動的に解凍 ADD jdk-8u211-linux-x64.tar.gz /usr/local/
apache-tomcat-8.5.43.tar.gz /usr/local/ を追加します。

# vimコマンドをインストールします RUN yum install -y vim


#MYPATH を設定する
ENV MYPATH /usr/local/
#コンテナに入るためのデフォルトパスを指定します /user/local/ 
ワークディレクトリ $MYPATH


# jdk環境変数ENV JAVA_HOME /usr/local/jdk1.8.0_211を設定します
ENV クラスパス $JAVA_HOME/lib/dt.jat:$JAVA_HOME/lib/tools.jar

# tomcat環境変数ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.43を設定します
環境変数 CATALINA_BASH /usr/local/apache-tomcat-8.5.43

環境変数 PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin


# ポート 8080 を公開 EXPOSE 8080


# /usr/local/tomcat/webapps# 
# コンテナを起動するときにTomcatを起動する
コマンド /usr/local/apache-tomcat-8.5.43/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.43/logs/catalina.out 

# tomcatイメージをビルドする [root@localhost tomcat]# docker build -t mytomcat 
[root@localhost tomcat]# docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
mytomcat 最新 a9707559afa1 8秒前 693MB
centos 最新 0d120b6ccaa8 4日前 215MB


[root@localhost tomcat]# docker run -d -p 8081:8080 --name mytomcat--01 -v /home/yinxiaodong/build/tomcat/test:/usr/local/apache-tomcat-8.5.43/webapps/test -v /home/yinxiaodong/build/tomcat/logs:/usr/local/apache-tomcat-8.5.43/logs mytomcat

自分の画像を公開する

DockerHubに公開

アドレス: https://hub.docker.com/ 自分のアカウントを登録する

アカウントにログインできることを確認してください

弊社のサーバーに送信

[root@localhost ログ]# docker ログイン --help

使用方法: docker login [OPTIONS] [SERVER]

Docker レジストリにログインします。
サーバーが指定されていない場合は、デフォルトはデーモンによって定義されます。

オプション:
 -p, --password 文字列 パスワード
   --password-stdin stdinからパスワードを取得します
 -u, --username 文字列 ユーザー名
[root@localhost ログ]# 
[root@localhost ログ]# docker ログイン -u xxx -p xxx
警告! CLI 経由で --password を使用することは安全ではありません。--password-stdin を使用してください。
警告! パスワードは暗号化されずに /root/.docker/config.json に保存されます。
この警告を削除するには、資格情報ヘルパーを構成します。
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
ログインに成功しました

ログイン後、画像を送信できます。

[root@localhost logs]# docker push xxx/mytomcat:1.0

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfile ファイルの書き込みとイメージ構築コマンドの分析
  • Dockerfile を使用したカスタムイメージの構築の実装
  • Dockerfileを使用してDockerイメージを構築する
  • Dockerfileを使用してDockerイメージを構築する手順
  • Dockerfile を使用して Docker でイメージを構築する方法
  • Dockerfile を使用して nginx イメージを構築する例
  • Dockerfileを使用してイメージを構築する方法
  • dockerfile命令を使用してdockerイメージを構築するためのサンプルコード

<<:  MySQL の自動増分 ID (主キー) が不足した場合の解決策

>>:  ネイティブjsはショッピングカートのロジックと機能を実装します

推薦する

CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する例

テーマ今日は、CSS3 を使用して円形スクロール プログレス バー アニメーションを作成する方法を説...

javascript 入力画像のアップロードとプレビュー、FileReader プレビュー画像

FileReader は、フロントエンドのファイル処理、特に画像処理にとって重要な API です。画...

フローチャートとUIフローの違い

UI デザインにおける多くの概念は言葉で言えば似ているように見えるかもしれませんが、実際には大きく異...

MySQL でサーバーのインストールを開始できない場合の解決策について簡単に説明します。

コンピュータに初めて MySQL をインストールする場合、通常このエラー メッセージは表示されません...

Reactはページング効果を実装する

この記事では、Reactでページング効果を実現するための具体的なコードを参考までに紹介します。具体的...

VMware に CentOS7 をインストールし (静的 IP アドレスを設定)、Docker コンテナ経由で mySql データベースをインストールする (非常に詳細なチュートリアル)

2 年生から、これらのインストールと設定の仕方を尋ねられました。簡単なチュートリアルを作成し、ここ...

CentOS で Mysql を再起動するさまざまな方法 (推奨)

1. rpm パッケージ経由でインストールされた MySQL サービスmysqldを再起動 /et...

DockerToolBox ファイルマウント実装コード

docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ次の図は、MySQL 公式サイトから提供されています: MyS...

MySQLの基本的な共通コマンドの概要

目次MySQL の基本的な共通コマンド1. SQL文2. テーブルを作成する3. フィールドのプロパ...

Dockerイメージ作成の完全なプロセス

目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...

JavaScript メッセージ ボックスの例

JavaScript では、警告ボックス、確認ボックス、プロンプト ボックスの 3 種類のメッセージ...

Vue の nextTick について話す

データが変更されても、DOM ビューはすぐには更新されません。変更直後にノードまたはその値を取得しよ...