Docker詳細(xì)教程

docker

一枫笛、Docker介紹

1.1引言

為什么使用docker法精?

傳統(tǒng)環(huán)境:

? 1.環(huán)境不一致。

? 2.在多用戶的操作系統(tǒng)下系馆,會相互影響送漠。

? 3.運(yùn)維成本過高。

? 4.安裝軟件成本過高由蘑。

1.2Docker的由來

一幫年輕人創(chuàng)業(yè)闽寡,創(chuàng)辦了溢價公司,2010年的專門做PAAS平臺尼酿。

到了2013年的時候爷狈,像亞馬遜,微軟裳擎,Google開始做PAAS平臺涎永。

2013年將核心技術(shù)開源,核心技術(shù)就是Docker鹿响。

1.3Docker的思想

1.集裝箱:

? 會將所有需要的內(nèi)容放到不同的集裝箱中羡微,誰需要這些環(huán)境就直接拿這個集裝箱就可以了。

2.標(biāo)準(zhǔn)化:

? 1.運(yùn)輸?shù)臉?biāo)準(zhǔn)化:Docker有一個碼頭惶我,所有上傳的集裝箱都放在了這個碼頭上妈倔,當(dāng)誰需要某一個環(huán)境,就直接指派大海豚去搬運(yùn)這個集裝箱就可以了绸贡。

? 2.命令的標(biāo)準(zhǔn)化:Docker提供一系列的命令盯蝴,幫助我們?nèi)カ@取集裝箱等等操作毅哗。

? 3.提供了REST的API:衍生出了很多圖形化界面,Rancher结洼。

3.隔離性:

? Docker在運(yùn)行集裝箱的內(nèi)容時黎做,會在Linux的內(nèi)核中,單獨(dú)開辟一片空間松忍,這片空間不會影響其他的程序蒸殿。

  • 注冊中心。(超級碼頭鸣峭,上面放的就是集裝箱)
  • 鏡像宏所。(集裝箱)
  • 容器。(運(yùn)行起來的容器)

二摊溶、Docker的基本操作

2.1安裝Docker

# 1.下載關(guān)于Docker的依賴環(huán)境
yum -y install yum-utils device-mapper-persistent-data lvm2
# 2.設(shè)置下載Docker下載的鏡像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.安裝Docker
yum makacache fast
yum -y install docker-ce
# 4.啟動爬骤,并設(shè)置為開機(jī)自動啟動,測試
# 啟動Docker服務(wù)
systemctl start docker
# 設(shè)置開機(jī)自啟動
systemctl enable docker
# 測試
docker run hello-world

2.2Docker的中央倉庫

1.Docker官方的中央倉庫:這個倉庫是鏡像最全的莫换,下載速度較慢

2.國內(nèi)的鏡像網(wǎng)站:網(wǎng)易蜂巢霞玄、DAOCloud。拉岁。坷剧。

3.在公司內(nèi)部會采用私服的方式拉取鏡像(添加配置)

# 需要在 /etc/docker/daemon.json
 {
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "insecure-registries":["ip:port"]
 }
# 重啟兩個服務(wù)
systemctl deamon-reload
systemctl restart docker

2.3鏡像的操作

# 拉取鏡像到本地
docker pull 鏡像名稱[:tag]
# 舉個栗子
docker pull tomcat 
# 查看全部鏡像
docker images
# 刪除本地鏡像
docker rmi 鏡像ID(IMAGE ID)
# 鏡像的導(dǎo)入導(dǎo)出(不規(guī)范)
# 將本地鏡像導(dǎo)出
docker save -o 導(dǎo)出的路徑 鏡像ID
# 加載本地的鏡像文件
docker load -i 鏡像文件
# 修改鏡像名稱
docker tag 鏡像ID 新鏡像名稱:版本

2.4 容器的操作

# 1.運(yùn)行容器
# 簡單操作
docker run 鏡像ID|鏡像名稱[:tag]
# 常用參數(shù)
docker run -d -p 宿主機(jī)端口:容器端口 --name 鏡像ID|鏡像名稱[:tag]
# -d 代表后臺運(yùn)行容器
# -p 宿主機(jī)端口:容器端口:為了映射當(dāng)前Linux的端口和容器的端口
# --name 指定容器名稱
# 2.查看正在運(yùn)行的容器
docker ps [-qa]
# -a:查看全部的容器,包括沒有運(yùn)行的
# -q:只查看容器的ID
# 3.查看容器的日志
docker logs -f 容器ID
# -f:可以滾動查看日志的最后幾行
# 4.進(jìn)入到容器內(nèi)部
docker exec-it 容器ID bash
# 5.刪除容器(刪除容器前喊暖,需要停止容器)
# 停止一個容器
docker stop 容器ID
# 停止全部容器
docker stop $(docker pa -qa)
# 刪除一個容器
docker rm 鏡像ID
# 刪除全部容器
docker rm $(docker pa -qa) 刪除全部容器
# 6.啟動容器
docker satrt 容器ID

