當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]Docker基本使用命令

前言

剛看別人使用Docker的時(shí)候有很多不解,為什么要用Docker,Docker怎么用?Docker配置為什么這么難?為什么網(wǎng)絡(luò)訪問(wèn)不通?等等因素阻礙了筆者學(xué)習(xí)Docker?其實(shí)筆者也很笨,有很多思考不清晰的點(diǎn)。順便也分享下。學(xué)時(shí)疑惑:
Q:我一套服務(wù)為什么不放在一個(gè)容器里面(Java、MySQL、Nginx、Redis等)?A:因?yàn)榧纫S護(hù)容器內(nèi)網(wǎng)絡(luò),又要維護(hù)端口等等之類(lèi)的東西,Docker就是為了快速搭建環(huán)境而生的,而且Docker最好也是一個(gè)服務(wù)一個(gè)容器,這樣好打理。
Q:Docker能放到生產(chǎn)環(huán)境嗎?A:在公司沒(méi)有專(zhuān)門(mén)的運(yùn)維團(tuán)隊(duì)情況下,不建議使用Docker部署的環(huán)境作為生產(chǎn)環(huán)境,因?yàn)椴粌H僅要維護(hù)項(xiàng)目和中間件,Docker或者Kubernetes出現(xiàn)問(wèn)題后,還要解決這些問(wèn)題,也就是還要解決Docker的問(wèn)題。如果在沒(méi)有專(zhuān)門(mén)運(yùn)維團(tuán)隊(duì)的情況下,最好使用某里云的服務(wù),例如RDS,SLB等,最起碼別人還會(huì)幫你維護(hù)你的數(shù)據(jù)庫(kù)和服務(wù)。

基本命令

下載鏡像# 以Redis為例子
docker pull redis
運(yùn)行鏡像docker run \
-d \ # 后臺(tái)運(yùn)行
--name redis6 \ # 自定義名字
-p 6379:6379 \ # 端口映射
redis # 鏡像名稱
docker run -d --name redis6 -p 6379:6379 redis redis-server --appendonly yes --requirepass "123456" # 完整命令
進(jìn)入容器
第一種(不推薦,當(dāng)退出容器使用exit命令時(shí),會(huì)停止這個(gè)容器):docker attach 容器id

第二種:docker exec -it 容器id /bin/bash
暫停容器docker stop 容器id
啟動(dòng)容器docker start 容器id

查詢?nèi)萜髁斜?/span>docker ps -a # 查看所有容器
docker ps # 查看運(yùn)行中的容器

run和start的區(qū)別:
  • run是創(chuàng)建一個(gè)新的容器
  • start是把已經(jīng)創(chuàng)建好的容器啟動(dòng)

查看容器信息docker inspect 容器id

掛載

掛載介紹
容器里面的文件都是在容器內(nèi)部,而跟你當(dāng)前電腦是沒(méi)有關(guān)系的,如果刪除了容器怎么辦?但是資料又想保存就像MySQL一樣,我只是換一臺(tái)電腦就要把整個(gè)容器復(fù)制過(guò)去,太麻煩了!所以需要把容器的文件跟當(dāng)前主機(jī)文件作為一個(gè)映射。
命令教程
參數(shù)-v宿主機(jī)路徑:容器路徑# 以MySQL為例子
docker run -d --name mysql8 -p 3306:3306 -v /data/mysql8/config:/etc/mysql/conf.d -v /data/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
# 以上的命令可以參考:https://hub.docker.com/_/mysql,里面有詳細(xì)介紹
為什么要知道這么多路徑或者參數(shù)
每個(gè)中間件或者一個(gè)數(shù)據(jù)庫(kù)容器,他可能需要有很多配置,例如密碼,持久化文件的路徑等等。那我們?cè)趺粗缆窂绞鞘裁矗?/span>

  • 可以進(jìn)hub.docker.com找到自己需要的容器然后看文檔
  • 進(jìn)容器找了(這個(gè)方法有點(diǎn)笨,筆者一開(kāi)始就是這么找到的。)
網(wǎng)絡(luò)

容器之間怎么進(jìn)行通訊
容器雖然是能相互通訊的,但是容器每次重啟ip都跟上一次不一樣,所以這樣通訊會(huì)很復(fù)雜。
示范# 先拉個(gè)CentOS鏡像下來(lái)
docker pull centos
# 創(chuàng)建個(gè)容器
docker run -d -it --name centos1 centos
docker run -d -it --name centos2 centos
docker inspect centos1_id

截取一些容器信息下來(lái):[
{
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
"EndpointID": "41230bf523fac8fa4933989d98baaaa7655fba5c5dadd14e63839ffe868ed3f8",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:04",
"DriverOpts": null
}
}
}
}
]
docker inspect centos2_id
[
{
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "9e7ed6d29ca3474de04409833e39b7c7965c7c63d3a1f509886a7a998e4825f8",
"EndpointID": "8ae77d46887c795983ee7a8fb96951d05e236b4ca4b4caa5d5964f892e18a476",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:05",
"DriverOpts": null
}
}
}
}
]
  • 以上centos1 ip為172.17.0.4
  • 以上centos2 ip為172.17.0.5

解決問(wèn)題docker network create centos-network
docker run -d -it --network centos-network --name centos3 centos
docker run -d -it --network centos-network --name centos4 centos
docker exec -it centos3_id /bin/bash
ping centos4
# 所以當(dāng)創(chuàng)建了一個(gè)network后 容器都能加入到這個(gè)網(wǎng)絡(luò)里面,很方便

這樣就可以解決每次容器重啟后ip不一致問(wèn)題。
小結(jié)

其實(shí)在剛使用容器的時(shí)候會(huì)很麻煩:

  • 不知道Docker的命令和容器需要的參數(shù)
  • 每次都要上官網(wǎng)找下有什么參數(shù)或者百度,但相比每次下載文件下來(lái),進(jìn)去配置省很多力氣,并且配置一次保存好用過(guò)的命令,以后都可以用了,不需要再重復(fù)去改很多東西
  • 其實(shí)在一些小型公司,沒(méi)有專(zhuān)業(yè)的運(yùn)維的話盡量不要在生產(chǎn)環(huán)境上使用Docker,不然真的出現(xiàn)問(wèn)題的話會(huì)很頭疼,不僅僅要維護(hù)項(xiàng)目,還要維護(hù)Docker

原文鏈接:https://juejin.cn/post/6974427129748389902

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