docker内コンテナ環境でファイルを変更したいのに、コンテナ環境にテキストエディタ(vi)が入っていない場合の対策
方法1 docker内コンテナ環境でviを使えるようにする
以下のコマンドでdocker内コンテナ環境にviをインストールする
debian,ubuntuベースのイメージから作られたコンテナ環境であれば、apt-getでviをインストール可能です。
1 2 |
apt-get update apt-get install vim |
なおDocker DesktopなどのGUI環境¥などであれば、GUIでdocker内VMイメージ環境のシェル(コンソール)にアクセス可能です。

Docker実行環境からコマンドでdocker内VMイメージ環境のシェル(コンソール)に入るには、以下のような手順になります。
docker ps で稼働中のdocker内VMイメージのCONTAINER IDを確認します。
1 2 3 4 5 6 |
root@Win10-Docker:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca71aaf8ace1 wordpress:latest "docker-entrypoint.s…" 3 years ago Up 12 hours 0.0.0.0:18080->80/tcp wordpress_wordpress_1 21c917c49b3b phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 3 years ago Up 12 hours 0.0.0.0:18888->80/tcp wordpress_phpmyadmin_1 78f2db140011 mysql:5.7 "docker-entrypoint.s…" 3 years ago Up 12 hours 3306/tcp, 33060/tcp wordpress_db_1 root@Win10-Docker:~# |
docker exec -it [先ほどコピーしたコンテナID] /bin/bash でシェルに入ります。
1 2 3 4 5 6 7 8 9 |
root@Win10-Docker:~# docker exec -it ca71aaf8ace1 /bin/bash root@ca71aaf8ace1:/var/www/html# pwd /var/www/html root@ca71aaf8ace1:/var/www/html# ls -al wp-config.php -rw-r--r-- 1 www-data www-data 6311 May 18 01:58 wp-config.php root@ca71aaf8ace1:/var/www/html# vi wp-config.php root@ca71aaf8ace1:/var/www/html# exit exit root@Win10-Docker:~# |
方法2 Docker実行環境にファイルをコピーして編集してから元に戻す
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
root@Win10-Docker:~# cd /tmp/edit root@Win10-Docker:/tmp/edit# root@Win10-Docker:/tmp/edit# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca71aaf8ace1 wordpress:latest "docker-entrypoint.s…" 3 years ago Up 13 hours 0.0.0.0:18080->80/tcp wordpress_wordpress_1 21c917c49b3b phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 3 years ago Up 13 hours 0.0.0.0:18888->80/tcp wordpress_phpmyadmin_1 78f2db140011 mysql:5.7 "docker-entrypoint.s…" 3 years ago Up 13 hours 3306/tcp, 33060/tcp wordpress_db_1 root@Win10-Docker:/tmp/edit# root@Win10-Docker:/tmp/edit# docker container cp ca71aaf8ace1:/var/www/html/wp-config.php . root@Win10-Docker:/tmp/edit# ls wp-config.php root@Win10-Docker:/tmp/edit# vi wp-config.php root@Win10-Docker:/tmp/edit# root@Win10-Docker:/tmp/edit# docker container cp wp-config.php ca71aaf8ace1:/var/www/html/wp-config.php.update root@Win10-Docker:/tmp/edit# |
ただし、コピーしただけだと、所有者情報やファイル権限情報等がリセットされる場合があるので、コンテナ環境内で、コピー元の情報と同じように戻します。
あとはファイルを入れ替えるなりで完了です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
root@Win10-Docker:~# docker exec -it ca71aaf8ace1 /bin/bash root@ca71aaf8ace1:/var/www/html# ls -al wp-config.php* -rw-r--r-- 1 www-data www-data 6311 May 18 01:58 wp-config.php -rw-r--r-- 1 root root 6311 May 18 02:58 wp-config.php.update root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html# chown www-data:www-data wp-config.php.update root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html# ls -al wp-config.php* -rw-r--r-- 1 www-data www-data 6311 May 18 01:58 wp-config.php -rw-r--r-- 1 www-data www-data 6311 May 18 02:58 wp-config.php.update root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html# mv wp-config.php wp-config.php.org root@ca71aaf8ace1:/var/www/html# mv wp-config.php.update wp-config.php root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html# ls -al wp-config.php* -rw-r--r-- 1 www-data www-data 6311 May 18 02:58 wp-config.php -rw-r--r-- 1 www-data www-data 6311 May 18 01:58 wp-config.php.org root@ca71aaf8ace1:/var/www/html# root@ca71aaf8ace1:/var/www/html#exit |
参考URL