Docker學習1

Docker學習1

初看docker的兩個地方

阿里雲docker官方文檔
docker中文網
由於被牆了因此用阿里雲的容器鏡像服務
爲了方便部署上線,使用Docker是一個很是好的選擇html


win10專業版或者企業版

直接開Hyper官網下載dockergit


windows低一點的系統

下載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
密碼是tcuserwindows


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)
相關文章
相關標籤/搜索