목차
docker 入门
백엔드 개발 PHP 튜토리얼 docker 入门_PHP教程

docker 入门_PHP教程

Jul 12, 2016 am 09:05 AM
android

docker 入门

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。

作者:haoqiang1531@outlook.com 博客:fireaxe.blog.chinaunix.net
1. 什么是docker 从原理上看,docker是基于lxc与AUFS衍生出的一种技术。 Q:什么是lxc? A:lxc是linux kernel container,相当于linux轻量级虚拟机。与virtual box、vmware等指令集虚拟化的虚拟机相比,其优势是利用了host系统的kernel。因此,lxc可以看成是共享kernel的虚拟机。福祸相依,lxc的缺点也是因为利用了host的kernel,导致container中运行的也必须是linux系统。如果需要使用非linux系统,则只能使用vmware等虚拟机。 Q:什么场景需要用docker?这个问题最好看完下面的内容后再来讨论,不过基于该问题的重要性,还是决定挪到前面来讲说吧。(一般来讲,大部分只看前三段的。。。)1) 云部署(这部分没玩过,只能是道听途说了)以前都是用虚拟机,有了docker后,一部分对用什么操作系统没要求的应用,立刻移了过来。当然lxc也行,但是,但凡用到云平台的,都是大规模应用了。而lxc并不具备大规模应用所需的易部署性与易迁移性。2) 公司内部的CI平台一是CI平台的搭建,可以利用docker技术实现CI平台各工具的分离,提高升级的灵活性。同时通过用image的方式进行工具备份。(数据备份另有方法)二是测试环境的打包,利用dockerfile,自动利用最新版本来合成可测试环境,可以排除环境的干扰。同时,一旦测试完成,可以对外发布image,避免客户重新安装软件带来的各种配置问题。(以前要适配各种环境,现在好了,连着环境一起发布,都不用测试多环境了)3) 开发环境快速搭建用docker实现开发环境,一旦谁有了新电脑想搭一个开发环境,直接pull一个image过来,分分钟搞定啊!!
Q:为什么lxc能实现隔离? A:实际上linux启动的原理也是先启动kernel,kernel在启动user space。那么kernel启动多个user space也不是不可以了。所需的只是kernel内部要做好隔离。这也是lxc需要在kernel中实现的原因,user space是不一定需要知道除自己外还有其他user space的)
Q:为什么不同发行版可以同时在一个系统上的container内运行? A:linux各发行版的不同主要在于user space,kernel都是一样的,这也为不同发行版同时运行提供了便利。lxc只是为container内提供了kernel,然后根据不同发行版的需要,构造不同的user space。
Q:既然lxc已经提供了container,那么为什么不直接用lxc呢? A:其实也不是哪里都用docker,要看应用场景。 lxc本质上是一种虚拟机技术,如果我平时工作就是需要不同发行版或者统一发行版的不同 版本,那么使用lxc完全够了。 docker则更像是对服务的分割。现在的系统越来越复杂,在同一个机器上运行会有各种相互的干扰。同时不利于迁移,假如要把某个服务迁移到另一个机器上,会遇到各种环境配置与依赖的问题。这个用lxc也可以,但是由于lxc的每个container只提供了kernel的支持,用户态环境需要重新配置。假如有三个container都需要apache server,则我需要在每个container内都安装一次,这显然是一种浪费。或者是不同的开发环境都需要gcc编译器,则还要安装多份。于是又有人打起了复用部分user space的注意。
Q:如何实现user space级别的复用? A:开头说了docker是基于lxc与AUFS的一种技术。AUFS就是让用户能够复用一部分userspace。 user space在本质上来说就是一个文件系统。因此user space 的复用就可以看做事对文件系统的复用。AUFS可以实现多个目录的堆叠,而且能单独设置每一个目录的读写属性。简单说,lxc为每一个container生成了一个与外界完全隔离的文件系统,这样从user space的角度看来,自己就是唯一的操作系统;AUFS在此基础上实现了堆叠,能让多个container共享一部分文件系统。 Q:AUFS实现的文件系统共享的意义何在? A:举个例子,我要用两个container,分别放mysql server与redmine server。操作系统要求是ubuntu。 在lxc上,我需要分别构造两个含有ubuntu的container,再分别安装两个软件。 在docker上,则可以先构造一个ubuntu的container,然后再基于这个container分别构造两个container用来放mysql server与server。ubuntu的部分对于其派生的container来说是只读的。然后如果某一天用户发现需要在mysql基础上添加几个应用,可以方便的从mysql server这个container再派生。这样通过派生的方式,实现了复用。 更详细的可以参考:10张图带你深入理解Docker容器和镜像(http://dockone.io/article/783) Q:image与container的区别? A:其实image就是container,image相当于container的一个只读拷贝。如果子container直接复用父container,那么当子container修改了父container的内容时,该父container的其他子container也就收影响了。因此把父container做成一个只读的image,这样它的子container就不能修改它了。 另一方面,container是动态的,类似于git中被管理的一套代码,image则相当于一个commit(docker中从container生成image的命令恰好也是commit)。container只能用于开发者自己,只有把它用commit生成image后,其他人才能在此基础上去拉出branch,进行并行开发。 当然commit后,image只存在于本地,如果想多人协同开发,还需要通过“docker push”命令,把image推送到服务器上。docker的服务器被称之为docker registry。
Q:什么是dockerfile?A:dockerfile是生成image的脚本,常用生产环境的部署。例子1:我开发了一套软件,每周需要发布一个docker image。正常流程是pull一个基础image,然后下载安装我的软件,最后commit成一个新的image进行发布。有了dockerfile后,我就可以把这一过程做成自动化的,每次只需要运行一个docker build命令,利用写好的dockerfile来生成新的image。例子2:某生产环境依赖于多中组件,但这些组件也在不停更新。如果使用image,则每次都需要更新完后进行打包与重新发送image的工作。有了dockerfile就好多了,每次需要更新环境时,只需要重新运行一次dockerfile,它自动会根据命令去下载与安装最新组件。综上,我们在强调一次dockerfile的作用:一种脚本语言,让环境的打包过程自动化。开发过程中的作用不是很大。
2. 常用命令
命令 解释
create [--name container-id] 根据指定image创建container
start [-ti/-d/-v] 启动指定的container
-ti 建立虚拟终端病连接
-d 后台运行,且命令完成后不退出
-v 映射host的目录到container
run [--name container-id] 'docker create' + 'docker start'
ps [-a] 在运行的container
-a 所有container
iamges [-a] 所有image
-a 所有image及构成image的各层
history 某个image及构成该image的层
stop container关机
pause container暂停
rm 删除container
commit 根据container建立新的image
rmi 删除image
pull 合同步指定image到本地
push 合入image到docker hub
login 登陆docker hub

3. docker例程 这个直接参考下面的链接吧:http://docs.docker.com/mac/started/
4.数据卷与数据卷容器(data volume & data volume container) 1) 数据卷与数据卷容器的意义数据卷:实现数据与应用的分离。实际应用备份时不会包含数据。数据进行单独备份。因为数据与应用的备份通常需要采取不同的策略。
数据卷容器 通过数据卷容器,对实际应用于host进行隔离。这样数据在host上位置改变时,只需要修改数据卷容器,其他应用类容器不用修改。
2)使用数据卷创建包含一个数据卷的容器:$ docker run -v /data/path:/mount/path:ro --name dbdata ubuntu /bin/bash 创建包含两个数据卷的容器:$ docker run -d -v /data/path1:/mount/path1:ro-v /data/path2:/mount/path2:ro--name dbdata ubuntu /bin/bash $ docker run -ti --volumes-from dbdata --name app ubuntu
通过-v把host的目录“/data/path”给mount到container dbdata的“/mount/path”目录下。dbdata就成为数据卷容器。 实际应用的容器app基于dbdata来生成。通过“--volumes-from dbdata”获得数据卷容器dbdata具有的读写权限。

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。

