Docker-基礎(chǔ)使用

零自阱、本文綱要

  • 一、認(rèn)識(shí)Docker
  • 二米酬、Docker架構(gòu)
  • 三沛豌、安裝Docker
  • 四、啟用Docker
  • 五赃额、Docker的基本命令
  • 六加派、Docker數(shù)據(jù)卷
  • 七、Docker命令小結(jié)(僅看命令可跳到此處)

tips:Ctrl + F快速定位到所需內(nèi)容閱讀吧跳芳。

一芍锦、認(rèn)識(shí)Docker

  • 1、Docker解決依賴兼容問(wèn)題
    ① 將應(yīng)用的Libs(函數(shù)庫(kù))飞盆、Deps(依賴)娄琉、配置與應(yīng)用一起打包次乓;
    ② 將每個(gè)應(yīng)用放到一個(gè)隔離容器去運(yùn)行,避免互相干擾孽水。

  • 2票腰、Docker解決操作系統(tǒng)環(huán)境差異問(wèn)題
    ① Docker將用戶程序與所需要調(diào)用的系統(tǒng)(比如Ubuntu)函數(shù)庫(kù)一起打包;
    ② Docker運(yùn)行到不同操作系統(tǒng)時(shí)女气,直接基于打包的函數(shù)庫(kù)杏慰,借助于操作系統(tǒng)的Linux內(nèi)核來(lái)運(yùn)行。

  • 3炼鞠、Docker的優(yōu)勢(shì)
    ① 可以將程序及其依賴缘滥、運(yùn)行環(huán)境一起打包為一個(gè)鏡像,可以遷移到任意Linux操作系統(tǒng)谒主;
    ② 運(yùn)行時(shí)利用沙箱機(jī)制形成隔離容器完域,各個(gè)應(yīng)用互不干擾;
    ③ 啟動(dòng)瘩将、移除都可以通過(guò)一行命令完成,方便快捷凹耙。

  • 4姿现、Docker和虛擬機(jī)的區(qū)別
    ① Docker是一個(gè)系統(tǒng)進(jìn)程;虛擬機(jī)是在操作系統(tǒng)中的操作系統(tǒng)肖抱;
    ② Docker體積小备典、啟動(dòng)速度快、性能好意述;虛擬機(jī)體積大提佣、啟動(dòng)速度慢、性能一般荤崇。

二拌屏、Docker架構(gòu)

鏡像(Image)容器(Container)是我們較為關(guān)注的概念。

  • 1术荤、客戶端(Client)
    Docker 客戶端通過(guò)命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護(hù)進(jìn)程通信倚喂。
  • 2、鏡像(Image)
    Docker將應(yīng)用程序及其所需的依賴瓣戚、函數(shù)庫(kù)端圈、環(huán)境、配置等文件打包在一起子库,稱為鏡像舱权。

  • 3、容器(Container)
    鏡像中的應(yīng)用程序運(yùn)行后形成的進(jìn)程就是容器仑嗅,只是Docker會(huì)給容器進(jìn)程做隔離宴倍,對(duì)外不可見(jiàn)张症。

  • 4、主機(jī)(Host)
    一個(gè)物理或者虛擬的機(jī)器用于執(zhí)行 Docker 守護(hù)進(jìn)程和容器啊楚。

  • 5吠冤、倉(cāng)庫(kù)(Registry)
    倉(cāng)庫(kù)用來(lái)保存鏡像,可以理解為代碼控制中的代碼倉(cāng)庫(kù)恭理。
    Docker Hub(https://hub.docker.com) 是一個(gè)官方的Docker鏡像的托管平臺(tái)拯辙,提供了龐大的鏡像集合供使用。
    國(guó)內(nèi)也有類似于DockerHub 的公開(kāi)服務(wù)颜价,比如 網(wǎng)易云鏡像服務(wù)涯保、阿里云鏡像庫(kù)等。

Docker architecture.png

三周伦、安裝Docker

Install Docker Engine on CentOS | Docker Documentation

  • 1夕春、系統(tǒng)要求
    此處官方要求CentOS必須是7/8版本。
    To install Docker Engine, you need a maintained version of CentOS 7 or 8. Archived versions aren’t supported or tested.
  • 2专挪、卸載老版本
    如果安裝過(guò)老版本的Docker及志,先卸載,再安裝新版本寨腔。
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 3速侈、安裝Docker

① 安裝yum工具,此處需保持虛擬機(jī)聯(lián)網(wǎng)

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

② 更新本地鏡像源
此處我們?cè)O(shè)置阿里云為本地鏡像源迫卢,以保障基礎(chǔ)下載速度倚搬。

