認(rèn)識Docker?
Docker是一個開源的容器引擎,它基于LXC容器技術(shù)廊敌,使用Go語言開發(fā)。
源代碼托管在Github上门怪,并遵從Apache2.0協(xié)議骡澈。
Docker采用C/S架構(gòu),其可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的掷空、可移植的肋殴、自給自足的容器囤锉。
Docker是開發(fā),運行和部署應(yīng)用程序的開放管理平臺.開發(fā)人員能利用docker開發(fā)和運行應(yīng)用程序, 運維人員能利用docker部署和管理應(yīng)用程序。
簡單來說:Docker就是一種快速解決生產(chǎn)問題的一種技術(shù)手段护锤。
為什么使用Docker官地?
- 跨環(huán)境一致性
- 降低配置開發(fā)環(huán)境、生產(chǎn)環(huán)境的復(fù)雜度和成本
- 可移植性較強烙懦∏耄可在多個平臺使用:比如:亞馬遜、谷歌氯析、微軟等
- 隔離性亏较。能保證每個容器中的資源隔離性。
- 實現(xiàn)程序的快速部署和分發(fā)
例如:
1掩缓,我在本地寫代碼雪情,可直接通過docker與同事進行共享,實現(xiàn)協(xié)同工作拾因。方便旺罢。
2,在服務(wù)器上刪除一些應(yīng)用程序是很難的绢记,但是docker就不一樣了扁达,不會產(chǎn)生依賴關(guān)系沖突。
3蠢熄,在docker寫完代碼后跪解,可直接進行自動測試和手動測試
4,如果在開發(fā)環(huán)境中签孔,發(fā)現(xiàn)錯誤的話叉讥,直接在開發(fā)環(huán)境中修改,然后去測試環(huán)境中測試和驗證
5饥追,如果開發(fā)完成之后图仓,交付時,直接交付docker就行了但绕。
docker與虛擬機的區(qū)別救崔?
相同點:
- docker與虛擬機一樣,都對物理硬件資源共享
- 而且他們的生命周期基本=相似(創(chuàng)建捏顺、啟動六孵、暫停、關(guān)閉))
- 他們都可以安裝自己的應(yīng)用幅骄,比如mysql劫窒,redis,nginx等
- 同虛擬機一樣拆座,創(chuàng)建完容器后主巍,戶存在 var/lib/docker/containers
不同點:
- 虛擬機的創(chuàng)建冠息、啟動、關(guān)閉都是基于一個完整的操作系統(tǒng)煤禽,一個虛擬機就是一個完整的操作系統(tǒng)铐达,而docker是直接運行在宿主機上的,所以docker更像是一系列的進程
- 容器是輕量級的檬果,虛擬機是重量級的瓮孙,容器的創(chuàng)建、啟動和關(guān)閉肯定都比虛擬機要執(zhí)行的效率快得多选脊。
- 這也就意味著杭抠,在給定的硬件上能運行很多個容器,卻不能運行太多的虛擬機恳啥。
相應(yīng)的偏灿,docker也有一些缺點:依賴網(wǎng)絡(luò)、?依賴操作系統(tǒng)钝的、銀行U盾等場景不能用
Docker基礎(chǔ)命令翁垂?
docker 安裝:
查看支持的docker版本
apt-cache madison docker-ce
安裝docker
apt-get install docker-ce -y
注:可以指定版本安裝docker:
apt-get install docker-ce=<VERSION> -y
啟動docker
systemctl start docker
systemctl status docker
注意:
?ubuntu安裝完畢后,默認(rèn)就開啟服務(wù)了
檢查docker是否安裝成功
sudo docker run hello-world
顯示: hello from Docker! 表示已經(jīng)安裝成功
提示:
提示1: 如果不想每次都輸入sudo, 執(zhí)行,
sudo usermod -a -G docker $USER
提示2: 如果沒有鏡像,會去下載
啟動,停止docker服務(wù)硝桩,監(jiān)測狀態(tài)
啟動
sudo service docker start
停止
sudo service docker stop
重啟docker
sudo service docker restart
狀態(tài)檢查
sudo service docker status
容器的管理沿猜?
容器就類似于我們運行起來的一個操作系統(tǒng),而且這個操作系統(tǒng)啟動了某些服務(wù)碗脊。
這里的容器指的是運行起來的一個Docker鏡像
容器類操作:
1,查看容器
最簡單的命令
docker ps -a
查看所有運行的容器
docker container ls
查看運行和停止的容器
docker container ls -all
2,查看nginx容器全部信息
docker inspect nginx
3,查看所有的容器編號
docker ps -q
docker ps -a -q
4,運行,停止運行容器啼肩、刪除容器
運行容器
sudo docker container start 容器名或id
停止容器
docker container stop 容器名或id
docker container kill 容器名或id
刪除容器
sudo docker container rm 容器名或id
5,進入創(chuàng)建的容器(myubuntu)
docker exec -it myubuntu /bin/bash
6 ,使用鏡像,創(chuàng)建交互式容器
docker run [option] --name=容器名稱 鏡像 [傳入的命的命令]
例如:
docker run -it --name=myubuntu ubuntu
解釋: 使用ubuntu鏡像創(chuàng)建交互式容器, 名字為myubuntu
退出容器: ctrl + d
7,通過nginx容器創(chuàng)建nginx:v1.0鏡像
docker commit -m 'add ifconfig' -a 'carry' nginx1 nginx:v1.0
8,守護進程nginx
讓Docker容器在后臺以守護形式運行。此時可以通過添加-d參數(shù)來實現(xiàn)
docker run -d nginx
鏡像類管理:
Docker鏡像是什么衙伶?
它是一個只讀的文件祈坠,就類似于我們安裝操作系統(tǒng)時候所需要的那個iso光盤鏡像,通過運行這個鏡像來完成各種應(yīng)用的部署矢劲。這里的鏡像就是一個能被docker運行起來的一個程序
鏡像操作:
1,查看所有docker鏡像
docker image ls
或者: docker images
2,查看所有docker歷史鏡像
docker history xxx
3,拉取云端鏡像 | 下載鏡像(pull)
docker image pull xxx
搜索鏡像: docker image search xxx
4赦拘,鏡像備份 (tag 原鏡像 新鏡像)
docker tag hello-world:latest hello-world:v2.0
5,刪除鏡像
docker rmi xxx
docker image rm 鏡像名或id
6,刪除未使用的鏡像(慎用)
docker image prune
7,導(dǎo)出鏡像(save -o)
docker save -o my_hello_world.tar hello-world:latest
8,導(dǎo)入鏡像(load -i 本地鏡像包)加載本地鏡像
docker load -i my_hello_world.tar
參考官方資料
Docker 官網(wǎng):http://www.docker.com
Github Docker 源碼:https://github.com/docker/docker