作者:haoqiang1531@outlook.com 博客:fireaxe.blog.chinaunix.net

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1068090.htmlTechArticledocker 入门 本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

새로운 보고서는 소문난 삼성 갤럭시 S25, 갤럭시 S25 플러스, 갤럭시 S25 울트라 카메라 업그레이드에 대한 비판적인 평가를 제공합니다. 새로운 보고서는 소문난 삼성 갤럭시 S25, 갤럭시 S25 플러스, 갤럭시 S25 울트라 카메라 업그레이드에 대한 비판적인 평가를 제공합니다. Sep 12, 2024 pm 12:23 PM

최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

삼성 갤럭시 S25 울트라, 디자인 변경 루머가 공개된 첫 번째 렌더링 이미지 유출 삼성 갤럭시 S25 울트라, 디자인 변경 루머가 공개된 첫 번째 렌더링 이미지 유출 Sep 11, 2024 am 06:37 AM

OnLeaks는 이제 Android Headlines와 제휴하여 X(이전 Twitter) 팔로어로부터 4,000달러 이상의 수익을 창출하려는 시도가 실패한 지 며칠 후 Galaxy S25 Ultra에 대한 첫 번째 모습을 제공합니다. 맥락에 따라 h 아래에 포함된 렌더링 이미지

IFA 2024 | TCL의 NXTPAPER 14는 성능 면에서는 Galaxy Tab S10 Ultra와 일치하지 않지만 크기에서는 거의 일치합니다. IFA 2024 | TCL의 NXTPAPER 14는 성능 면에서는 Galaxy Tab S10 Ultra와 일치하지 않지만 크기에서는 거의 일치합니다. Sep 07, 2024 am 06:35 AM