# 設(shè)置docker鏡像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

③安裝Docker
docker-ce為社區(qū)免費(fèi)版本,ee版本為企業(yè)版乾蛤。

yum install -y docker-ce

至此每界,我們就已經(jīng)完成Docker的基礎(chǔ)安裝了。

四家卖、啟用Docker

  • 1眨层、啟動(dòng)Docker

① 關(guān)閉防火墻/開(kāi)放對(duì)應(yīng)端口
Docker應(yīng)用會(huì)用到諸多端口,實(shí)際生產(chǎn)環(huán)境中推薦按需開(kāi)啟上荡。此處我們直接關(guān)閉防火墻谐岁。

# 關(guān)閉
systemctl stop firewalld
# 禁止開(kāi)機(jī)啟動(dòng)防火墻
systemctl disable firewalld
# 查看防火墻狀態(tài)
systemctl status firewalld

② 命令啟動(dòng)Docker

systemctl start docker  # 啟動(dòng)docker服務(wù)

systemctl stop docker  # 停止docker服務(wù)

systemctl restart docker  # 重啟docker服務(wù)

③ 查看Docker版本

docker -v
  • 2、配置鏡像加速

此處我們配置阿里云的容器鏡像服務(wù) (aliyun.com)榛臼。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1ifz7405.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

五伊佃、Docker的基本命令

1、鏡像操作

① 鏡像
在Docker中沛善,鏡像名稱為:NAME[:TAG|@DIGEST]航揉。其中NAME部分是必須的,也就是鏡像名稱金刁。[:TAG|@DIGEST]標(biāo)簽或者摘要部分是可選的帅涂,如:nginx:1.20议薪。

② 鏡像命令
具體可以查閱官方文檔:docker image | Docker Documentation

鏡像命令.png
  • 1.1 拉取、查看鏡像

① 去鏡像倉(cāng)庫(kù)搜索鏡像
此處我們可以訪問(wèn)Docker Hub媳友,然后搜索自己所需的鏡像斯议,選擇Official Image官方鏡像即可。

搜索鏡像.png

② 鏡像拉取
直接pull等同于pull latest版本醇锚,也就是最新版本哼御。

docker pull nginx
docker pull nginx:latest

當(dāng)然也可以根據(jù)自己實(shí)際需求,選擇對(duì)應(yīng)的版本焊唬。

查找倉(cāng)庫(kù)有的版本.png

③ 查看鏡像

docker images
  • 1.2 保存恋昼、刪除、導(dǎo)入鏡像

① 保存鏡像
命令:docker save [OPTIONS] IMAGE [IMAGE...]赶促,可見(jiàn)[OPTIONS]和[IMAGE...]是可選的液肌。
[OPTIONS] -o,--output Write to a file, instead of STDOUT表示向外輸出文件鸥滨。

# 表示向外輸出nginx:latest鏡像的nginx.tar文件
docker save -o nginx.tar nginx:latest

② 刪除鏡像
命令:docker image rm [OPTIONS] IMAGE [IMAGE...]
或者docker rmi [OPTIONS] IMAGE [IMAGE...]
此處蒋纬,我們可以看到Docker為了增加命令可讀性也下了一定的功夫喜德。

docker rmi nginx:latest

③ 導(dǎo)入鏡像
命令:docker image load [OPTIONS]
-i虎锚,--input Read from tar archive file, instead of STDIN表示從文件讀取泼舱。

