2016-04-08 3 views
1

Ich möchte mysql Server auf einem centos:6.6 Container installieren.Muss ich beim Ausführen eines Andock-Containers einen Befehl angeben?

Wenn ich jedoch docker run --name myDB -e MYSQL_ROOT_PASSWORD=my-secret-pw -d centos:6.6 ausführen, habe ich docker: Error response from daemon: No command specified. Fehler.

Überprüfen des Dokuments von docker run --help, fand ich, dass die COMMAND scheint ein optionales Argument bei der Ausführung docker run. Dies liegt daran, dass [COMMAND] in einem Paar eckiger Klammern platziert ist.

$ Docker --help

laufen

Verbrauch: Docker run [Optionen] BILD [Befehl] [ARG ...]

Führen Sie einen Befehl in einem neuen Behälter

Ich finde auch heraus, dass die official repository of mysql keinen Befehl beim Starten eines MySQL-Container angibt:

S eine MySQL-Instanz tarting ist einfach:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Warum sollte ich einen Befehl liefern, wenn ein CentOS läuft: 6.6 Behälter, aber nicht so, wenn eine MySQL-Container ausgeführt wird?

Ich vermute, dass Centos: 6.6 speziell konfiguriert ist, so dass der Benutzer einen Befehl bereitstellen muss, wenn es ausgeführt wird.

Antwort

2

Wenn Sie Centos: 6.6 verwenden, müssen Sie beim Ausführen des Befehls "docker run" einen Befehl eingeben.

Der Grund, warum das offizielle Repository von mysql keinen Befehl angibt, ist der CMD-Befehl in seiner Docker-Datei: CMD ["mysqld"]. Überprüfen Sie, ob es sich um eine Docker-Datei here handelt.

Die CMD in Docker-Datei ist der Standardbefehl, wenn der Container ohne einen Befehl ausgeführt wird.

Sie können here lesen, um besser zu verstehen, was Sie in einer Andockdatei verwenden können.

In Ihrem Fall können Sie

  1. Starten Sie Ihre CentOS 6.6 Container
  2. offizielle mysql Docker-Datei als Referenz nehmen, erteilen ähnlichen Befehl (ändern apt-get yum (oder sudo yum, wenn Sie don‘ t verwenden, um den Standard-root-Benutzer)
  3. Sobald Sie erfolgreich mysql starten können, Sie alle Befehle in docker Datei setzen, nur um sicherzustellen, dass die erste Zeile „Von centOS 6.6“
  4. Bauen Sie Ihr Bild
  5. Führen Sie einen Container mit Ihrem Image aus, und Sie müssen keinen Befehl in Docker ausführen.
  6. Sie können Ihre Andockdatei im Docker-Hub freigeben, sodass andere Benutzer Ihre verwenden können.

viel Glück.

+0

Warum sehe ich 'CMD ["/bin/bash "]' in der [docker-Datei von Centos] (https://github.com/CentOS/sig-cloud-instance-images/blob/298ec183aa5886d8184256a1fc94b7618411f426/docker/Dockerfile)? – Brian

+0

Dies ist der Standardbefehl, wenn Sie Ihren Container mit Centos-Image starten. Sie können weiterhin einen Befehl zum Überschreiben in Ihrem "Docker Run" angeben. –

+0

versuche "docker run centos: 6/6/bin/echo ABC", hier überschreibst du "/ bin/bash" durch "/ bin/echo ABC" –