docker入門指南

docker可以安裝在windows/mac os/linux系統(tǒng)上,目前最新版本為:1.12.0

安裝

  • windwos: 需要機(jī)器要能支持VT-x虛擬化技術(shù),下載地址 https://download.docker.com/win/stable/InstallDocker.msi 安裝完成后會(huì)在桌面創(chuàng)建兩個(gè)圖標(biāo),運(yùn)行其中一個(gè)(boot2docker)啟動(dòng)docker引擎,等待初始化到100%完成,然后運(yùn)行另外一個(gè)(docker terminal),在其中執(zhí)行docker命令即可
  • mac os: 下載地址 https://download.docker.com/mac/stable/Docker.dmg
  • linux 在終端執(zhí)行:curl -SL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - 等待安裝完成,然后添加開機(jī)啟動(dòng)chkconfig docker on,啟動(dòng)docker執(zhí)行service docker start

鏡像

docker鏡像可以看作是類似于操作系統(tǒng)鏡像一樣的東西,你可以在鏡像中安裝你的應(yīng)用,以及所需要的各種依賴庫,然后將該鏡像共享給其他人,其他人拿到鏡像后,通過docker啟動(dòng)你的應(yīng)用,無需再次安裝各種依賴軟件。docker鏡像類似于操作系統(tǒng)鏡像,擔(dān)比操作系統(tǒng)鏡像更輕量,構(gòu)建更快速。

容器

鏡像只是一個(gè)文件放在那里,當(dāng)啟動(dòng)它后,就會(huì)創(chuàng)建并運(yùn)行一個(gè)容器,運(yùn)行起來的容器就相當(dāng)于一個(gè)運(yùn)行著的操作系統(tǒng),此時(shí)你就可以進(jìn)入容器安裝軟件,執(zhí)行各種操作了。一個(gè)鏡像可以啟動(dòng)多個(gè)容器,它們互不干擾??梢园宴R像比做編程語言里面的,容器就是類的實(shí)例。容器有運(yùn)行和停止兩種狀態(tài)。

Hello world

//從官方倉庫下載mysql鏡像
docker pull centos
//查看本地?fù)碛械溺R像
docker images   
//啟動(dòng)centos鏡像
docker run centos
//查看運(yùn)行著的容器,加-a查看所有的容器
docker ps
fuxiaodeiMac:~ fuxiao$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
227dff6338c1        mysql               "docker-entrypoint.sh"   21 seconds ago      Up 20 seconds       3306/tcp            zen_sammet
//停止容器
docker stop 227dff6338c1

docker常用命令:http://www.itdecent.cn/p/50134af6f809

創(chuàng)建鏡像

1. 修改已有鏡像

啟動(dòng)一個(gè)已有鏡像,然后進(jìn)入容器,安裝自己需要的軟件庫,然后exit推出鏡像,執(zhí)行

docker commit -m "描述" -a "SongCF" 0b2616b0e5a8 songcf/mysql:v2
//-a 鏡像作者信息
//0b2616b0e5a8 剛才運(yùn)行的容器id
//songcf/mysql:v2 要?jiǎng)?chuàng)建的鏡像的名稱tag

2. 利用 Dockerfile 來創(chuàng)建鏡像

需要先熟悉dockerfile如何編寫
參考:https://yeasy.gitbooks.io/docker_practice/content/dockerfile/basic_structure.html

容器間網(wǎng)絡(luò)通信

這里僅描述啟動(dòng)容器的時(shí)候指定端口該方法。

//-p ip:hostPort:containerPort
//-p ip::containerPort
//-p hostPort:containerPort
例如:
docker run -p 3306:3306 mysql
//啟動(dòng)mysql容器時(shí),將容器的3306端口綁定到本機(jī)的3306端口,其它應(yīng)用訪問本機(jī)3306端口即訪問到容器中的mysql

數(shù)據(jù)卷

在主機(jī)與容器間共享數(shù)據(jù),類似共享文件夾,啟動(dòng)容器時(shí)添加-v參數(shù),如:

docker run -v /root/data/:/songcf/data/ centos
//將本機(jī)的/root/data/目錄掛載到centos容器的/songcf/data/目錄,在centos容器中操作/songcf/data/目錄,就相當(dāng)于更改了主機(jī)上的/root/data/目錄

多個(gè)容器可以掛載主機(jī)上的同一目錄,實(shí)現(xiàn)容器間目錄共享。

常見問題

1. pull鏡像速度太慢

添加國(guó)內(nèi)代理,例如使用aliyun,登錄 https://dev.aliyun.com/ 選擇一個(gè)鏡像,點(diǎn)擊 點(diǎn)擊獲取鏡像加速器地址(須注冊(cè)并登錄阿里云),然后會(huì)得到一個(gè)網(wǎng)址,類似 https://xxxxx.mirror.aliyuncs.com,接下來將該地址添加到docker配置文件中,以centos系統(tǒng)為例:

//打開配置文件
vi /etc/sysconfig/docker
//在options中添加鏡像加速地址(注意是添加)
OPTIONS='--registry-mirror=https://xxxxx.mirror.aliyuncs.com'

然后執(zhí)行service docker restart重啟docker

2. 無法訪問私有倉庫

目前我門的私有倉庫為v2版本,且沒有添加證書,客戶端訪問默認(rèn)走h(yuǎn)ttps,需要在配置文件中指定倉庫地址使用http,而非https

//打開配置文件
vi /etc/sysconfig/docker
//在options中指定私有倉庫地址不使用https(注意是添加)
OPTIONS='--insecure-registry 192.168.2.55:5000'

然后執(zhí)行service docker restart重啟docker

3. 共享鏡像

自己創(chuàng)建鏡像后,可以通過docker push到倉庫上供他人使用,但是當(dāng)倉庫再遠(yuǎn)端,你要和旁邊的同時(shí)共享鏡像,自己push,然后他再pull可能會(huì)有點(diǎn)慢,所以此時(shí)可以導(dǎo)出鏡像文件給它使用:

//到處centos鏡像到xxx.tar文件
docker save -o xxx.tar centos
//然后xxx.tar傳給同事導(dǎo)入即可
docker load -i xxx.tar

// ps: save/load鏡像導(dǎo)入導(dǎo)出,export/import容器導(dǎo)入導(dǎo)出

入門電子書推薦:
https://yeasy.gitbooks.io/docker_practice/content/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,849評(píng)論 15 147
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 4,007評(píng)論 2 49
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,753評(píng)論 0 120
  • 2017.9.1 成都 雨 今天可能對(duì)于所有人來說很普通,但對(duì)于我來說不平凡。 去年的今天在疼痛24小時(shí)后順利產(chǎn)下...
    涵涵媽媽寧歆怡閱讀 410評(píng)論 2 0
  • 露珠說聊齋(一) 文/第一滴露珠 聊齋故事,在中國(guó)的知名度較高,無論男女老少,誰還說不出三五個(gè)聊齋故事的名字來,比...
    第一滴露珠閱讀 1,468評(píng)論 21 12

友情鏈接更多精彩內(nèi)容