Ubuntu 安装Docker总结

内容分享3周前发布
0 0 0

1、卸载旧版本,Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

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

2、更新 apt 包索引

    $ sudo apt-get update

3、安装 apt 依赖包,用于通过HTTPS来获取仓库:

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

4、添加 Docker 的官方 GPG 密钥:

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

5、9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您目前是否拥有带有指纹的密钥

    $ sudo apt-key fingerprint 0EBFCD88

    会看到以下输出:

    pub  rsa4096 2017-02-22 [SCEA]

      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88

    uid          [ unknown] Docker Release (CE deb) <docker@docker.com>

    sub  rsa4096 2017-02-22 [S]

6、使用以下指令设置稳定版仓库

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

7、安装 Docker Engine-Community,更新 apt 包索引

    $ sudo apt-get update

8、安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io

    如果要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。

        1、列出您的仓库中可用的版本:

            $ apt-cache madison docker-ce

                docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages

                docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages

                docker-ce | 18.06.1~ce~3-0~ubuntu      | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages

                docker-ce | 18.06.0~ce~3-0~ubuntu      | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages

                …

        2、使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。

            $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

9、测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:

    $ sudo docker run hello-world

        Unable to find image hello-world:latest locally

        latest: Pulling from library/hello-world

        1b930d010525: Pull complete  Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f

        Status: Downloaded newer image for hello-world:latest

        Hello from Docker!

        This message shows that your installation appears to be working correctly.

        To generate this message, Docker took the following steps:

        1. The Docker client contacted the Docker daemon.

        2. The Docker daemon pulled the “hello-world” image from the Docker Hub.

            (amd64)

        3. The Docker daemon created a new container from that image which runs the

            executable that produces the output you are currently reading.

        4. The Docker daemon streamed that output to the Docker client, which sent it

            to your terminal.

        To try something more ambitious, you can run an Ubuntu container with:

        $ docker run -it ubuntu bash

        Share images, automate workflows, and more with a free Docker ID:

        https://hub.docker.com/

        For more examples and ideas, visit:

        https://docs.docker.com/get-started/

10、问题描述

    安装完docker后,执行docker相关命令,出现

    ”Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/    docker.sock: connect: permission denied“

    (1)、缘由

        摘自docker mannual上的一段话

        Manage Docker as a non-root user

        The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.

        If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

        大致的意思就是:docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。

    (2)、解决方法1

        使用sudo获取管理员权限,运行docker命令

    (3)、解决方法2

        docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命

        sudo groupadd docker            #添加docker用户组

        sudo gpasswd -a $USER docker    #将登陆用户加入到docker用户组中

        newgrp docker                    #更新用户组

        docker ps                        #测试docker命令是否可以使用sudo正常使用

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...