docker有兩個(gè)很重要的基本概念:鏡像image和容器container祷安。
容器:類似虛擬機(jī),包括操作系統(tǒng)和程序,可以像普通服務(wù)器一樣操作剿吻;
鏡像:可以理解把容器的某個(gè)時(shí)刻固定下來啄寡,是一層層的文件系統(tǒng)豪硅;
容器和鏡像能夠相互轉(zhuǎn)換,鏡像“run”生成容器挺物,容器“ commit” 生成鏡像懒浮。
鏡像還可以通過dockerfile生成。
1.安裝docker
Centos7升級(jí)安裝docker19.03识藤,并使用GPU
第一次安裝從第3步開始即可砚著。
2.拉取需要的鏡像
鏡像可以從docker hub搜索得到
一般最好選擇下載官方鏡像OFFICIAL IMAGE,個(gè)人上傳的鏡像不保證里面有什么改動(dòng)痴昧。
比如搜索mysql稽穆,前面四個(gè)都是 OFFICIAL IMAGE,
打開第一個(gè)鏈接赶撰,mysql(docker official image)舌镶,有簡單的使用介紹柱彻,Tags標(biāo)簽頁就是版本信息了,可以選擇需要的版本乎折。
#搜索鏡像也可以使用
sudo docker search mysql
#默認(rèn)下載最新版本 latest
sudo docker pull mysql
下載速度慢的話可以配置國內(nèi)鏡像源
# 創(chuàng)建或修改 /etc/docker/daemon.json 文件绒疗,修改為如下形式
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
# 重啟docker服務(wù)
$ systemctl restart docker.service
3.查看下載的鏡像
sudo docker images
可以看到容器倉庫、標(biāo)簽骂澄、鏡像ID吓蘑、創(chuàng)建時(shí)間、大小坟冲。
4.以交互模式進(jìn)入鏡像容器
sudo docker run -it mysql:latest /bin/bash
#或者
sudo docker run -it 4f1413420360("image id") /bin/bash
5.在容器里操作就和普通服務(wù)器操作是一樣的了磨镶,如果是拉取的純凈版鏡像,就需要各種配置健提,最好先配置好國內(nèi)的鏡像源琳猫,這樣下載速度會(huì)大大加快。
在容器里進(jìn)行操作私痹,在沒有測試完成之前脐嫂,最好不要退出容器∥勺瘢可以打開新的窗口進(jìn)行其他操作账千。
可以用一個(gè)shell腳本作為啟動(dòng)腳本,把啟動(dòng)命令寫在腳本中暗膜,方便使用docker啟動(dòng)相應(yīng)服務(wù)匀奏。
6.查看正在運(yùn)行的容器
sudo docker ps -a
可以看到容器ID、對(duì)應(yīng)的鏡像学搜、運(yùn)行的命令娃善、創(chuàng)建時(shí)間、狀態(tài)瑞佩,端口聚磺,命名。
7.主機(jī)和容器傳輸文件
sudo docker cp ("from") ("to")
#容器路徑為 “容器ID”:路徑
sudo docker cp /data/myfile 36b0de942dbe:/home/data
sudo docker cp 36b0de942dbe:/home/data /data/myfile
8.如果在容器中已經(jīng)把程序?qū)懞昧司嫱瑁枰旬?dāng)前的容器生成一個(gè)新的鏡像咧最,方便部署和拷貝
sudo docker commit “容器ID” “新的鏡像名稱和版本”
sudo docker commit 36b0de942dbe myMysql:v1.0
9 部署鏡像服務(wù)
sudo docker run -d -p 3314:3306 myMysql:v1.0(“或者image id”)/mydata/start.sh
后臺(tái)運(yùn)行 -d
端口映射 -p "主機(jī)端口":"鏡像端口"
關(guān)于docker的參數(shù)都要寫在鏡像前,不能寫在鏡像后御雕。
10.查看容器是否正常運(yùn)行
sudo docker ps -a
如果容器狀態(tài)為“Up”則正常,“Exited” 則失敗滥搭,說明這個(gè)鏡像有bug酸纲,則需要修改生成這個(gè)鏡像的容器,也就是回到第5步瑟匆,重復(fù)這個(gè)過程直到成功闽坡。
11.容器正常運(yùn)行,需要進(jìn)入容器內(nèi)修改bug
sudo docker exec -it ("容器ID") /bin/bash
- 鏡像的保存
如果有docker私有倉庫,需要先給鏡像按照私有倉庫的命名規(guī)則打好標(biāo)簽疾嗅,再push到倉庫中外厂;
sudo docker tag "鏡像ID" “標(biāo)簽名”
#這個(gè)時(shí)候會(huì)看到這兩個(gè)鏡像的ID是相同的,其實(shí)就是重命名代承。
sudo push "標(biāo)簽名"
13.鏡像的導(dǎo)入導(dǎo)出
如果沒有倉庫汁蝶,也可以把鏡像打包,然后分享鏡像文件论悴。
sudo docker save "鏡像ID" > "保存路徑"
sudo docker save mysql:latest > /data/mysql.tar
sudo docker load "保存路徑"
14.鏡像的刪除
sudo docker rmi "鏡像ID"
15.容器常用命令
啟動(dòng)容器
sudo docker start “容器ID”
停止容器
sudo docker stop “容器ID”
重啟容器
sudo docker restart “容器ID”
刪除容器
sudo docker rm “容器ID”
查看端口
sudo docker port “容器ID”
查看日志
sudo docker logs “容器ID”