您好,登錄后才能下訂單哦!
這篇文章主要介紹了linux docker虛擬化技術怎么用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇linux docker虛擬化技術怎么用文章都會有所收獲,下面我們一起來看看吧。
Docker的思想來自于集裝箱,集裝箱解決了什么問題?在一艘大船上,可以把貨物規整的擺放起來。并且各種各樣的貨物被集裝箱標準化了,集裝箱和集裝箱之間不會互相影響。那么我就不需要專門運送水果的船和專門運送化學品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運走。
docker就是類似的理念。現在都流行云計算了,云計算就好比大貨輪。docker就是集裝箱。
主要解決的問題:不同的應用程序可能會有不同的應用環境。
Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更為輕便、快捷。
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處。傳統虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行于宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。
對比傳統虛擬機總結
特性 | Docker | 傳統虛擬機 |
啟動 | 秒級 | 分鐘級 |
硬盤使用 | 一般為 MB | 一般為 GB |
性能 | 接近原生 | 弱于 |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
Docker 由鏡像(Image)、容器(Container)、倉庫(Repository) 三部分組成。
Docker 的鏡像(Image)可以簡單的類比為電腦裝系統用的系統盤,包括操作系統,以及必要的軟件。例如,一個鏡像可以包含一個完整的 centos 操作系統環境,并安裝了 samtools和 bwa 服務器。注意的是,鏡像是只讀的。這一點也很好理解,就像我們刻錄的系統盤其實也是可讀的。我們可以使用 docker images 來查看本地鏡像列表。
Docker 的容器(Container)可以簡單理解為提供了系統硬件環境,它是真正跑項目程序、消耗機器資源、提供服務的東西。例如,我們可以暫時把容器看作一個 Linux 的電腦,它可以直接運行。那么,容器是基于鏡像啟動的,并且每個容器都是相互隔離的。注意的是,容器在啟動的時候基于鏡像創建一層可寫層作為最上層。我們可以使用 docker ps -a 查看本地運行過的容器。
Docker 的倉庫(Repository)用于存放鏡像。這一點,和 Git 非常類似。我們可以從中心倉庫下載鏡像,也可以從自建倉庫下載。同時,我們可以把制作好的鏡像 commit 到本地,然后 push 到遠程倉庫。倉庫分為公開倉庫和私有倉庫,最大的公開倉庫是官方倉庫 Dock Hub,國內的公開倉庫也有很多選擇,例如阿里云等。
Docker Registry:鏡像的倉庫,比如官方的是Docker Hub。如果要在其它服務器上使用鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry就是這樣的服務。
Registry:注冊服務器,用于管理鏡像倉庫,起到的是服務器的作用。
Repository:鏡像倉庫,用于存儲具體的docker鏡像,起到的是倉庫存儲作用。
Docker 官網 :https://www.docker.com/
docker官方鏡像:https://hub.docker.com/
安裝很簡單,建議使用root賬號安裝 :使用centos7自帶的yum自動安裝
yum -y install docker systemctl start docker #啟動 docker 服務 systemctl enable docker #設置開機啟動docker服務 docker version #顯示 Docker 版本信息 docker info #顯示docker安裝信息
普通用戶要使用docker服務設置:設置非root賬號使用docker服務
從 Docker Hub 中搜索符合條件的鏡像。
docker search qiime
從公網docker hub 拉取(下載)image pull
docker pull docker.io/centos
可能由于網絡的問題會有報錯。 無法連接到dockerhub 下載鏡像。 如果你的網絡沒有問題,你可以下載。
解決: 使用阿里云docker鏡像加速,提升pull的速度:
你只需要登錄容器Hub服務 https://cr.console.aliyun.com的控制臺,使用你的支付寶帳號,第一次登錄時,需要設置一個獨立的密碼,左側的加速器幫助頁面就會顯示為你獨立分配的加速地址。
修改配置文件: vim /etc/docker/daemon.json #大括號{}中添加鏡像地址:
{ "registry-mirrors":["https://koq0g34v.mirror.aliyuncs.com"] }
然后重啟docker,生效
systemctl daemon-reload systemctl restart docker docker pull docker.io/centos #再下載,就可以了。
如果上面的鏡像下載還是慢的話,可以使用共有的國內地址
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
docker load -i /root/docker.io-centos.tar.gz
以下為后臺鏡像查看
REPOSITORY TAG IMAGE ID CREATED SIZE root/sra-toolkit 2.9.2 e8a5657b4e83 About an hour ago 615 MB root/sra-toolkit latest e8a5657b4e83 About an hour ago 615 MB docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB docker.io/centos latest 470671670cac 7 weeks ago 237 MB REPOSITORY TAG IMAGE ID CREATED SIZE root/sra-toolkit 2.9.2 e8a5657b4e83 About an hour ago 615 MB root/sra-toolkit latest e8a5657b4e83 About an hour ago 615 MB docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB docker.io/centos latest 470671670cac 7 weeks ago 237 MB Untagged: root/sra-toolkit:2.9.2 Untagged: root/sra-toolkit:latest Deleted: sha256:e8a5657b4e838d3ce6581666752a9b428f4a1da9dd76ddac7cde90c93a93956f Deleted: sha256:97df9b1202930ab3020ee1c503db104a02b932459e32bf95a4ad0c3082d572c2 Deleted: sha256:d81f279ea371ed4a05be93b3bc71726e3a38350ecaa7e19fc23c87fd61759c02 Deleted: sha256:988d8a9b4254d04e208ec281aa36cbce1bef5c4e51eae806b659387a57136b0f Deleted: sha256:f778d0a1217a6a761ebad2dbff6ce5f34419d668410a4b34a986c47e3ba31b3f Deleted: sha256:6f6d62c5d1b06671066794c4640c4959b7db0773474ce92b277256759de1a14f Deleted: sha256:844f6b3eaaf0f3de53e0e72f676c455563a92d8ecce95f5edc5b03356415c2e7 Deleted: sha256:9373d3173020d86eb103eac32db58836c73670e6a3440f0598324b52a2b3a542 Deleted: sha256:ba7d13644b61b58c0f03abfdae3d208ef2f4819516ccfef56094927772a67e38 Deleted: sha256:9a8a3c79c50a7bac2ef01a5a73e2de9a2cac2117c308ca50eac77d4b3fbd0635 Deleted: sha256:6ba2b38850a58bf10195058e1952bad44c5d7240b62430ea6c553a62177d5895 Deleted: sha256:fe39aa1e284cea7136534344a139d8a1acbd079054639192541478ee94f2f055 Deleted: sha256:7439f6e10a4be5d6982f7f370cf5560a31cfb4cc3f69e807be22da1d02286fea Deleted: sha256:0108cbe087a1f29916bcfbefdf9fe118eef0c69ea4eea4705c89ffc4da7dd1fa REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu 18.04 72300a873c2c 2 weeks ago 64.2 MB docker.io/centos latest 470671670cac 7 weeks ago 237 MB
運行起來這個實例后,在實例中執行 /bin/bash命令
[root@omisclass ~]# docker images #查看鏡像 等于命令 docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest 470671670cac 7 weeks ago 237 MB [root@omisclass ~]# docker run -it docker.io/centos:latest /bin/bash #交互式運行container [root@f866b20aea91 /]# exit #退出 exit [root@omisclass ~]#
docker常用參數:
run 運行
-i 以交互模式運行容器,通常與 -t 同時使用;
-t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
docker run -v /root/mydata:/data --privileged=true --rm -it docker.io/centos:latest /bin/bash
-it:這是兩個參數,一個是 -i:交互式操作,一個是 -t 終端。我們這里打算進入 bash 執行一些命令并查看返回結果,因此我們需要交互式終端。
--rm:這個參數是說容器退出后隨之將其刪除。默認情況下,為了排障需求,退出的容器并不會立即刪除,除非手動 docker rm。我們這里只是隨便執行個命令,看看結果,不需要排障和保留結果,因此使用 --rm 可以避免浪費空間。
/bin/bash:放在鏡像名后的是 命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash。
--privileged=true避免掛載的數據目錄權限問題
如果你的命令已經寫好,不需要進入docker,直接后臺運行就可以:
docker run -d docker.io/centos:latest /bin/bash -c "while true;do echo hello world; sleep 1; done"
-d 后臺運行容器,并返回容器ID;
-c 后面跟待完成的命令
6 docker中常用的命令總結(選修)
docker ps -a #-a 列出所有容器container(包含沉睡/退出狀態的容器); docker kill 1629581081a1 #殺死一個容器 docker rm e085da6919af #刪除容器 docker rm -f 1a63ddea6571 #強制刪除容器 docker stop 1a63ddea6571 #關閉容器
docker export 7691a814370e |gzip > ubuntu.tar.gz #導出容器 zcat ubuntu.tar.gz | docker import - test/ubuntu:v1.0 #導入容器為鏡像
鏡像保存與加載
docker save docker.io/centos | gzip > rna.tar.gz #鏡像保存 docker load -i rna.tar.gz #鏡像加載
提交自己的鏡像到Docker Hub
用戶也可以在登錄后通過 docker push 命令來將自己的鏡像推送到 Docker Hub。以下命令中的 username 請替換為你的 Docker 賬號用戶名。
docker tag ubuntu:18.04 username/ubuntu:18.04 docker image ls
關于“linux docker虛擬化技術怎么用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“linux docker虛擬化技術怎么用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。