ubuntu下docker的安裝


一、手動安裝

卸載舊版本

Docker 的舊版本被稱為 docker,docker.io 或 docker-engine 。如果已安裝,請卸載它們:

sudo apt remove docker docker-engine docker.io containerd runc

當前稱為 Docker Engine-Community 軟件包 docker-ce 

使用docker倉庫進行安裝

1、添加倉庫地址

更新apt索引

sudo apt update

2、安裝 apt 依賴包,用於通過HTTPS來獲取倉庫:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

3、添加 Docker 的官方 GPG 密鑰:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4、通過搜索指紋的后8個字符,驗證您現在是否擁有帶有指紋的密鑰

sudo apt-key fingerprint 0EBFCD88

5、設置穩定版倉庫

 sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

6、更新apt包索引

sudo apt update

7、安裝指定版本的docker

apt-cache madison docker-ce

選擇指定版本安裝

#Ubuntu18.04
sudo apt-get install docker-ce=5:20.10.11~3-0~ubuntu-bionic docker-ce-cli=5:20.10.11~3-0~ubuntu-bionic containerd.io

#Ubuntu20.04
sudo apt-get install docker-ce=5:20.10.11~3-0~ubuntu-focal docker-ce-cli=5:20.10.11~3-0~ubuntu-focal containerd.io

8、測試安裝是否成功

sudo docker run hello-world

打印以下信息說明安裝成功

二、解決運行docker命令要sudo的問題

Docker的守護線程綁定的是unix socket,而不是TCP端口,這個套接字默認屬於root,其他用戶可以通過sudo去訪問這個套接字文件。所以docker服務進程都是以root賬戶運行。

解決的方式是創建docker用戶組,把用戶加入到docker用戶組里面。只要docker組里的用戶都可以直接執行docker命令。

1、先查看是否有docker用戶組

cat /etc/group | grep docker

如果出現docket:x:等信息,就是有docker組

如果沒有就執行以下指令創建用戶組

sudo groupadd docker 

2、添加用戶到用戶組

sudo usermod -aG docker 用戶名

3、檢查是否添加成功

4、重啟docker

sudo systemctl restart docker

5、給docker.sock添加權限

sudo chmod a+rw /var/run/docker.sock

三、附加知識

1、docker pull 下載的鏡像都在如下目錄下面

/var/lib/docker

2、查看當前所有鏡像

docker images

3、刪除鏡像

docker rmi REPOSITORY:TAG

4、查看所有容器

docker ps -a

5、刪除制定容器

docker rm 容器名

6、從docker鏡像倉庫拉取下來的鏡像都很小,比如ubuntu20.04只有72.8MB,只是一個非常小的系統。

7、docker容器數據會丟失嗎?

docker容器中想要實現數據的持久化,可以通過兩種方式。①通過commit命令使容器反向為鏡像;②以容器數據卷的方式將數據抽離。

容器數據卷的作用就是容器數據的持久化,在容器間繼承、共享數據。

卷就是目錄或文件,存在於一個或多個容器中,由Docker攔截到容器,但不屬於聯合文件系統,因此能夠繞過聯合文件系統提供一些用於持續存儲或共享數據的特性。

卷的設計目的就是數據的持久化,完全獨立於容器的生存周期,因此,刪除容器后,其掛載的數據卷會一直存在,即使掛載數據卷的容器已經被刪除。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM