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拦截到容器,但不属于联合文件系统,因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此,删除容器后,其挂载的数据卷会一直存在,即使挂载数据卷的容器已经被删除。

 

posted @ 2021-12-01 16:57  chenjian688  阅读(1907)  评论(0编辑  收藏  举报