三惫企、Docker應(yīng)用

3.1部署工程

# 運(yùn)行MySQL容器
docker run -d -p 3306:3306 --name MYSQL_ROOT_PASSWORD=root daocloud.io/libart/mysql:5.7.4
# 準(zhǔn)備運(yùn)行的項(xiàng)目
project.war
# 復(fù)制到tomcat里
docker cp 文件名稱 容器ID:容器內(nèi)部路徑
# 舉個栗子
docker cp project.war TOMCAT:/usr/local/tomcat/webapp

3.2數(shù)據(jù)卷

為了部署工程,需要使用到cp的命令將宿主機(jī)內(nèi)的工程文件復(fù)制到容器內(nèi)部陵叽。

數(shù)據(jù)卷:將宿主機(jī)的目錄映射到容器的目錄中狞尔。

可以在宿主機(jī)中操作目錄中的內(nèi)容,那么容器內(nèi)部映射的文件巩掺,也會跟著改變偏序。

# 1.創(chuàng)建數(shù)據(jù)卷
docker volume create 數(shù)據(jù)卷名稱
# 創(chuàng)建數(shù)據(jù)卷之后,默認(rèn)會存放在一個目錄下 /var/lib/docker/volume/數(shù)據(jù)卷名稱/_data
# 2.查看數(shù)據(jù)卷詳細(xì)信息
docker volume inspect 數(shù)據(jù)卷名稱
# 3.查看全部數(shù)據(jù)卷
docker volume ls
# 4.刪除數(shù)據(jù)卷
docker volume rm 數(shù)據(jù)卷名稱
# 5.應(yīng)用數(shù)據(jù)卷
# 當(dāng)你映射數(shù)據(jù)卷時胖替,如果數(shù)據(jù)卷不存在禽车,Docker會幫你創(chuàng)建。會將容器內(nèi)部自帶的文件刊殉,存儲在默認(rèn)的存放路徑中。
docker run -v 數(shù)據(jù)卷名稱:容器內(nèi)部的路徑 鏡像ID
# 直接指定路徑作為數(shù)據(jù)卷的存放位置州胳,這個鏈接不是空的记焊。
docker run -v 路徑:容器內(nèi)部的路徑 鏡像ID
# 舉個栗子
docker run -d -p 8080:8080 --name tomcat -v 路徑:/usr/local/tomcat/webapp 鏡像ID

四、Docker自定義鏡像

中央倉庫的鏡像栓撞,也是Docker用戶自己上傳上去的遍膜。

# 1.創(chuàng)建一個Dockerfile文件碗硬,并且指定自定義鏡像信息。
# Dockerfile文件中常用的內(nèi)容瓢颅。
from: 指定當(dāng)前自定義鏡像依賴的環(huán)境
copy:將相對路徑下的內(nèi)容恩尾,復(fù)制到自定義鏡像中
workdir:聲明鏡像的默認(rèn)工作目錄
cmd:需要執(zhí)行的命令(在workdir下執(zhí)行的,cmd可以寫多個挽懦,只以最后一個為準(zhǔn))

# 舉個栗子
from daocloud.io/libart/tomcat:8.5.15-jre8
copy project.war /usr/local/tomcat/webapp
# 2.將準(zhǔn)備好的Dockerfile和相應(yīng)的文件拖拽到Linux操作系統(tǒng)中翰意,通過Docker的命令制作鏡像
docker build -t 鏡像名稱[:tag]
# 舉個栗子
docker build -t project-tomcat:1.0.0 .

五、Docker-Compose

之前運(yùn)行一個驚喜信柿,需要添加大量的參數(shù)冀偶。

可以通過Docker-Compose編寫這些參數(shù)。

Docker-Compose可以幫助我們批量的管理容器渔嚷。

只需要一個docker-compose.yml文件維護(hù)即可进鸠。

5.1下載Docker-Compose

# 1.去GitHub官網(wǎng)搜索docker-compose
https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
# 2.將下載好的文件拖拽到Liunx
# 3.將Docker-Compose文件名稱修改一下,基于DockerCompose文件一個可執(zhí)行權(quán)限
mv 
chmod 777 docker-compose
# 4.添加進(jìn)環(huán)境變量
# 將docker-compose文件移動到了/user/local/bin形病,修改了/etc/profile文件客年,給/usr/local/bin配置到了PATH中
mv docker-compose /usr/local/bin
vi /etc/profile
export PATH=$JAVA_HOME:/usr/local/local/bin:$PATH
source /etc/profile
# 5.測試一下
# 在任意目錄下輸入docker-compose

