什么是Docker? Docker入門教程
概述
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn) 虛擬化 。
docker的配圖很形象。一只鯨魚(容器)上面裝載著貨物(應(yīng)用)。
docker安裝
debian/ubuntu等系統(tǒng)可以直接下載deb進(jìn)行安裝
sudo dpkg -i package-name.deb
其他平臺(tái)參照 docker官網(wǎng) docker hello world
安裝好docker之后,執(zhí)行下面語句確認(rèn)docker是否安裝成功
sudo docker info
如果docker沒有啟動(dòng),則執(zhí)行
sudo /etc/init.d/docker start 或 sudo service docker start
執(zhí)行下面的語句啟動(dòng)一個(gè)docker容器
sudo docker run -i -t ubuntu:14.04 /bin/bash
docker run ,運(yùn)行容器的命令 -i -t , 執(zhí)行docker以交互(將執(zhí)行的過程顯示到shell中)的形式啟動(dòng)容器 ubuntu:14.04 , ubuntu表示鏡像名,14.04表示鏡像的標(biāo)簽 /bin/bash , 表示要讓啟動(dòng)的容器執(zhí)行/bin/bash語句
首次執(zhí)行這段代碼時(shí),docker會(huì)下載ubuntu:14.04對(duì)應(yīng)的鏡像。
docker鏡像和容器
鏡像和容器,是docker中最最重要的兩個(gè)概念。
鏡像:在某一操作系統(tǒng)(一般是linux)的基礎(chǔ)上,添加某個(gè)服務(wù)(如mysql服務(wù)),所構(gòu)成的一個(gè)處于靜態(tài)的系統(tǒng)鏡像,可以理解為某系統(tǒng)的iso鏡像文件。(我自己的理解[捂臉])
容器:根據(jù)鏡像安裝之后的狀態(tài)
sudo docker images
上面語句列出本電腦(宿主機(jī))上的鏡像
sudo docker pull redis:3
上面語句可以從docker官方hub中獲取一個(gè)鏡像名為redis且標(biāo)簽為3的鏡像。看它的名字可以知道是安裝了redis 3 版本的鏡像
鏡像的自定義 創(chuàng)建一個(gè)安裝好redis服務(wù)器的鏡像
1 . 創(chuàng)建目錄和Dockerfile
2. 下載163的源文件到redis文件夾下,和Dockfile同一目錄下(由于ubuntu原來的軟件源賊慢,所以將其替換)
3. 編寫Dockfile,Dockfile中的內(nèi)容如下
FROM ubuntu:14.04 MAINTAINER dkpaulwen "wen229267643@gmail.com" ADD $PWD/sources.list.trusty /etc/apt/sources.list RUN ["apt-get","-y","update"] RUN ["apt-get","-y","install","redis-server","redis-tools"] EXPOSE 6379 CMD ["/usr/bin/redis-server"]
FROM ubuntu:14.04 : 表明我們所構(gòu)建的鏡像是基于ubuntu:14.04鏡像的 MAINTAINER name email : 構(gòu)建人的名字和郵箱 ADD path1 path2 : 將宿主機(jī)中的path1文件/目錄 復(fù)制到 docker中 RUN ["command","option",...] : 表示執(zhí)行command命令 , 也可以寫作 RUN command option parameter 這樣的形式。上面執(zhí)行的兩個(gè)語句更新了源,安裝了redis EXPOSE 6379 : 表示docker機(jī)會(huì)將6379端口暴露給宿主機(jī),可以將宿主機(jī)的某個(gè)端口與這個(gè)端口連接,這樣就可以在外部使用這個(gè)容器中運(yùn)行的應(yīng)用 CMD ["command","option",...] : 表示啟動(dòng)容器時(shí)若不指定執(zhí)行的命令,就執(zhí)行這個(gè)命令指定的命令
4 . 構(gòu)建鏡像
在redis目錄下執(zhí)行命令
sudo docker build -t dkpaulwen/redis .
-t 選項(xiàng)用來告訴docker daemon要構(gòu)建的鏡像的倉庫名和鏡像名為dkpaulwen/redis,其中dkpaulwen為倉庫名,redis為鏡像名
sudo docker images
查看鏡像
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE dkpaulwen/redis latest eb4b76ccb49c 18 minutes ago 213.4 MB
5. 用自定義的鏡像創(chuàng)建容器
執(zhí)行下面的命令
sudo docker run -d -p 6379 --name myredis dkpaulwen/redis
-d 選項(xiàng)告訴docker以后臺(tái)的形式啟動(dòng)容器 -p 6379 告訴docker將docker機(jī)的6379端口與宿主機(jī)的隨機(jī)端口(隨機(jī)分配一個(gè)大端口號(hào))相關(guān)聯(lián),也可以這樣 -p 6666:6379,前者是宿主機(jī),后者docker機(jī) --name myredis 指定容器名 dkpaulwen/redis 是鏡像名 這里沒有指定要執(zhí)行的命令,默認(rèn)執(zhí)行Dockerfile中的CMD指定的命令
6. 查看創(chuàng)建的docker容器
docker ps 命令
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e1366140973 dkpaulwen/redis "/usr/bin/redis-serve" 23 minutes ago Up 23 minutes 0.0.0.0:32788->6379/tcp myredis
這里包含容器的一些屬性,其中一個(gè)是ports——端口,可以看到,0.0.0.0:32788 -> 6379/tcp ,32788是宿主機(jī)端口,6379是被關(guān)聯(lián)的docker容器端口,類型是tcp
7. 連接這個(gè)容器
redis-cli -h localhost -p 32788
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# redis-cli -h localhost -p 32788 localhost:32788> get username "glen" localhost:32788>
因?yàn)槲以谖业姆?wù)器上安裝的docker,所以我也可以在自己的電腦上連接服務(wù)器上的docker容器
paul@paul-Inspiron-5420:~$ redis-cli -h www.wenjingyi.top -p 32788 www.wenjingyi.top:32788> get username "glen" www.wenjingyi.top:32788>
相關(guān)文章
在Ubuntu15.04上安裝Docker的步驟以及基本用法
Docker是一種輕量型的的類虛擬機(jī)的平臺(tái),在開發(fā)項(xiàng)目上還是很有優(yōu)勢(shì)的,這僅是我的一種直觀理解。所以這篇文章主要給大家介紹了在Ubuntu15.04上安裝Docker的步驟以及基本用法,有需要的朋友們可以參考借鑒。2016-10-10Docker中數(shù)據(jù)卷(volume)管理的兩種方式
數(shù)據(jù)卷有兩種形式,一種是容器中的某個(gè)目錄,它可以被別的容器引用,只要有一個(gè)容器引用了這個(gè)數(shù)據(jù)卷,數(shù)據(jù)就不會(huì)被刪除;另一種數(shù)據(jù)卷是將容器中的數(shù)據(jù)卷和宿主機(jī)的目錄進(jìn)行掛載。 數(shù)據(jù)卷可以在多個(gè)容器之間共享,修改數(shù)據(jù)卷不會(huì)影響鏡像2021-07-07基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制詳解
這篇文章主要給大家介紹了關(guān)于基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Docker 安裝 MySQL 并實(shí)現(xiàn)遠(yuǎn)程連接教程
這篇文章主要介紹了Docker 安裝 MySQL 并實(shí)現(xiàn)遠(yuǎn)程連接的教程,幫助大家更好的理解和使用docker容器,感興趣的朋友可以了解下2020-09-09docker redis5.0 cluster集群搭建的實(shí)現(xiàn)
這篇文章主要介紹了docker redis5.0 cluster集群搭建的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Docker鏡像拉取報(bào)錯(cuò):Error response from daemon: 
這篇文章主要介紹了Docker鏡像拉取報(bào)錯(cuò):Error response from daemon: Get https://registry-1.docker.io/v2/的問題解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07一篇文章學(xué)會(huì)Docker命令小結(jié)
這篇文章主要介紹了一篇文章學(xué)會(huì)Docker命令小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說明
今天小編就為大家分享一篇關(guān)于jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說明,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02