TCL은 두 가지 새로운 스마트폰을 발표하는 것과 함께 NXTPAPER 14라는 새로운 Android 태블릿도 발표했는데, TCL의 거대한 화면 크기는 판매 포인트 중 하나입니다. NXTPAPER 14는 TCL의 시그니처 브랜드인 무광택 LCD 패널 버전 3.0을 갖추고 있습니다.

새로운 보고서는 소문난 삼성 갤럭시 S25, 갤럭시 S25 플러스, 갤럭시 S25 울트라 카메라 업그레이드에 대한 비판적인 평가를 제공합니다. 새로운 보고서는 소문난 삼성 갤럭시 S25, 갤럭시 S25 플러스, 갤럭시 S25 울트라 카메라 업그레이드에 대한 비판적인 평가를 제공합니다. Sep 12, 2024 pm 12:22 PM

최근 아이스 유니버스는 삼성의 차기 플래그십 스마트폰으로 널리 알려진 갤럭시 S25 울트라에 대한 세부 정보를 꾸준히 공개해 왔습니다. 무엇보다도 유출자는 삼성이 카메라 업그레이드를 하나만 가져올 계획이라고 주장했습니다.

Vivo Y300 Pro는 7.69mm의 슬림한 본체에 6,500mAh 배터리를 탑재했습니다. Vivo Y300 Pro는 7.69mm의 슬림한 본체에 6,500mAh 배터리를 탑재했습니다. Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro는 방금 완전히 공개되었으며 대용량 배터리를 갖춘 가장 얇은 중급 Android 휴대폰 중 하나입니다. 정확히 말하면 스마트폰의 두께는 7.69mm에 불과하지만 배터리 용량은 6,500mAh입니다. 최근 출시된 것과 동일한 용량이다.

Motorola Razr 50s는 초기 유출에서 가능한 새로운 예산 폴더블을 보여줍니다. Motorola Razr 50s는 초기 유출에서 가능한 새로운 예산 폴더블을 보여줍니다. Sep 07, 2024 am 09:35 AM

모토로라는 올해 셀 수 없이 많은 기기를 출시했지만 그 중 폴더블 기기는 2개뿐이었습니다. 맥락에 따라 전 세계 대부분이 Razr 50 및 Razr 50 Ultra로 쌍을 받았지만 Motorola는 북미에서 Razr 2024 및 Razr 2로 제공합니다.

Samsung Galaxy S24 FE는 4가지 색상과 2가지 메모리 옵션으로 예상보다 낮은 가격으로 출시될 예정 Samsung Galaxy S24 FE는 4가지 색상과 2가지 메모리 옵션으로 예상보다 낮은 가격으로 출시될 예정 Sep 12, 2024 pm 09:21 PM

삼성전자는 팬에디션(FE) 스마트폰 시리즈를 언제 업데이트할지 아직 힌트를 주지 않았다. 현재 상태로 Galaxy S23 FE는 2023년 10월 초에 출시된 회사의 최신 버전으로 남아 있습니다.

Xiaomi Redmi Note 14 Pro Plus는 Light Hunter 800 카메라를 탑재한 최초의 Qualcomm Snapdragon 7s Gen 3 스마트폰으로 출시됩니다. Xiaomi Redmi Note 14 Pro Plus는 Light Hunter 800 카메라를 탑재한 최초의 Qualcomm Snapdragon 7s Gen 3 스마트폰으로 출시됩니다. Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plus는 이제 작년 Redmi Note 13 Pro Plus(Amazon에서 현재 $375)의 직접적인 후속 제품으로 공식화되었습니다. 예상대로 Redmi Note 14 Pro Plus는 Redmi Note 14 및 Redmi Note 14 Pro와 함께 Redmi Note 14 시리즈를 주도합니다. 리

See all articles