docker有兩個很重要的基本概念:鏡像image和容器container。
容器:類似虛擬機,包括操作系統(tǒng)和程序,可以像普通服務器一樣操作;
鏡像:可以理解把容器的某個時刻固定下來,是一層層的文件系統(tǒng);
容器和鏡像能夠相互轉(zhuǎn)換,鏡像“run”生成容器,容器“ commit” 生成鏡像。
鏡像還可以通過dockerfile生成。
1.安裝docker
Centos7升級安裝docker19.03,并使用GPU
第一次安裝從第3步開始即可。
2.拉取需要的鏡像
鏡像可以從docker hub搜索得到
一般最好選擇下載官方鏡像OFFICIAL IMAGE,個人上傳的鏡像不保證里面有什么改動。
比如搜索mysql,前面四個都是 OFFICIAL IMAGE,
打開第一個鏈接,mysql(docker official image),有簡單的使用介紹,Tags標簽頁就是版本信息了,可以選擇需要的版本。
#搜索鏡像也可以使用
sudo docker search mysql
#默認下載最新版本 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服務
$ systemctl restart docker.service
3.查看下載的鏡像
sudo docker images
可以看到容器倉庫、標簽、鏡像ID、創(chuàng)建時間、大小。
4.以交互模式進入鏡像容器
sudo docker run -it mysql:latest /bin/bash
#或者
sudo docker run -it 4f1413420360("image id") /bin/bash
5.在容器里操作就和普通服務器操作是一樣的了,如果是拉取的純凈版鏡像,就需要各種配置,最好先配置好國內(nèi)的鏡像源,這樣下載速度會大大加快。
在容器里進行操作,在沒有測試完成之前,最好不要退出容器??梢源蜷_新的窗口進行其他操作。
可以用一個shell腳本作為啟動腳本,把啟動命令寫在腳本中,方便使用docker啟動相應服務。
6.查看正在運行的容器
sudo docker ps -a
可以看到容器ID、對應的鏡像、運行的命令、創(chuàng)建時間、狀態(tài),端口,命名。
7.主機和容器傳輸文件
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ū)懞昧?,需要把當前的容器生成一個新的鏡像,方便部署和拷貝
sudo docker commit “容器ID” “新的鏡像名稱和版本”
sudo docker commit 36b0de942dbe myMysql:v1.0
9 部署鏡像服務
sudo docker run -d -p 3314:3306 myMysql:v1.0(“或者image id”)/mydata/start.sh
后臺運行 -d
端口映射 -p "主機端口":"鏡像端口"
關于docker的參數(shù)都要寫在鏡像前,不能寫在鏡像后。
10.查看容器是否正常運行
sudo docker ps -a
如果容器狀態(tài)為“Up”則正常,“Exited” 則失敗,說明這個鏡像有bug,則需要修改生成這個鏡像的容器,也就是回到第5步,重復這個過程直到成功。
11.容器正常運行,需要進入容器內(nèi)修改bug
sudo docker exec -it ("容器ID") /bin/bash
- 鏡像的保存
如果有docker私有倉庫,需要先給鏡像按照私有倉庫的命名規(guī)則打好標簽,再push到倉庫中;
sudo docker tag "鏡像ID" “標簽名”
#這個時候會看到這兩個鏡像的ID是相同的,其實就是重命名。
sudo push "標簽名"
13.鏡像的導入導出
如果沒有倉庫,也可以把鏡像打包,然后分享鏡像文件。
sudo docker save "鏡像ID" > "保存路徑"
sudo docker save mysql:latest > /data/mysql.tar
sudo docker load "保存路徑"
14.鏡像的刪除
sudo docker rmi "鏡像ID"
15.容器常用命令
啟動容器
sudo docker start “容器ID”
停止容器
sudo docker stop “容器ID”
重啟容器
sudo docker restart “容器ID”
刪除容器
sudo docker rm “容器ID”
查看端口
sudo docker port “容器ID”
查看日志
sudo docker logs “容器ID”