一、安裝
- 1、卸載可能存在的舊版本
sudo apt-get remove docker docker-engine docker-ce docker.io
- 2、更新apt包索引
sudo apt-get update
顯示“正在讀取軟件包列表… 完成”
- 3、安裝以下包以使apt可以通過HTTPS使用存儲(chǔ)庫(repository)
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
顯示“done.”
- 4、添加Docker官方的GPG密鑰
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
顯示“OK”
- 5、設(shè)置stable存儲(chǔ)庫
sudo add-apt-repository "deb [arch=amd64] Index of linux/ubuntu/ $(lsb_release -cs) stable"
如果沒有報(bào)錯(cuò)就正常進(jìn)行下一步。顯示“正在讀取軟件包列表… 完成”
這里我報(bào)錯(cuò)
Command 'lsb_release' not found, but can be installed with:
sudo apt install lsb-release
E: 文件 list 第 73 行的記錄格式有誤 /etc/apt/sources.list (URI parse)
E: 無法讀取源列表。
解決方法就是
(1)先刪除剛剛加進(jìn)去的語句
sudo gedit /etc/apt/sources.list
刪掉73以及之后的句子(也就是剛剛我們加進(jìn)去的)
(2)改為重新運(yùn)行下列語句(根據(jù)版本選擇自己的句子即可)
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu (Ubuntu內(nèi)核名稱) stable"
# Ubuntu16.04對(duì)應(yīng)xenial
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
# Ubuntu18.04對(duì)應(yīng)bionic
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
# Ubuntu20.04對(duì)應(yīng)focal
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
參考鏈接:Ubuntu安裝docker報(bào)錯(cuò):Command ‘lsb_release‘ not found
- 6、更新一下apt包索引
sudo apt-get update
顯示“正在讀取軟件包列表… 完成”
- 7、安裝最新版本的Docker CE
sudo apt-get install -y docker-ce
顯示“正在處理用于 man-db (2.9.1-1) 的觸發(fā)器 …
正在處理用于 systemd (245.4-4ubuntu3.17) 的觸發(fā)器 …”
二、驗(yàn)證
- 查看docker服務(wù)是否啟動(dòng)
systemctl status docker
或者
service docker status
- 【可跳過】若未啟動(dòng),則啟動(dòng)docker服務(wù)
systemctl start docker
# 或者
service docker start
三、配置鏡像加速器
默認(rèn)的情況下docker會(huì)從docker hub中查找或下載鏡像,在國(guó)內(nèi)會(huì)比較慢??梢允褂冒⒗锏溺R像加速器來提高速度。
- 1、在阿里云注冊(cè)賬號(hào)–右上角進(jìn)入控制臺(tái)。
https://www.aliyun.com/
- 2、容器鏡像服務(wù)
打開左上角菜單欄,搜索“容器鏡像”,選擇“容器鏡像服務(wù)”
- 3、加速
打開左側(cè)"鏡像工具",選擇"鏡像加速器",在Ubuntu中依次運(yùn)行最下方代碼
(容器鏡像服務(wù))
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
如果寫錯(cuò)了可以通過以下代碼來修改或者查看
sudo gedit /etc/docker/daemon.json
四、鏡像使用
1、鏡像和容器的區(qū)別
-
鏡像與容器為一對(duì)多的關(guān)系,通過一個(gè)鏡像確實(shí)可以啟動(dòng)三個(gè)容器,但是這個(gè)三個(gè)容器的名字不能一樣。
-
鏡像是別人打包好在鏡像倉(cāng)庫的,我們?nèi)ハ螺d就好了。但是我們下載鏡像的時(shí)候要帶上版本號(hào)。如ubuntu:20.04和ubuntu:18.04是兩個(gè)不同的鏡像。
-
鏡像的基本屬性包括REPOSITORY(倉(cāng)庫名)、TAG、IMAGE ID、CREATED(創(chuàng)建時(shí)間)、SIZE等。例如【ubuntu:20.04】的REPOSITORY = ubuntu,TAG = 20.04。
參考鏈接:
docker容器和鏡像的區(qū)別
Docker容器與鏡像的區(qū)別
2、Exit狀態(tài)、運(yùn)行、未運(yùn)行
-
創(chuàng)建鏡像時(shí)順便創(chuàng)建的容器:exit后成為:exited狀態(tài)=未運(yùn)行狀態(tài)
-
start之后的容器:運(yùn)行狀態(tài)。經(jīng)過exit后,未成為exited狀態(tài),需要再經(jīng)過stop,才可以成為未運(yùn)行狀態(tài)。
3、具體使用
簡(jiǎn)單了解了鏡像和容器的區(qū)別,就可以開始創(chuàng)建鏡像/容器了。
(1)創(chuàng)建鏡像和容器
【在這步驟中可以輸入“exit”來直接退出容器】
a. run命令
【ubuntu20.04:8ba1b8fe358d,不命名】
在ubuntu:20.04鏡像下創(chuàng)建一個(gè)容器。如果沒有發(fā)現(xiàn)鏡像的話,會(huì)自動(dòng)進(jìn)行下載(Pull)。
sudo docker run -it ubuntu:20.04 /bin/bash
/bin/bash 參數(shù)告訴docker在容器中啟動(dòng)一個(gè)bash shell,即pull完會(huì)直接進(jìn)入容器中,其中8ba1b8fe358d就是容器的編號(hào)。
【ubuntu20.04:892fed6bf971,名為myx_test】
–name可以實(shí)現(xiàn)為容器取名。
事實(shí)上,在ubuntu20的系統(tǒng)中,ubuntu:latest和ubuntu:20.04是同一個(gè)鏡像,但由于TAG不同,會(huì)再次Pull,此時(shí)創(chuàng)建了ubuntu:latest鏡像下下一個(gè)新的名為“myx_test”的容器,容器ID為892fed6bf971。
sudo docker run -it --name=myx_test ubuntu:latest
【ubuntu18.04:f36e76fb8d9a,名為myx_test2】
此時(shí),如果改為ubuntu18.04,就要重新進(jìn)行pull。此時(shí)創(chuàng)建了一個(gè)ID為f36e76fb8d9a的容器
sudo docker run -it --name=myx_test2 ubuntu:18.04
b. create命令
也可以用create命令新建鏡像,但create完成后不會(huì)自動(dòng)創(chuàng)建容器。由于此時(shí)已經(jīng)存在latest,所以不會(huì)pull
sudo docker create -it ubuntu:latest
(2)查看鏡像和容器
- 查看鏡像
sudo docker images
根據(jù)之前的步驟,分別創(chuàng)建過ubuntu20.04、ubuntu:latest、ubuntu18.04三種鏡像。
同時(shí)如之前所述,對(duì)于同版本的ubuntu鏡像,其ID是相同的
- 查看容器
# 查看Exited狀態(tài)的容器
sudo docker ps -a|grep Exited|awk '{print $1}'
從下至上依次是之前創(chuàng)建的三個(gè)容器
(3)容器進(jìn)入退出和啟動(dòng)停止
-
若當(dāng)前已經(jīng)位于容器中:
-
退出時(shí)想繼續(xù)運(yùn)行容器:依次按【ctrl+p】,【ctrl+q】
-
退出時(shí)想停止運(yùn)行容器:按【ctrl+d】或輸入exit
-
-
若當(dāng)前不在容器中:
# 啟動(dòng),start后跟著id號(hào),只要能唯一標(biāo)志,可以不完整輸入
# 也可以是之前定義的名稱
sudo docker start id # sudo docker start 89
sudo docker start name # sudo docker start myx_test
# 停止
sudo docker stop id
sudo docker start name
其中,啟動(dòng)并不會(huì)進(jìn)入bash界面,而是讓容器運(yùn)行,不再屬于Exited狀態(tài)。
- 容器已經(jīng)啟動(dòng),想要進(jìn)入容器bash界面:
需要先通過sudo docker start
啟動(dòng)容器,才可以用以下代碼進(jìn)入
# 同樣是使用id和name都可以,之后不再?gòu)?fù)述
sudo docker exec -i -t myx_test /bin/bash
sudo docker exec -i -t 89 /bin/bash
這里要注意的是,經(jīng)過start的容器,僅僅“exit”無法讓其處于Exited狀態(tài),需要再運(yùn)行stop命令。
(4)刪除鏡像和容器
- 刪除鏡像
刪除鏡像ubuntu:latest
# 短id
sudo docker rmi ba6a
# 完整id
sudo docker rmi ba6acccedd29
# 鏡像名【REPOSITORY:TAG】
sudo docker rmi ubuntu:latest
(2)刪除容器
創(chuàng)建一個(gè)新的容器,id是d56bf84b9bbe,刪除
# 刪除某個(gè)具體容器
sudo docker rm id
# 刪除Exited狀態(tài)/未運(yùn)行的容器,三種命令均可
sudo docker rm docker ps -a|grep Exited|awk '{print $1}'
sudo docker rm $(sudo docker ps -qf status=exited)
sudo docker rm $(sudo docker ps -a -q)
# 刪除孤立容器
sudo docker container prune
參考鏈接文章來源:http://www.zghlxwxcb.cn/news/detail-753429.html
docker容器安裝與使用文章來源地址http://www.zghlxwxcb.cn/news/detail-753429.html
到了這里,關(guān)于Ubuntu20.04中Docker安裝與配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!