docker load -i nginx.tar

2宪睹、容器操作

容器操作.png
  • docker run:創(chuàng)建并運(yùn)行一個(gè)容器佛寿,處于運(yùn)行狀態(tài)
  • docker pause:讓一個(gè)運(yùn)行的容器暫停
  • docker unpause:讓一個(gè)容器從暫停狀態(tài)恢復(fù)運(yùn)行
  • docker stop:停止一個(gè)運(yùn)行的容器
  • docker start:讓一個(gè)停止的容器再次運(yùn)行
  • docker rm:刪除一個(gè)容器
  • 2.1 創(chuàng)建并運(yùn)行一個(gè)容器

我們可以在Docker Hub中查詢到如何創(chuàng)建運(yùn)行一個(gè)容器的相關(guān)命令熙兔,官方給我們提供了幾種使用場(chǎng)景的命令囱稽。此處我們以Nginx為例容客。

如何使用鏡像.png

① 創(chuàng)建并運(yùn)行Nginx容器
官方命令:$ docker run --name some-nginx -d -p 8080:80 some-content-nginx秕铛,其中some-nginx是給image鏡像的命名(唯一即可),some-content-nginx是我們本機(jī)對(duì)應(yīng)的nginx鏡像缩挑。
我們稍加改動(dòng)但两,就可以運(yùn)行自己的Nginx容器了。如下:

docker run --name mn -d -p 80:80 nginx:latest

-d :Run container in background and print container ID 后臺(tái)運(yùn)行供置;
-p :Publish a container's port(s) to the host 將容器端口映射到宿主機(jī)端口谨湘。
此時(shí)我們就可以通過(guò) http://192.168.253.168:80/ 訪問(wèn)到我們的Nginx。
查看日志
docker logs
查看容器狀態(tài)
docker ps
docker ps -a 查看所有容器芥丧,包括已經(jīng)停止的(不包含已移除的)紧阔。
② 創(chuàng)建并運(yùn)行Redis容器

創(chuàng)建運(yùn)行Redis.png

官方命令:$ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning,我們稍加修改续担,添加-p指令將Redis容器端口映射到主機(jī)端口擅耽。

$ docker run --name mr -p 6379:6379 -d redis:latest redis-server --save 60 1 --loglevel warning

這樣,我們就可以通過(guò)Redis客戶端連接訪問(wèn)Redis容器物遇。

六乖仇、Docker數(shù)據(jù)卷

  • 1憾儒、認(rèn)識(shí)數(shù)據(jù)卷
    數(shù)據(jù)卷(volume)是一個(gè)虛擬目錄,指向宿主機(jī)文件系統(tǒng)中的某個(gè)目錄乃沙。
    一旦完成數(shù)據(jù)卷掛載起趾,對(duì)容器的一切操作都會(huì)作用在數(shù)據(jù)卷對(duì)應(yīng)的宿主機(jī)目錄。同樣我們操作宿主機(jī)的目錄警儒,就等于操作容器內(nèi)的目錄训裆。
數(shù)據(jù)卷.png

① 創(chuàng)建數(shù)據(jù)卷
命令:docker volume create [OPTIONS] [VOLUME]

docker volume create html

② 查看所有數(shù)據(jù)卷
命令:docker volume ls [OPTIONS]

docker volume ls

③ 查看數(shù)據(jù)卷詳細(xì)信息
命令:docker volume inspect [OPTIONS] VOLUME [VOLUME...]

docker volume inspect html

輸出信息如下:

[
  {
    "CreatedAt": "2020-04-19T11:00:21Z",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/html/_data",
    "Name": "myvolume",
    "Options": {},
    "Scope": "local"
  }
]

可以看到冷蚂,我們創(chuàng)建的html這個(gè)數(shù)據(jù)卷關(guān)聯(lián)的宿主機(jī)目錄為/var/lib/docker/volumes/html/_data目錄缭保。

  • 2.2 掛載數(shù)據(jù)卷

