docker概念簡介
- 首先要明白一點(diǎn)docker是一個(gè)容器的概念挨措,那么它就是夸平臺的锣夹。
- 其次讨盒,docker的優(yōu)勢:解決團(tuán)隊(duì)開發(fā)中環(huán)境不同步,夸容器
--link
等分布式運(yùn)用愈案。 - 另外挺尾,針對特別的環(huán)境及運(yùn)行要求,使用docker腳本一鍵解決各種煩惱站绪。等等
安裝
- Windows下載地址選擇對應(yīng)版本下載安裝后測試一下你是否安裝成功:測試步驟
制作docker基礎(chǔ)鏡像
-
首先選擇基礎(chǔ)什么系統(tǒng)作為你的基礎(chǔ)鏡像遭铺,這點(diǎn)很重要,會直接影響到你線上項(xiàng)目和本地項(xiàng)目的一些隱性bug恢准,所以最好是用線上的運(yùn)行環(huán)境去做打包魂挂,當(dāng)然如果你只是玩玩,那就在虛擬機(jī)中打包就好馁筐。
方法一涂召、直接使用docker社區(qū)的基礎(chǔ)裸機(jī)鏡像
docker pull centos #Docker Hub鏡像倉庫中拉取centos系統(tǒng)鏡像
- 然后
docker images
查看一些幾可以看到你的centOS鏡像了,之后你就可以直接進(jìn)行docker run
了敏沉。
方法二果正、以實(shí)際的線上云主機(jī)的系統(tǒng)作為基礎(chǔ)鏡像
- Step-1 CentOS 7.4.1708系統(tǒng):清除yum緩存,縮小文件系統(tǒng)體積
yum clean all
yum clean allrm -rf /var/cache/yum
- Step-2
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /
:將制作的centos導(dǎo)入,并命名為:centos6-base
使用制作的docker基礎(chǔ)鏡像創(chuàng)建你的容器
- 導(dǎo)入docker運(yùn)行依賴的基礎(chǔ)鏡像文件:
docker import D:\docker\centos.tar
(根據(jù)你鏡像存放地址寫) - 查看導(dǎo)入的鏡像是否存在盟迟,以及系統(tǒng)自動生成的鏡像名:
docker image ls
- 運(yùn)行一個(gè)docker容器 eq:
docker run -d -t -i -v /softweare/data:/data -p 80:80 d3a1fb5eb673 /bin/bash
完整解析:以交互模式在后臺運(yùn)行一個(gè)容器秋泳,該容器的策略有:0.改容器使用的基礎(chǔ)鏡像是
d3a1fb5eb673
1.打開一個(gè)tty(要注意history命令只是讀取一個(gè)tty的history,同一個(gè)用戶可以開多個(gè)tty
队萤,但是你運(yùn)行history卻只能看到當(dāng)前的tty記錄值
)會話(采用/bin/bash)轮锥;2.掛載本機(jī)的/softweare/data目錄到容器中的/data目錄;3.綁定本地80端口映射到容器中的80端口要尔;
- 進(jìn)入run的容器
docker attach [id/name]
- 退出一個(gè)進(jìn)入的容器
ctrl+pq
(pq是兩個(gè)鍵) - 查看docker中存在的容器
docker ps -a
- 是否需要?jiǎng)?chuàng)建軟鏈接和硬鏈接(看項(xiàng)目需求)
軟鏈接:ln -s src dst
硬鏈接:ln src dst
- 虛擬域名映射
C:\Windows\System32\drivers\etc下有個(gè)hosts文件(對應(yīng)Linux下面的/etc/hosts
)
127.0.0.1 你需要的域名(要對應(yīng)提供web服務(wù)程序的配置文件中的server_name)
另:域名后綴不要使用.dev(谷歌已經(jīng)將這個(gè)后綴的頂級域名買斷了,一旦配置dev后綴chrom將自動進(jìn)行轉(zhuǎn)發(fā))新娜。 - 刪除一個(gè)docker 容器
docker rm [id/name]
(docker容器名或者docker容器id) - 查看某個(gè)容器運(yùn)行時(shí)的配置
docker inspect [id/name]
- 參數(shù)解析:
-d, --detach=false
指定容器運(yùn)行于前臺還是后臺赵辕,默認(rèn)為false
-i, --interactive=false
打開STDIN,用于控制臺交互
-t, --tty=false
分配tty設(shè)備概龄,該可以支持終端登錄还惠,默認(rèn)為false
-u, --user=""
指定容器的用戶
-a, --attach=[]
登錄容器(必須是以docker run -d啟動的容器)
-w, --workdir=""
指定容器的工作目錄
-c, --cpu-shares=0
設(shè)置容器CPU權(quán)重,在CPU共享場景使用
-e, --env=[]
指定環(huán)境變量私杜,容器中可以使用該環(huán)境變量
-m, --memory=""
指定容器的內(nèi)存上限
-P, --publish-all=false
指定容器暴露的端口
-p, --publish=[]
指定容器暴露的端口
-h, --hostname=""
指定容器的主機(jī)名
-v, --volume=[]
給容器掛載存儲卷蚕键,掛載到容器的某個(gè)目錄
--volumes-from=[]
給容器掛載其他容器上的卷救欧,掛載到容器的某個(gè)目錄
--cap-add=[]
添加權(quán)限,權(quán)限清單詳見:http://linux.die.net/man/7/capabilities
--cap-drop=[]
刪除權(quán)限锣光,權(quán)限清單詳見:http://linux.die.net/man/7/capabilities
--cidfile=""
運(yùn)行容器后笆怠,在指定文件中寫入容器PID值,一種典型的監(jiān)控系統(tǒng)用法
--cpuset=""
設(shè)置容器可以使用哪些CPU誊爹,此參數(shù)可以用來容器獨(dú)占CPU
--device=[]
添加主機(jī)設(shè)備給容器蹬刷,相當(dāng)于設(shè)備直通
--dns=[]
指定容器的dns服務(wù)器
--dns-search=[]
指定容器的dns搜索域名,寫入到容器的/etc/resolv.conf文件
--entrypoint=""
覆蓋image的入口點(diǎn)
--env-file=[]
指定環(huán)境變量文件频丘,文件格式為每行一個(gè)環(huán)境變量
--expose=[]
指定容器暴露的端口办成,即修改鏡像的暴露端口
--link=[]
指定容器間的關(guān)聯(lián),使用其他容器的IP搂漠、env等信息
--lxc-conf=[]
指定容器的配置文件迂卢,只有在指定--exec-driver=lxc時(shí)使用
--name=""
指定容器名字,后續(xù)可以通過名字進(jìn)行容器管理桐汤,links特性需要使用名字
--rm=false
指定容器停止后自動刪除容器(不支持以docker run -d啟動的容器)
--privileged=false
指定容器是否為特權(quán)容器冷守,特權(quán)容器擁有所有的capabilities
--restart="no"
指定容器停止后的重啟策略:
1.no:容器退出時(shí)不重啟
2.on-failure:容器故障退出(返回值非零)時(shí)重啟
3.always:容器退出時(shí)總是重啟
當(dāng)你將你容器一切配置妥當(dāng),可以作為團(tuán)隊(duì)使用的基礎(chǔ)容器時(shí)別忘記將你做好的容器生成一個(gè)鏡像
docker export [id/name] [xxx.tar] #歸檔的包名推薦以.tar的歸檔包
會持續(xù)更新惊科,更新+3拍摇。