質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

4432閲覧

Dockerコンテナ内で使用できるbashコマンドを教えてください。

fukazume

総合スコア78

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

2クリップ

投稿2018/11/22 07:38

###■質問
Dockerコンテナ内(WordPress用のコンテナ)で使用できるbashシェルコマンド(例: cd, ls)と、できないコマンド(例: vi, vim)があります。使用可能なコマンドの一覧を知りたいのですが、何のコマンドリスト(?)が基準になっているのでしょうか。

<再現手順> ※前提: DockerでWordPressをupした状態

①docker exec -it WordPressのコンテナID /bin/bash というコマンドを実行して、root@WordPressのコンテナID:/var/www/html# に入る

②DockerのWordPressコンテナ内で、cd、ls、pwdコマンドは可能だが、viなどは実行できずにbash: vi: command not foundというようなエラーが出る。

###■背景
以下の質問(解決済み)からの派生質問です。
Dockerコンテナ内のディレクトリにターミナルでアクセスする方法

kodokuna_dancer👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

使用可能なコマンドは、元にしたDockerイメージに依存します。

イメージ提供元は、イメージのサイズを小さく保つため、不要なコマンドは入れない傾向にあります。

必要であれば、Dockerfileを更新してイメージをビルドし直すか、ログイン後に普通にaptなりyumなりでインストールをすれば良いと思います。

投稿2018/11/22 07:46

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukazume

2018/11/22 07:55

早速のご回答ありがとうございます! >Dockerfileを更新してイメージをビルドし直すか、ログイン後に普通にaptなりyumなりでインストールをすれば良い ↑ 後者は理解できましたが、前者の「イメージをビルドし直す」概念の理解が追いついていません。現在、ローカル環境にWordPressをチュートリアルに沿って構築しただけなのですが、Dockerfileに「イメージをビルドし直す」ために追記する内容をググるヒントなどを頂けると誠にありがたいのです。 ■今のDockerfile内容 FROM wordpress COPY wp-config.php /var/www/html/
manzyun

2018/11/22 08:18

kaztoさんではないですが、 例えばvimを入れたいと想定しますと、 FROM wordpress RUN apt install -y vim COPY wp-config.php /var/www/html というふうにDockerfileを編集しておくと、コンテナビルド時に apt install -y vim が実行されて、aptによるVimのインストールが行われます。 もっと深い話もできますが、ここで一気に教えてしまうとfukazumeさんが「分かるかぁ!」となるかもしれませんので、またわからないことがでてきたら、新たな質問という形で質問していただければと思います。
fukazume

2018/11/22 08:32

manzyunさん、めちゃめちゃ参考になります!と同時に大変恐縮しております!
fukazume

2018/11/22 08:33

簡潔なご回答で解決に導いてくださったkaztoさんにも御礼申し上げます!
guest

0

ベストアンサー

すごくざっくりした回答になってしまいますが、コンテナ内の /bin/ 配下にある実行ファイルはコマンドとして実行できます。

試しにコンテナにアタッチしてもいいですし、コンテナに対して exec サブコマンドで /bin/ls /bin/
を実行してみてください。

とりあえず自分の手元のコンテナではこんな具合です。

shell

1tomcat7@2b69f2c83c0c:/var/lib/tomcat7$ ls /bin/ 2bash dd false ip ln more ps sh systemd tailf vdir zfgrep 3cat df fgrep journalctl login mount pwd sh.distrib systemd-ask-password tar wdctl zforce 4chgrp dir findmnt kill loginctl mountpoint rbash sleep systemd-escape tempfile which zgrep 5chmod dmesg grep less ls mv readlink ss systemd-inhibit touch ypdomainname zless 6chown dnsdomainname gunzip lessecho lsblk netstat rm stty systemd-machine-id-setup true zcat zmore 7cp domainname gzexe lessfile mkdir networkctl rmdir su systemd-notify umount zcmp znew 8dash echo gzip lesskey mknod nisdomainname run-parts sync systemd-tmpfiles uname zdiff 9date egrep hostname lesspipe mktemp pidof sed systemctl systemd-tty-ask-password-agent uncompress zegrep

もうちょっと解説が欲しい場合は、コメントでお気軽にお尋ねください。

投稿2018/11/22 07:48

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fukazume

2018/11/22 08:04 編集

ご回答ありがとうございます!なるほど、コマンド類は/bin/に格納されているのですね。実践的で初心者の私にもわかりやすいです! お二方のご回答を受けて、ls /bin/でbashが見えていましたがダメ元で、質問文のDocker内でapt-get install bashしてみたのですが、予想通り「もうあるよ」という表示だけで変化がありませんでした。 bash is already the newest version (4.4-5). bash set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
fukazume

2018/11/22 08:11

apt-get install viを実行したところ、以下のエラーが出てインストールできませんでした。例示していただきました、ls /bin/ にviコマンドを入れるためのヒントをお教えいただけますでしょうか。引き続き、お手数おかけし申し訳ございません。 # apt-get install vi Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vi
manzyun

2018/11/22 08:21

一度 apt-get update で、パッケージリストの取得を行わないと、 「カタログが手元に無いから、それを頼まれても注文できない……」 という事になるのでした。 私もよく忘れる手順です。ご安心を。
fukazume

2018/11/22 08:28

フォローアップ誠に助かります。頂いたヒントをもとにぐぐってみると同要望/事象が英語でも報告されており、そこでの解決策でvimをインストールできました!感謝カンゲキ雨アラレでございます\(^o^)/ apt update apt install vim https://github.com/laradock/laradock/issues/804
fukazume

2018/11/22 08:46

manzyunさん、ちなみにvimインストール後、vimのある場所を検索してみると /usr/bin/vim でした。先の私のコメント「コマンド類は/bin/に格納」は必ずしも当てはまらないと勉強になりました、難しいですね(^_^;)
manzyun

2018/11/22 08:58

なあに、すべてのデータはルートディレクトリにつながってますよ……ぐふふ(不敵な笑み
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問