① 帶數(shù)據(jù)卷模式掛載
指令:-v, --volume=[host-src:]container-dest[:<options>]: Bind mount a volume.,如下我們就是把html數(shù)據(jù)卷掛載到Nginx容器內(nèi)的/usr/share/nginx/html目錄中蝙茶。

docker run \
--name mn \
-v html:/usr/share/nginx/html \
-p 80:80 \
-d \
nginx:latest

這樣我們修改/var/lib/docker/volumes/html/_data目錄中的文件艺骂,容器中對(duì)應(yīng)的文件也會(huì)產(chǎn)生變化。
② 直接掛載

  • -v [宿主機(jī)目錄](méi):[容器內(nèi)目錄](méi)
  • -v [宿主機(jī)文件]:[容器內(nèi)文件]
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25

七隆夯、Docker命令小結(jié)(僅看命令可跳到此處)

① docker相關(guān)
啟動(dòng)docker服務(wù)systemctl start docker
停止docker服務(wù)systemctl stop docker
重啟docker服務(wù)systemctl restart docker
查看docker版本docker -v
② 鏡像相關(guān)
鏡像拉惹 :docker pull nginx,docker pull nginx:latest
查看鏡像:docker images
保存鏡像:docker save -o nginx.tar nginx:latest
刪除鏡像:docker rmi nginx:latest
導(dǎo)入鏡像:docker load -i nginx.tar
③ 容器相關(guān)
創(chuàng)建并運(yùn)行容器:docker run --name mn -d -p 80:80 nginx:latest
讓運(yùn)行容器暫停:docker pause mn
讓容器從暫停狀態(tài)恢復(fù)運(yùn)行:docker unpause mn
停止運(yùn)行的容器:docker stop mn
讓停止的容器再次運(yùn)行:docker start mn
刪除一個(gè)容器:docker rm mn
查看日志:docker logs
查看容器狀態(tài):docker ps,docker ps -a
④ 數(shù)據(jù)卷相關(guān)
創(chuàng)建數(shù)據(jù)卷:docker volume create html
查看所有數(shù)據(jù)卷:docker volume ls
查看數(shù)據(jù)卷詳細(xì)信息:docker volume inspect html
掛載數(shù)據(jù)卷:-v html:/usr/share/nginx/html,-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf

八、結(jié)尾

以上即為Docker基礎(chǔ)的內(nèi)容蹄衷,感謝閱讀忧额。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市愧口,隨后出現(xiàn)的幾起案子睦番,更是在濱河造成了極大的恐慌,老刑警劉巖耍属,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件托嚣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厚骗,警方通過(guò)查閱死者的電腦和手機(jī)示启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)领舰,“玉大人夫嗓,你說(shuō)我怎么就攤上這事〕寤啵” “怎么了舍咖?”我有些...
    開(kāi)封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锉桑。 經(jīng)常有香客問(wèn)我谎仲,道長(zhǎng),這世上最難降的妖魔是什么刨仑? 我笑而不...
    開(kāi)封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任郑诺,我火速辦了婚禮夹姥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辙诞。我一直安慰自己辙售,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布飞涂。 她就那樣靜靜地躺著旦部,像睡著了一般。 火紅的嫁衣襯著肌膚如雪较店。 梳的紋絲不亂的頭發(fā)上士八,一...
    開(kāi)封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音梁呈,去河邊找鬼婚度。 笑死,一個(gè)胖子當(dāng)著我的面吹牛官卡,可吹牛的內(nèi)容都是我干的蝗茁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寻咒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哮翘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起毛秘,我...
    開(kāi)封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饭寺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后叫挟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體艰匙,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年霞揉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旬薯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晰骑。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡适秩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硕舆,到底是詐尸還是另有隱情秽荞,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布抚官,位于F島的核電站扬跋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凌节。R本人自食惡果不足惜钦听,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一洒试、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朴上,春花似錦垒棋、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至衣撬,卻和暖如春乖订,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背具练。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工乍构, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靠粪。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓蜡吧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親占键。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昔善,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容