Heim >Backend-Entwicklung >PHP-Tutorial >Docker für Windows-Installation und Einrichtung der Linux-PHP-Entwicklungsumgebung (1)
Was ist Docker?
Um es einfach auszudrücken: Docker ist ein „Container“ (Linux-Container, LXCs), der von einem in der GO-Sprache geschriebenen Programm ausgeführt wird; der Grundstein der aktuellen Cloud Bei Services handelt es sich um die Isolationsebene des Betriebssystems, bei der mehrere Hosts auf demselben physischen Server virtualisiert werden. Docker implementiert eine Isolation auf Anwendungsebene; es verändert unsere grundlegende Entwicklungs- und Betriebseinheit vom direkten Betrieb des virtuellen Hosts (VM) zu einem „Container“, in dem das Betriebssystem ausgeführt wird.
Vorteile von Docker
Vorteile von Docker: schnelle Ausführung, agile Bereitstellung, Flexibilität, leichtgewichtig, Open Source und kostenlos.
Boot2Docker ist ein leichtgewichtiges Linux-Distributionspaket, das speziell für Docker entwickelt wurde und das Problem löst, dass Windows- oder OS X-Benutzer Docker nicht installieren können. Boot2Docker läuft vollständig im Speicher, ist 24 MB groß und benötigt nur 5–6 Sekunden zum Starten. Boot2Docker muss in VirtualBox ausgeführt werden.
Installations- und Nutzungsschritte von Docker für Windows
Überprüfen Sie die Systemversion und Hardware-Virtualisierung
Überprüfen Sie zunächst die Versionsnummer des Windows-Betriebssystems
Die Ausführung von Boot2Docker. Das erforderliche Betriebssystem ist mindestens Windows 7.1,8/8.1. Getestet von Windows 7 Ultimate, wird es auch unterstützt.
Zweitens müssen Sie sicherstellen, dass Ihr System Hardware-Virtualisierung unterstützt und die Virtualisierung aktiviert ist.
Um die Unterstützung der Virtualisierungstechnologie zu ermöglichen, sind mehrere Bedingungen erforderlich: Unterstützung durch den Chipsatz selbst, Unterstützung durch das BIOS, Unterstützung durch den Prozessor selbst und Unterstützung durch das Betriebssystem.
In Bezug auf Betriebssysteme unterstützen alle gängigen Betriebssysteme die VMM-Verwaltung, sodass keine Notwendigkeit besteht, darüber nachzudenken. Der Chipsatz wird seit der Intel 945-Ära (außer Netbooks) unterstützt, es besteht also kein Grund, darüber nachzudenken. In Bezug auf die CPU können Sie diese über die offizielle Website von Intel abfragen oder zur Beurteilung eine Testsoftware von Drittanbietern verwenden. Daher geht es eher darum zu prüfen, ob das BIOS dies unterstützt.
Öffnen Sie für Windows 8/8.1-Systeme den Task-Manager – Registerkarte „Leistung“ – CPU, und Sie können sehen, dass die Virtualisierung aktiviert ist. Wie unten gezeigt:
Wenn es „nicht aktiviert“ ist, müssen Sie zum Motherboard-BIOS gehen, um es einzuschalten.
So rufen Sie das BIOS auf: Wenn der Computer hochfährt und unten auf dem Bildschirm die Eingabeaufforderung „Drücken Sie DEL, um SETUP aufzurufen“ erscheint, drücken Sie sofort die Taste „Entf“, um das BIOS-Setup-Programm aufzurufen . Bei einigen BIOS-Typen müssen Sie die Taste F2 oder F10 drücken, um den Startbildschirm mit dem Logo aufzurufen, und einfach den Anweisungen auf dem Bildschirm folgen.
Suchen Sie beispielsweise das Einstellungselement „Intel Virtual Technology“ und ändern Sie „Deaktiviert“ in „Aktiviert“. Anschließend speichern und beenden, um die VT-Funktion zu aktivieren. Wie unten gezeigt:
Für das Windows 7-System müssen Sie das Hardware-Assisted Virtualization Detection Tool installieren, um festzustellen, ob der Prozessor Virtualisierung unterstützt und ob die Virtualisierung aktiviert ist An. Laden Sie das HAV-Erkennungstool herunter und installieren Sie es, befolgen Sie die Anweisungen auf dem Bildschirm für die Erkennungsergebnisse und lesen Sie dann für den nächsten Schritt das Benutzerhandbuch zum HAV-Erkennungstool.
Download-Adresse:
HAV-Erkennungstool
http://download.microsoft.com/download/1/9/F/19FD407F-A7E9-4393-A845-D0B1F539678E/havdetectiontool.exe
Benutzerhandbuch für das HAV-Erkennungstool
http://download.microsoft.com/download/1/9/F/19FD407F-A7E9-4393-A845-D0B1F539678E/HAV Detection Tool – Benutzerhandbuch.mht
Wenn der Bildschirm wie unten gezeigt auffordert: Dies bedeutet, dass aktuelle Computerprozessoren die Hardwarevirtualisierung unterstützen und aktiviert haben.
Boot2Docker installieren
Als nächstes müssen Sie Boot2Docker und einige Hilfssoftware installieren. Dazu gehören insbesondere:
Docker Client für Windows
Boot2Docker-Verwaltungstool und ISO
Oracle VM VirtualBox
Git MSYS-git UNIX-Tools
Klicken Sie zuerst, um Boot2Docker für Windows herunterzuladen.
Download-Adresse:
https://s3.amazonaws.com/github-cloud/releases/18047765/825908bc-15b8-11e5-96cb-9a42a043cc39.exe?response-content-disposition =attachment; filename=docker-install.exe&response-content-type=application/octet-stream&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1437386585&Signature=wM+TTYN4yqc8fhh7WAEeZw7A5cE=
Dann doppelklicken Sie auf die heruntergeladene do cker-install.exe-Installation Datei, Starten Sie die Installation. Am besten schalten Sie die entsprechende Sicherheitssoftware des Computers bereits während des Installationsvorgangs aus.
Die offizielle Download-Geschwindigkeit ist langsam. Sie können versuchen, von der inländischen DaoCloud http://get.daocloud.io/ herunterzuladen.
Überprüfen Sie, ob die Installation erfolgreich ist.
Starten Boot2Docker nach Abschluss der Installation.
Wenn das System nach dem Öffnen des Boot2Docker-Terminals zur Benutzerkontensteuerung auffordert, wählen Sie bitte „Ja“, um sicherzustellen, dass die virtuelle Maschine VirtualBox die Konfiguration einiger Computer abschließt Änderungen. Wenn keine Eingabeaufforderung erfolgt, sind in der Regel keine Einstellungen erforderlich.
Hinweis: Die Benutzerkontensteuerung (UAC) ist eine neue Sicherheitsfunktion von Windows Vista. Es verhindert, dass Malware Privilegien erlangt, selbst wenn der Benutzer mit einem Administratorkonto angemeldet ist. UAC kann in der Systemsteuerung geändert werden. Am Beispiel von Win7 Ultimate: Systemsteuerung → Alle Elemente der Systemsteuerung → Benutzerkonto → Einstellung der Benutzerkontensteuerung ändern.
Das Terminal benötigt eine gewisse Initialisierungszeit, um Boot2Docker zu starten und das für die Ausführung von Docker erforderliche Umgebungsvariablen-Bash-Skript auszuführen. Wenn es erfolgreich gestartet wird, wird eine $-Eingabeaufforderung angezeigt.
Verwenden Sie den SSH-Befehl boot2docker, um die VM aufzurufen. Sie müssen diesen Befehl später verwenden, um einige grundlegende Konfigurationen durchzuführen.
Sie können jetzt den Docker-Befehl direkt verwenden.
Führen Sie im Terminal den Befehl docker run hello-world aus und drücken Sie die Eingabetaste. Wenn es normal läuft, wird der folgende Inhalt ausgegeben:
<code>$ docker run hello-world Unable <span>to</span> find image <span>'hello-world:latest'</span> locally Pulling repository hello-world <span>91</span>c95931e552: Download complete a8219747be10: Download complete Status: Downloaded newer image <span>for</span> hello-world:latest Hello <span>from</span> Docker. This message shows that your installation appears <span>to</span> be working correctly. To generate this message, Docker took <span>the</span> following steps: <span>1.</span> The Docker client contacted <span>the</span> Docker daemon. <span>2.</span> The Docker daemon pulled <span>the</span><span>"hello-world"</span> image <span>from</span><span>the</span> Docker Hub. (Assuming <span>it</span> was <span>not</span> already locally available.) <span>3.</span> The Docker daemon created <span>a</span><span>new</span> container <span>from</span> that image which runs <span>the</span> executable that produces <span>the</span> output you are currently reading. <span>4.</span> The Docker daemon streamed that output <span>to</span><span>the</span> Docker client, which sent <span>it</span><span>to</span> your terminal. To <span>try</span> something more ambitious, you can run <span>an</span> Ubuntu container <span>with</span>: $ docker run -<span>it</span> ubuntu bash For more examples <span>and</span> ideas, visit: <span>http</span>://docs.docker.com/userguide/ </code>
Container und Bilder verstehen
Nehmen Sie den Befehl docker run hello-world als Beispiel:
Ein Container ist eine vereinfachte Version des Linux-Betriebssystems und ein Image ist eine Sammlung von Software, die in den Container geladen wird. Nachdem dieser Befehl ausgeführt wurde, führt Docker die folgenden Aktionen der Reihe nach aus:
a. Überprüfen Sie, ob hello-world Mirror installiert wurde
b. Wenn es nicht installiert ist, laden Sie das Image aus dem Docker-Remote-Repository (Docker Hub) herunter
c. Laden Sie das Bild in den Container und führen Sie es aus.
Geben Sie die virtuelle Maschine über den Befehl boot2docker ssh ein und führen Sie dann den Befehl aus: sudo vi /etc/hosts
Fügen Sie der Datei eine Zeile hinzu: 172.16.100.71 local.registry.com
Exit
<code>boot2docker ssh <span>"echo $'172.16.100.71 local.registry.com' | sudo tee -a /etc/hosts"</span></code>2. Überprüfen und setzen Sie die Umgebungsvariablen Eingabe in Git Bash:
<code><span>export</span></code>Anzeigen, ob die Umgebungsvariablen automatisch festgelegt wurden: DOCKER_HOST, DOCKER_CERT_PATH, DOCKER_TLS_VERIFYboot2docker Shellinit kann die Umgebungsvariablen des Docker-Clients anzeigen, sodass Sie den folgenden Befehl verwenden können, um die Umgebungsvariablen automatisch festzulegen
<code><span>eval</span><span>"<span>$(boot2docker shellinit)</span>"</span></code>Wenn dieser Befehl nicht erfolgreich eingerichtet werden kann, müssen Sie den folgenden Befehl eingeben, um ihn manuell hinzuzufügen:
<code><span>export</span> DOCKER_HOST=tcp:<span>//192.168.59.103:2376</span><span>export</span> DOCKER_CERT_PATH=/c/Users/Administrator/.boot2docker/certs/boot2docker-vm <span>export</span> DOCKER_TLS_VERIFY=<span>1</span></code>Geben Sie nach der Ausführung Export ein, um zu überprüfen, ob der Schreibvorgang erfolgreich war. Um die Ausführung von Docker-Befehlen im Windows-eigenen CMD zu ermöglichen, geben Sie den folgenden Befehl in cmd ein:
<code><span>set</span> DOCKER_HOST<span>=</span>tcp:<span>//192.168.59.103:2376</span><span>set</span> DOCKER_CERT_PATH<span>=</span>C:/Users/Administrator<span>/</span><span>.</span>boot2docker/certs/boot2docker<span>-vm</span><span>set</span> DOCKER_TLS_VERIFY<span>=</span><span>1</span></code>Geben Sie nach der Ausführung set ein, um zu überprüfen, ob das Schreiben erfolgreich war. Die über den Set-Befehl festgelegten Umgebungsvariablen sind jedoch vorübergehend gültig und werden nicht mehr wirksam, wenn das cmd-Befehlszeilenfenster geschlossen wird. Die Methode zum Festlegen permanenter Umgebungsvariablen lautet: „Computereigenschaften – Erweiterte Systemeinstellungen – Erweiterte Umgebungsvariablen“, erstellen Sie die oben genannten drei Systemvariablen und geben Sie die entsprechenden Werte ein. Nachdem die Einstellung abgeschlossen ist, öffnen Sie CMD erneut, damit sie wirksam wird. Wenn Sie außerdem boot2docker ssh und andere Befehle in CMD ausführen möchten, müssen Sie auch Git-bezogene Umgebungsvariablen festlegen. Die Methode lautet:
<code>set PATH=<span>%PATH</span><span>%;</span><span>"C:\Program Files (x86)\Git\bin"</span></code>Die permanente Einstellungsmethode für Umgebungsvariablen ist dieselbe wie oben. Fügen Sie das folgende Verzeichnis zum PATH-Feld der Systemvariablen hinzu (das spezifische Verzeichnis wird entsprechend Ihrem eigenen Git-Installationsverzeichnis hinzugefügt) ;C:Program Files ( x86)Gitbin;Dann starten Sie cmd neu und es wird wirksam. 3. Legen Sie die Option –insecure-registry fest Ab Docker 1.3.1 ist die Verbindung zu unsicheren privaten Images standardmäßig nicht zulässig. Wenn wir nun das selbst erstellte private Image herunterladen möchten, müssen wir es wie folgt festlegen:
<code>boot2docker ssh <span>sudo</span> vi /var/lib/boot2docker/profile</code>Eine Zeile hinzufügen
<code><span>EXTRA_ARGS=<span><span>"--insecure-registry local.registry.com:5000"</span></span></span></code>Speichern und dann den Docker neu starten Dienst:
<code><span>sudo</span> /etc/init.d/docker restart</code>Sie können Vorgänge auch in Git Bash zusammenführen:
<code>boot2docker ssh <span>"echo $'EXTRA_ARGS=\"</span>--insecure-registry local.registry.com:<span>5000</span>\<span>"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"</span></code>Hinweis: Private Mirror-Adressen wie local.registry.com:5000 können auch durch IP-Adressen ersetzt werden .
Der Tee-Befehlsparameter -a dient zum Anhängen von Inhalten an die Datei und kann entsprechend verwendet werden.
<code>ps -ef <span>|grep docker</span></code>
若docker主进程(/usr/local/bin/docker)PID比较小,且运行时间比较久,那么说明没有重启成功。需要强制杀死该进程后再重启。
<code><span>sudo</span> kill -<span>9</span> pid <span>sudo</span> /etc/init.d/docker restart</code>
最后通过ps -ef |grep docker命令再检查一遍进程号和运行时间,保证docker重启成功。
<code>ps -ef |<span>grep</span> docker <span>exit</span></code>
4、将私有镜像下载到本地
<code>docker pull local<span>.registry</span><span>.com</span>:<span>5000</span>/php</code>
在镜像运行前,先将其下载到本地,如果报错,参照之前步骤或错误处理进行解决,解决后继续执行后续步骤
5、检查、设置虚拟机共享文件夹
VirtualBox默认将宿主机目录C:\Users作为共享文件夹,并自动挂载到虚拟机c/Users路径。所以一般情况下我们通常选择将数据放在宿主机C:\Users目录,然后通过docker命令挂载到容器。但作为Windows用户,大家的C盘常作为系统盘,关键数据放在C盘是比较危险的,一旦Windows系统损坏无法启动有可能造成数据丢失。
所以,我们想到:能不能自己添加其他盘符下的共享文件夹,挂载到容器?
当然可以!!!步骤有些繁琐,继续往下看。
经过尝试,在C:\Users目录创建指向其他盘符共享文件夹的快捷方式这个方法是行不通的。
下面是正确的操作步骤:
打开boot2docker虚拟机GUI,点击“设置”-“共享文件夹”,在“固定分配”菜单右键“添加共享文件夹”,如图:
a. 执行boot2docker ssh 进入虚拟机,先确定要挂载到的目录,若目录不存在需要手动创建:
<code>boot2docker ssh <span>sudo</span> mkdir -p /f/projects/phpdev</code>
b. 创建要挂载到的目录后,执行以下命令进行共享文件夹挂载。
<code><span>sudo</span> mount -t vboxsf f/projects/phpdev /f/projects/phpdev</code>
或
<code>sudo mount <span>-t</span> vboxsf <span>-o</span> uid<span>=</span><span>1000</span>,gid<span>=</span><span>50</span> f/projects/phpdev /f/projects/phpdev</code>
如下图:
mount完成后退出, boot2docker ssh重新进入虚拟机,查看宿主机共享文件夹是否同步到挂载目录。
从图中可以看到,宿主机本地目录F:\projects\phpdev下的文件/文件夹已经同步显示到当前虚拟机挂载目录下,即/f/projects/phpdev路径下。
由于下文步骤六的docker容器是将/f/projects/phpdev挂载到容器Linux环境的/var/www/html路径,这一步操作就是为了接下来步骤做准备。
我们一般情况下,为了保证数据安全性和完整性,不会在docker创建的容器环境中永久保存数据。常见的方法是将本地宿主机的文件系统映射到容器环境的文件系统,这样能确保容器环境中生成的数据直接保存在用户主机的磁盘,而不会由于容器损坏或未及时将容器持久化而造成数据丢失。
根据boot2docker官方(https://github.com/boot2docker/boot2docker)的描述,boot2docker内置了一个专门用于虚拟机文件夹共享的客户端增强包(VirtualBox Guest Additions)。
若以下共享文件夹名称存在,则该共享文件夹则自动挂载到以下位置:
Users 挂载到 /Users
/Users挂载到 /Users
c/Users挂载到 /c/Users
/c/Users挂载到 /c/Users
c:/Users挂载到 /c/Users
如果需要共享其他文件路径,则需要执行以下命令:
<code>boot2docker ssh sudo mount <span>-t</span> vboxsf your<span>-other</span><span>-share</span><span>-name</span> /some/mount/location</code>
或
<code>boot2docker ssh mount <span>-t</span> vboxsf <span>-o</span> uid<span>=</span><span>1000</span>,gid<span>=</span><span>50</span> your<span>-other</span><span>-share</span><span>-name</span> /some/mount/location</code>
注:Linux命令id可查看用户的UID(对应/etc/passwd)和GID(对应/etc/group)
不过,如果重启Windows,这些设置会被清除,需要再次进行挂载操作(当然,直接重启boot2docker-vm同样会清除所有配置数据)。如果你不想每一次都手动挂载,可以在/etc/fstab中添加一项
<code>your<span>-other</span><span>-share</span><span>-name</span> /some/mount/location vboxsf rw,gid<span>=</span><span>100</span>,uid<span>=</span><span>1000</span>,auto <span>0</span><span>0</span></code>
或
<code>your<span>-other</span><span>-share</span><span>-name</span> /some/mount/location vboxsf defaults <span>0</span><span>0</span></code>
这样就能够自动挂载了(需要安装客户端增强包VirtualBox Guest Additions)。
执行完手动挂载命令,正常情况下,/some/mount/location目录下已经可以显示共享文件夹的内容了。
由于boot2docker本身是虚拟机,docker也作为虚拟机环境,要使用docker run -v path1:path2成功挂载,实际需要进行两步映射:共享文件夹先由宿主机挂载到boot2docker虚拟机,再由boot2docker虚拟机挂载到docker容器环境。
挂载前先建立挂载目录:
<code><span>sudo</span> mkdir -p /some/mount/location</code>
然后再执行上述mount挂载命令。
卸载共享文件夹,使用命令sudo umount -f /f/projects/phpdev
注意:
卸载共享文件夹需要先退出挂载目录,再卸载,否则会报错:
umount: can’t forcibly umount /f/projects/phpdev: No such file or directory
同时要注意卸载目录一定要写对,注意盘符F前的斜线/,如果要卸载的目录没有挂载过,则会报错:
umount: can’t forcibly umount /f/projects/phpdev: Invalid argument
6、根据所提供镜像,创建并运行一个容器
根据拉到本地的私有镜像(Linux+Apache+PHP集成镜像),创建并运行一个容器:
<code>docker run <span>-d</span><span>-p</span><span>8000</span>:<span>80</span><span>-p</span><span>2222</span>:<span>22</span><span>--</span>name php <span>-v</span> /f/projects/phpdev:/<span>var</span>/www/html <span>local</span><span>.</span>registry<span>.</span>com:<span>5000</span>/php</code>
其中80端口是HTTP/Nginx默认端口,22端口是Linux SSH默认端口。以后台运行方式,将宿主机本地目录/f/projects/phpdev挂载到容器。
注意:
若在Windows系统的Git bash下执行会挂载失败报错,因为msysgit会将/c/Users这样的目录自动转为c:\Users,所以需要使用双斜线,Git bash中输入命令为:
<code>docker run <span>-d</span><span>-p</span><span>8000</span>:<span>80</span><span>-p</span><span>2222</span>:<span>22</span><span>--</span>name php <span>-v</span><span>//f//projects//phpdev:/var/www/html local.registry.com:5000/php</span></code>
然后,通过docker ps 命令,可以查看当前运行中的容器。
<code><span>$ </span>boot2docker.exe ip <span>192.168</span>.<span>59.103</span></code>
我们可以通过ssh进入到当前php容器,也可使用XShell等SSH工具连接。
SSH登录命令为:
<code>ssh -p <span>2222</span> root<span>@192</span>.<span>168.59</span>.<span>103</span></code>
注:boot2docker ssh的账号密码为user/docker ,私有镜像为root/hellonihao
SSH登录后就可以看到我们熟悉的Linux目录结构了。
如果本地没有phpdev文件夹将会自动创建,在该目录下新建个phpinfo.php测试文件,用于输出php配置信息。
Docker的宿主机是boot2docker的虚拟机,因此需要使用虚拟机的ip进行访问,获取ip方式为boot2docker ip。
所以上述phpinfo.php文件访问地址:192.168.59.103:8000/phpinfo.php
举例,仅根据centos基础镜像建立一个容器,并建立一个数据卷/data,命令如下
<code><span>$</span><span>docker</span><span>run</span><span>-</span><span>it</span><span>-</span><span>-</span><span>rm</span><span>-</span><span>-</span><span>name</span><span>centos</span><span>-</span><span>-</span><span>volume=/data</span><span>local</span><span>.</span><span>registry</span><span>.</span><span>com:5000/centos</span><span>/bin/bash</span></code>
注意:在Git Bash需要用双斜线,执行
<code><span>$</span><span>docker</span><span>run</span><span>-</span><span>it</span><span>-</span><span>-</span><span>rm</span><span>-</span><span>-</span><span>name</span><span>centos</span><span>-</span><span>-</span><span>volume=//data</span><span>local</span><span>.</span><span>registry</span><span>.</span><span>com:5000/ce</span><span>ntos</span><span>//bin//bash</span></code>
将宿主机目录挂载到数据卷,命令如下:
<code>$ docker run <span>-it</span><span>--</span>rm <span>--</span>name centos <span>-v</span> /c/Users/phpdev:/<span>data</span><span>local</span><span>.</span>registry<span>.</span>com:<span>5000</span>/centos /bin/bash </code>
注意:在Git Bash下需要用双斜线,即:
<code><span>$ </span>docker run -it --rm --name centos -v /<span>/c/</span><span>/Users/</span><span>/phpdev:/data</span> local.registry.<span>com:</span><span>5000</span>/centos /<span>/bin/</span><span>/bash </span></code>
附其他常用命令:
docker rm -f php
docker ps -l
docker images -a
docker rmi
docker stop
docker run
docker kill
以上是docker for Windows版本的安装方法和docker使用步骤的介绍。如果有错误疏漏,欢迎留言指正,一起探讨学习docker。
下一篇会分享介绍docker安装使用中常见错误的处理方法。
参考文章:
http://docs.docker.com/userguide/ “docker官方文档-用户指南”
https://github.com/boot2docker/boot2docker “Boot2docker官方文档”
http://blog.pavelsklenar.com/5-useful-docker-tip-and-tricks-on-windows/
本文来自于CSDN博客,转载请注明出处,谢谢!
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了Docker for Windows安装与Linux+PHP开发环境搭建(一),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。