5.2Docker-Compose管理MySQL

yml文件以key:value方式來指定配置信息

多個配置信息以換行+縮進(jìn)的方式區(qū)分

在docker-compose.yml文件中,不要使用制表符

version: '1.0'
service: 
  mysql:            # 服務(wù)的名稱
    restart: always # 只要docker啟動漠吻,那么這個容器就跟著一起啟動
    image: daocloud.io/libart/mysql:5.7.4 # 指定鏡像路徑
    container_name: mysql # 指定容器名稱
    ports:
      - 3306:3306 # 指定端口映射
    environment:
        MYSQL_ROOT_PASSWORD: ROOT # 指定MySQL的ROOT用戶登錄密碼
        TZ: Asia/Shanghai         # 指定時區(qū)
    volumes:
      - /opt/docker_mysql/data:/var/lib/mysql

5.3使用Docker-Compose命令管理容器

在使用docker-compose的命令時量瓜,默認(rèn)會在當(dāng)前目錄下找docker-compose.yml文件

# 1.基于docker-compose.yml啟動管理的容器
docker-compose up -d
# 2.關(guān)閉并刪除容器
docker-compose down
# 3.開啟或關(guān)閉已經(jīng)存在的由docker-compose維護(hù)的容器
docker-compose start|stop|restart
# 4.查看由docker-compose管理的容器
docker-compose ps
# 5.通過docker-compose查看日志
docker-compose logs -f

5.4Docker-Compose配置Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定義鏡像的同時啟動當(dāng)前鏡像,并且由docker-compose去管理容器

# yml文件
version: '1.0'
services:
  project:
    restart: always
    build:              # 構(gòu)建自定義鏡像
      context: ../      # 指定dockerfile文件所在的路徑
      dockerfile: Dockerfile # 指定Dockerfile文件名稱
    image: project:1.0.1
    container_name: project
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

Dokcerfile文件

from daocloud.io/libart/tomcat:8.5.15-jre8
copy project.war /usr/local/tomcat/webapp
# 可以直接啟動基礎(chǔ)docker-compose.yml以及Dockerfile文件構(gòu)建的自定義鏡像
docker-compose up -d
# 如果自定義鏡像不存在侥猩,會幫助我們構(gòu)建出自定義鏡像榔至,如果存在,則運(yùn)行
# 重新構(gòu)建自定義鏡像
docker-compose build 
# 運(yùn)行前重新構(gòu)建
docker-compose up -d --build

六欺劳、Dokcer CI唧取、CD

6.1引言

項(xiàng)目部署

? 1.將項(xiàng)目通過maven進(jìn)行編譯打包

? 2.將文件上傳到服務(wù)器中

? 3.將war包放到tomcat的目錄中

? 4.通過Dockerfile將Tomcat和war包轉(zhuǎn)成一個鏡像,由DockerCompose去運(yùn)行容器

項(xiàng)目更新

? 將刪除流程再次從頭到尾執(zhí)行一次划提?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枫弟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹏往,更是在濱河造成了極大的恐慌淡诗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伊履,死亡現(xiàn)場離奇詭異韩容,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)唐瀑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門群凶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哄辣,你說我怎么就攤上這事请梢≡玻” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵毅弧,是天一觀的道長气嫁。 經(jīng)常有香客問我,道長够坐,這世上最難降的妖魔是什么寸宵? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮咆霜,結(jié)果婚禮上邓馒,老公的妹妹穿的比我還像新娘。我一直安慰自己蛾坯,他們只是感情好光酣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脉课,像睡著了一般救军。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倘零,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天唱遭,我揣著相機(jī)與錄音,去河邊找鬼呈驶。 笑死拷泽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袖瞻。 我是一名探鬼主播司致,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼聋迎!你這毒婦竟也來了脂矫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤霉晕,失蹤者是張志新(化名)和其女友劉穎庭再,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牺堰,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拄轻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了伟葫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恨搓。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扒俯,靈堂內(nèi)的尸體忽然破棺而出奶卓,到底是詐尸還是另有隱情,我是刑警寧澤撼玄,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布夺姑,位于F島的核電站,受9級特大地震影響掌猛,放射性物質(zhì)發(fā)生泄漏盏浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一荔茬、第九天 我趴在偏房一處隱蔽的房頂上張望废膘。 院中可真熱鬧,春花似錦慕蔚、人聲如沸丐黄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灌闺。三九已至,卻和暖如春坏瞄,著一層夾襖步出監(jiān)牢的瞬間桂对,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工鸠匀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕉斜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓缀棍,卻偏偏與公主長得像宅此,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子睦柴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350