Docker란 무엇인가요?
간단히 말하면 Docker는 GO 언어로 작성된 프로그램에 의해 실행되는 "컨테이너"(Linux 컨테이너, LXC)이며 현재 클라우드의 초석입니다. 서비스는 운영 체제 격리 수준으로, 동일한 물리적 서버에서 여러 호스트를 가상화합니다. Docker는 애플리케이션 수준 격리를 구현합니다. 기본 개발 및 운영 단위를 가상 호스트(VM)를 직접 운영하는 것에서 운영 프로그램이 실행되는 "컨테이너"로 변경합니다.
Docker의 장점
Docker의 장점: 빠른 실행, 민첩한 배포, 유연성, 경량, 오픈 소스 및 무료.
Boot2Docker는 Windows 또는 OS X 사용자가 Docker를 설치할 수 없는 문제를 해결하는 Docker용으로 특별히 설계된 경량 Linux 배포 패키지입니다. Boot2Docker는 메모리에서 완전히 실행되고 크기는 24M이며 시작하는 데 5-6초 밖에 걸리지 않습니다. Boot2Docker는 VirtualBox에서 실행되어야 합니다.
Windows용 Docker 설치 및 사용 단계
시스템 버전 및 하드웨어 가상화 확인
먼저 Windows 운영체제 버전 번호를 확인
실행 중인 Boot2Docker의 경우 필요한 운영 체제는 Windows 7.1,8/8.1 이상입니다. 테스트를 거친 Windows 7 Ultimate(Windows 7 Ultimate)도 이를 지원합니다.
두 번째로, 시스템이 하드웨어 가상화를 지원하고 가상화가 활성화되어 있는지 확인해야 합니다.
가상화 기술 지원을 활성화하려면 칩셋 자체 지원, BIOS 지원, 프로세서 자체 지원, 운영 체제 지원 등 여러 가지 조건이 필요합니다.
운영 체제 측면에서는 모든 주류 운영 체제가 VMM 관리를 지원하므로 고려할 필요가 없습니다. 칩셋의 경우 인텔 945(넷북 제외) 시대부터 지원하고 있으니 고려할 필요는 없다. CPU에 관해서는 Intel 공식 웹사이트를 통해 문의하거나 타사 테스트 소프트웨어를 사용하여 판단할 수 있습니다. 따라서 BIOS가 이를 지원하는지 확인하는 것이 더 중요합니다.
Windows 8/8.1 시스템의 경우 작업 관리자 - "성능" 탭 - CPU를 열면 가상화가 켜져 있는 것을 확인할 수 있습니다. 아래와 같이:
"활성화되지 않음"인 경우 마더보드 BIOS로 이동하여 켜야 합니다.
BIOS 진입 방법: 컴퓨터가 시작될 때 화면 하단에 "Press DEL to enter SETUP" 프롬프트가 나타나면 즉시 "Del" 키를 눌러 BIOS 설정 프로그램으로 들어갑니다. . 일부 BIOS 유형의 경우 F2 또는 F10 키를 눌러 시작 로고 화면으로 들어가 화면의 지시를 따라야 합니다.
예를 들어 Intel Virtual Technology 설정 항목을 찾아 비활성화를 활성화로 변경합니다. 그런 다음 저장하고 종료하여 VT 기능을 활성화합니다. 아래와 같이:
Windows 7 시스템의 경우 프로세서가 가상화를 지원하는지 확인하려면 Microsoft? 하드웨어 지원 가상화 감지 도구를 설치해야 합니다. 에. HAV 감지 도구를 다운로드하여 설치하고 화면의 지시에 따라 감지 결과를 확인한 후 다음 단계에 대해 HAV 감지 도구 사용자 가이드를 참조하세요.
다운로드 주소:
HAV 탐지 도구
http://download.microsoft.com/download/1/9/F/19FD407F-A7E9-4393-A845-D0B1F539678E/havDetectiontool.exe
HAV 탐지 도구 사용자 가이드
http://download.microsoft.com/download/1/9/F/19FD407F-A7E9-4393-A845-D0B1F539678E/HAV 감지 도구 - User Guide.mht
화면에 아래와 같은 메시지가 나타나면, 이는 현재 컴퓨터 프로세서가 하드웨어 가상화를 지원하고 활성화되어 있음을 의미합니다.
Boot2Docker 설치
다음으로 Boot2Docker와 일부 보조 소프트웨어를 설치해야 합니다. 구체적으로 다음을 포함합니다:
Windows용 Docker 클라이언트
Boot2Docker 관리 도구 및 ISO
Oracle VM VirtualBox
Git MSYS-git UNIX 도구
먼저 Windows용 Boot2Docker를 다운로드하려면 클릭하세요.
다운로드 주소:
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=
그런 다음 다운로드한 do cker-install을 두 번 클릭합니다. exe 설치 파일, 설치를 시작하십시오. 설치 과정에서 컴퓨터의 관련 보안 소프트웨어를 미리 끄는 것이 가장 좋습니다.
공식 다운로드 속도가 느리므로 국내 다오클라우드 http://get.daocloud.io/에서 다운로드를 시도해보세요.
설치 성공 여부 확인
시작 Boot2Docker 설치가 완료된 후.
Boot2Docker 터미널을 연 후 시스템에 사용자 계정 컨트롤(사용자 계정 컨트롤)이 표시되면 "예"를 선택하여 가상 머신 VirtualBox가 일부 컴퓨터 구성을 완료하는지 확인하세요. 변화. 메시지가 표시되지 않으면 일반적으로 설정이 필요하지 않습니다.
참고: UAC(사용자 계정 컨트롤)는 Windows Vista의 새로운 보안 기능입니다. 사용자가 관리자 계정으로 로그인한 경우에도 맬웨어가 권한을 얻는 것을 방지합니다. UAC는 제어판에서 수정할 수 있습니다. Win7 Ultimate를 예로 들면 제어판 → 모든 제어판 항목 → 사용자 계정 → 사용자 계정 컨트롤 설정 변경).
Boot2Docker를 시작하고 Docker를 실행하는 데 필요한 환경 변수 bash 스크립트를 실행하려면 터미널에서 특정 초기화 시간이 필요합니다. 성공적으로 시작되면 $ 프롬프트가 나타납니다.
boot2docker ssh 명령을 사용하여 VM에 들어갑니다. 나중에 몇 가지 기본 구성을 수행하려면 이 명령을 사용해야 합니다.
이제 docker 명령을 직접 사용할 수 있습니다.
터미널에서 docker run hello-world 명령을 실행하고 Enter 키를 누릅니다. 정상적으로 실행되면 다음 내용이 출력됩니다.
<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>
컨테이너 및 이미지 이해
docker run hello-world 명령을 예로 들어보세요.
컨테이너는 Linux 운영 체제를 단순화한 버전이고, 이미지는 컨테이너에 로드된 소프트웨어 모음입니다. 이 명령이 실행되면 Docker는 다음 작업을 순서대로 수행합니다.
a. hello-가 설치되어 있는지 확인하세요
b. 설치되어 있지 않은 경우 Docker 원격 저장소(Docker Hub)에서 이미지를 다운로드합니다
c. 이미지를 컨테이너에 로드하고 실행합니다.
Doker PHP 컨테이너 생성 및 PHP 개발 환경 활성화
Docker Hub에는 개인 개발자가 제공하는 이미지는 물론 기업 및 조직 구조에서 업로드하는 공식 이미지도 있습니다. . 또한 로컬 개인 미러(예: local.registry.com:5000/php)를 사용할 수도 있습니다. PHP 개발 환경 구축을 예로 들어 계속해서 Docker 명령어를 사용하는 방법을 설명하겠습니다.
여기서 사용되는 것은 자체 구축된 비공개 이미지입니다(Linux PHP Apache가 통합되었습니다). 비공개 이미지 주소는 172.16.100.71:5000/php
1. Windows 시스템 및 boot2docker VM
a. Windows 시스템의 로컬 호스트 설정
Windows 시스템의 로컬 호스트 설정은 주로 CMD 명령 프롬프트에서 작업을 용이하게 하기 위한 것입니다. Git Bash에서 작업하는 경우 Windows 시스템의 로컬 호스트 설정을 건너뛰도록 선택할 수 있습니다.
위치: C:WindowsSystem32driversetchosts
파일에 172.16.100.71 local.registry.com 줄을 추가합니다
b boot2docker 가상 머신의 호스트를 설정합니다
.boot2docker ssh 명령을 통해 가상 머신에 들어간 후
sudo vi /etc/hosts
명령을 실행하세요.
파일에 다음 줄을 추가하세요: 172.16.100.71 local.registry.com
종료
결합된 명령을 사용할 수도 있습니다:
<code>boot2docker ssh <span>"echo $'172.16.100.71 local.registry.com' | sudo tee -a /etc/hosts"</span></code>
2. 환경 변수 확인 및 설정
Git Bash에 입력:
<code><span>export</span></code>
환경 변수가 자동으로 설정되었는지 보기: DOCKER_HOST, DOCKER_CERT_PATH, DOCKER_TLS_VERIFY
boot2docker shellinit는 Docker 클라이언트의 환경 변수를 표시할 수 있으므로 다음 명령을 사용하여 환경 변수를 자동으로 설정할 수 있습니다
<code><span>eval</span><span>"<span>$(boot2docker shellinit)</span>"</span></code>
이 명령을 성공적으로 설정할 수 없는 경우 다음 명령을 입력하여 수동으로 추가해야 합니다.
<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>
실행 후 내보내기를 입력하여 쓰기 성공 여부를 확인합니다.
Windows 자체 CMD에서 Docker 명령이 동작할 수 있도록 하려면 cmd에 다음 명령을 입력하세요.
<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>
실행 후 set를 입력하여 쓰기 성공 여부를 확인하세요.
단, set 명령을 통해 설정된 환경 변수는 일시적으로 유효하며 cmd 명령줄 창을 닫으면 더 이상 적용되지 않습니다.
영구적인 환경 변수를 설정하는 방법은 "컴퓨터-속성-고급 시스템 설정-고급-환경 변수"이며, 위의 세 가지 시스템 변수를 생성하고 해당 값을 입력합니다. 설정이 완료되면 CMD를 다시 열어 적용하세요.
또한 CMD에서 boot2docker ssh 및 기타 명령을 실행하려면 Git 관련 환경 변수도 설정해야 합니다. 방법은 다음과 같습니다.
<code>set PATH=<span>%PATH</span><span>%;</span><span>"C:\Program Files (x86)\Git\bin"</span></code>
영구 환경변수 설정 방법은 위와 동일하며, 시스템 변수 PATH 필드에 다음 디렉터리를 추가합니다. (특정 디렉터리는 자신의 Git 설치 디렉터리에 따라 추가됩니다.)
;C:Program Files ( x86)Gitbin;
그런 다음 cmd를 다시 시작하면 적용됩니다.
3. –insecure-registry 옵션을 설정하세요
docker 1.3.1부터 안전하지 않은 개인 이미지에 대한 연결은 기본적으로 허용되지 않습니다. 이제 자체 구축된 프라이빗 이미지를 다운로드하려면 다음과 같이 설정해야 합니다.
<code>boot2docker ssh <span>sudo</span> vi /var/lib/boot2docker/profile</code>
줄 추가
<code><span>EXTRA_ARGS=<span><span>"--insecure-registry local.registry.com:5000"</span></span></span></code>
저장한 다음 Docker를 다시 시작하세요. 서비스:
<code><span>sudo</span> /etc/init.d/docker restart</code>
Git Bash에서 작업을 병합할 수도 있습니다.
<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>
참고: local.registry.com:5000과 같은 개인 미러 주소는 IP 주소로 대체될 수도 있습니다. .
tee 명령 매개변수 -a는 파일에 내용을 추가하고 적절하게 사용하는 것입니다.
sudo /etc/init.d/docker restart 명령이 재시작에 실패하는 경우가 있는데, 다음 명령을 통해 docker 프로세스의 정보를 관찰할 수 있습니다.
<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教程有兴趣的朋友有所帮助。