阿里雲docker官方文檔
docker中文網
由於被牆了因此用阿里雲的容器鏡像服務
爲了方便部署上線,使用Docker是一個很是好的選擇html
直接開Hyper官網下載dockergit
下載docker-toolbox,安裝完畢後,將docker-machine添加到環境變量。接着能夠用git-bash命令建立一個github
docker-machine create --engine-registry-mirror=https://5f2jam6c.mirror.aliyuncs.com -d virtualbox default
用的是阿里雲的加速庫。這是個人阿里雲加速,使用阿里雲加速的方法是
登錄後在容器鏡像服務中選加速器而後查看windows版本下的加速命令便可。docker
https://dev.aliyun.com/search.html
ssh鏈接docker-machine的命令以下
ssh docker@192.168.99.100
密碼是tcuser
windows
Dockerfile
github中項目中通常都會有.gitignore,README.md,有時候還會有個Dockerfile,.gitignore和README.md咱們都知道是什麼,那麼Dockerfile又是什麼呢?Dockerfile天然就關聯到docker了,它是面向開發者(Dev)的,開發者把須要什麼系統,須要裝什麼軟件,須要怎麼配置環境等等所有都寫進Dockerfile裏面,至關因而一個基於docker的全自動生成鏡像的一個腳本,至少我是這麼理解的。而有個這個Dockerfile,別人只用在這個Dockerfile的目錄下執行docker build -t image:tag 就能夠由你的Dockerfile生成鏡像,是否是很方便?
自從有了Dockerfile,開發者就能夠取代一部分原來由運維(Ops)作的部署工做(deployment),也就增強了運維和開發的聯繫,加快的了工做的效率,其實Dockerfile還不算最高效率,最高的效率是直接移植如今作好的docker鏡像,把Dockerfile build中各類網絡下載安裝,還有編譯的時間都省去了,真的作到開箱即用安全鏡像
鏡像是docker的靜態,由Dockerfile生成的是鏡像而不是容器,你能夠經過sudo docker images查看你如今有多少的鏡像,docker的鏡像是docker移植的關鍵,固然容器也能夠export出來再import回去,可是通常都是save和load docker鏡像爲主bash
容器
容器是docker的動態,由鏡像run出來的(sudo docker run),容器是docker的精華,你能夠理解爲容器技術就是應用了集裝箱的思惟,把所須要的全部東西都放進一個集裝箱(container)裏面,哪裏須要服務,我直接把整個集裝箱運過去,而後你進去集裝箱享受服務就行了
容器是不會自動保存改動到原來的鏡像的,除非你commit容器造成一個快照,可是這個操做其實就是將如今改動過的動態的容器新存爲一個靜態的鏡像,而不是保存爲原來的鏡像。服務器
#從當前目錄下的Dockerfile(命名dockerfile好像也能識別,其餘就不行了)創建鏡像 sudo docker build -t reponame:tag . #別忘了最後那個.! sudo docker images #查看鏡像 sudo docker ps #查看當前運行的容器 sudo docker ps -a #查看所有容器(包括運行中的和中止的) sudo docker run -it --name blabla -p <物理機>:<容器>(e.g. 127.0.0.1:3306:3306) -v /your/local/path/:/map/path/in/docker/ -v /etc/localtime:/etc/localtime --net =host -d reponame:tag # 啓動容器 #[-it 是啓動交互和僞終端] #[-p <IP>:<宿主機端口>:<容器端口> 將宿主機(物理機)映射或者能夠理解爲綁定,<IP>能夠指定,也能夠不指定,不指定默認是0.0.0.0,建議仍是指定] #[-v 是掛載本機目錄到到docker目錄,最好每次都把-v /etc/localtime:/etc/localtime也帶上,確保docker 容器內時間和服務器時間一致] #[-d 是daemonize的意思,就是使容器成爲守護進程,後臺運做] #[--net是設置docker的網絡模式,默認不設置的話就是bridge模式,如今設置爲和物理機網絡綁定的host模式,更多能夠看 Docker的4種網絡模式(http://www.cnblogs.com/gispathfinder/p/5871043.html) #[--link 是容器連接] #複習幾個特別的IP: #①127.0.0.1是本地迴環地址,代指本機; [對於綁定在127.0.0.1的端口而言,外部沒法訪問,不對外打開,僅僅對內打開] #②0.0.0.0 表明全部不清楚的IP,安全性差,也是指本機?;[對於綁定在0.0.0.0的端口而言,外部能夠訪問] #③255.255.255.255 用人類的話說:「嘿,這屋子的全部人聽着了!」 #④localhost 這個是域名,通常都是127.0.0.1,這種對應關係寫在你的/etc/hosts裏面 sudo docker start/stop/restart/rm blabla #啓動/中止/重啓/刪除 容器 sudo docker cp blabla:/app/file.txt . # 把docker裏面/app目錄下的file.txt文件複製出來到如今所在的目錄 sudo docker exec -it blabla /bin/bash #在啓動的容器blabla中運行/bin/bash sudo docker exec -it blabla /the/path/of/your/command sudo docker commit blabla repo:tag #提交保存容器到一個新的鏡像repo:tag sudo docker rmi repo:tag #刪除鏡像 #容器的導出和導入 sudo docker export sudo docker import #鏡像的導出和導入 [文件] sudo docker save repo:tag > backup.tar sudo docker load < backup.tar [dockerhub] sudo docker login sudo docker push repo:tag sudo docker pull repo:tag #經常使用組合命令 #中止全部docker容器 sudo docker kill $(sudo docker ps -q) #刪除全部docker容器 sudo docker rm $(sudo docker ps -aq)