2015-01-15 7 views
19

?それはbashの "を実行することができないと言うん。なぜドッカーは、私は(Boot2Docker付き)MacOSXの上ドッカーを使用してい

私はドッカーハブからイメージを実行することができます。

しかし、私がしようとすると、このように私自身のイメージの1つを実行します。

docker run -P mylocalimage 

または

docker run -P mylocalimage bin/a3-write-back 

または

... 

私が手:私はそれがコンテナで実行するためのbashバイナリを見つけることができないことを推測

docker "env: can't execute 'bash': No such file or directory" 

が、なぜ?

ベースイメージは、任意のヘルプerrordeveloper/oracle-jdk

おかげです。

アシュリー。

[{ 
    "Architecture": "amd64", 
    "Author": "ABC [email protected]", 
    "Checksum": "tarsum.dev+sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", 
    "Comment": "", 
    "Config": { 
     "AttachStderr": false, 
     "AttachStdin": false, 
     "AttachStdout": false, 
     "Cmd": [], 
     "CpuShares": 0, 
     "Cpuset": "", 
     "Domainname": "", 
     "Entrypoint": [ 
      "bin/a3-write-back" 
     ], 
     "Env": [ 
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jdk1.8.0_25/bin", 
      "JAVA_HOME=/usr/jdk1.8.0_25" 
     ], 
     "ExposedPorts": null, 
     "Hostname": "5bf0de3d0926", 
     "Image": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7", 
     "MacAddress": "", 
     "Memory": 0, 
     "MemorySwap": 0, 
     "NetworkDisabled": false, 
     "OnBuild": [], 
     "OpenStdin": false, 
     "PortSpecs": null, 
     "StdinOnce": false, 
     "Tty": false, 
     "User": "daemon", 
     "Volumes": null, 
     "WorkingDir": "/opt/docker" 
    }, 
    "Container": "987d2279b6e42195fe8e732c0637798926db6cfaeab93fcc25a3f10dac73f111", 
    "ContainerConfig": { 
     "AttachStderr": false, 
     "AttachStdin": false, 
     "AttachStdout": false, 
     "Cmd": [ 
      "/bin/sh", 
      "-c", 
      "#(nop) CMD []" 
     ], 
     "CpuShares": 0, 
     "Cpuset": "", 
     "Domainname": "", 
     "Entrypoint": [ 
      "bin/a3-write-back" 
     ], 
     "Env": [ 
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/jdk1.8.0_25/bin", 
      "JAVA_HOME=/usr/jdk1.8.0_25" 
     ], 
     "ExposedPorts": null, 
     "Hostname": "5bf0de3d0926", 
     "Image": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7", 
     "MacAddress": "", 
     "Memory": 0, 
     "MemorySwap": 0, 
     "NetworkDisabled": false, 
     "OnBuild": [], 
     "OpenStdin": false, 
     "PortSpecs": null, 
     "StdinOnce": false, 
     "Tty": false, 
     "User": "daemon", 
     "Volumes": null, 
     "WorkingDir": "/opt/docker" 
    }, 
    "Created": "2015-01-13T05:25:38.467586784Z", 
    "DockerVersion": "1.4.1", 
    "Id": "ddbd5d3f52cc5fd41605c95e4525cd2f3e0808a3741b3f8d77f46f0661945f7b", 
    "Os": "linux", 
    "Parent": "abd65ce243a5b015bb49f3e958103a5cc0c5f14938df4e480ded25f3ecf878e7", 
    "Size": 0, 
    "VirtualSize": 390826666 
} 
] 
+1

あなたのエントリーポイントは間違いありませんか?私は '' Entrypoint ':["bin/a3-write-back"]、 'それはbinの代わりに/ binであるべきですか? Dockerfileを投稿できますか? – user2915097

+0

あなたの "bash"コマンドがあなたのエントリーポイントスクリプトによって解釈されることを覚えておいてください。 –

+0

bin/a3-write-backはどのように見えますか?それがbashスクリプトの場合は、上のbashスクリプトへの正しいパスですか? もう1つのことは、 'docker run -P mylocalimage/bin/bash'です。そこから何が起こるかを見ると、シェルがあるはずです。 – Michael

答えて

55

イメージは、bashシェルを持たないビジーボックスに基づいています。シェルは/bin/shにあります。

だから、これは動作しません:

$ docker run -it busybox bash 
exec: "bash": executable file not found in $PATH2015/01/15 11:09:08 Error response from daemon: 
Cannot start container a5074af2f81f8cc1eb0076f4ec9ada5f87be1440006f54a9b06ab701fc60176a: exec: 
"bash": executable file not found in $PATH 

しかし、これはない:

$ docker run -it busybox /bin/sh 
/# 

あなたのエントリポイントスクリプトによるさらなる合併症があるかもしれませんが、あなたは常にそれを上書きすることができます。

+1

ギザスキリストこれは私を永遠に連れて行った。ありがとうございました。 これはCMDでのみ動作することに注意してください –

関連する問題