Docker是一种流行的工具,用于使用容器创建、部署和运行应用程序。Docker容器是隔离的环境,可以在任何支持Docker的平台上运行,使它们具有可移植性和易于管理。在本文中,我们将向您展示如何在Ubuntu Server上安装和配置Docker。
1、更新系统
首先,我们需要更新系统的软件包列表和已安装的软件包,以确保我们使用最新的版本。在终端中,运行以下命令:
sudo apt update
sudo apt upgrade
这可能需要一些时间,取决于您的网络速度和系统状态。更新完成后,重新启动服务器以应用任何内核或重要的安全更新。
sudo reboot
2、安装Docker
接下来,我们将安装Docker引擎,这是Docker的核心组件,负责管理容器的生命周期。 ubuntu 上安装docker有两种方法:
(1)、Ubuntu仓库安装
步骤1:更新Ubuntu上的软件包 打开终端并执行以下命令:
sudo apt-get update
步骤2:安装Docker 执行以下命令以安装Docker:
sudo apt-get install docker.io
安装过程可能需要一些时间,取决于您的网络速度。
步骤3:启动Docker服务 安装完成后,可以使用以下命令启动Docker服务:
sudo systemctl start docker
如果需要在系统启动时自动启动Docker服务,请执行以下命令:
sudo systemctl enable docker
步骤4:验证Docker安装 要验证Docker是否正确安装,请执行以下命令:
sudo docker run hello-world
如果Docker正确安装,则会输出以下信息:
Hello from Docker!
This message shows that your installation appears to be working correctly.
(2)、官方的Docker存储库安装
使用官方的Docker存储库来安装Docker可以获得最新的版本和功能。要添加Docker存储库,我们需要先安装一些必要的依赖包。运行以下命令:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
然后,我们需要添加Docker的官方GPG密钥,以验证下载的软件包的完整性。运行以下命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
最后,我们需要添加Docker存储库的URL到系统的源列表中。运行以下命令:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
现在,我们可以安装Docker引擎了。首先,更新软件包列表以包含新添加的存储库。运行以下命令:
sudo apt update
然后,安装最新版本的Docker引擎和容器d(containerd),这是一个用于管理容器运行时的守护进程。运行以下命令:
sudo apt install docker-ce docker-ce-cli containerd.io
安装完成后,您可以使用以下命令检查Docker是否正在运行并且版本是否正确:
sudo systemctl status docker
docker --version
应该看到类似于以下输出的内容:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-10-19 15:23:18 CST; 5min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 1234 (dockerd)
Tasks: 15
Memory: 55.6M
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -
3、配置Docker非root用户
默认情况下,Docker需要root权限才能执行命令,这意味着我们需要在每次使用Docker命令时加上sudo。为了避免这种不便,我们可以将当前用户添加到一个名为docker的用户组中,该用户组允许其成员使用Docker命令而无需sudo。要创建docker用户组并将当前用户添加到其中,运行以下命令:
sudo groupadd docker
sudo usermod -aG docker $USER
然后,注销并重新登录,或者运行以下命令以激活新的用户组设置:
newgrp docker
要测试配置是否生效,我们可以尝试运行一个简单的Docker命令,比如列出所有的Docker镜像。运行以下命令:
docker image ls
如果您没有看到任何错误消息,说明您已经成功地配置了Docker非root用户。如果您看到类似于以下输出的内容,说明您还需要做一些额外的步骤:
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.24/images/json: dial unix /var/run/docker.sock: connect: permission denied
这意味着您的docker用户组没有正确地设置对Docker守护进程套接字的访问权限。要解决这个问题,您需要更改套接字文件的所有者和权限。运行以下命令:
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
然后,再次尝试运行Docker命令,您应该能够正常使用了。
4、配置镜像仓库
Docker默认使用Docker Hub作为其镜像仓库,但是由于网络原因,从Docker Hub拉取镜像可能会很慢或失败。为了解决这个问题,我们可以配置Docker使用国内的镜像仓库,比如阿里云、腾讯云、网易云等。这些镜像仓库提供了与Docker Hub兼容的接口,可以加速国内用户的镜像拉取速度。配置国内镜像仓库的步骤如下:
- 编辑Docker的配置文件
/etc/docker/daemon.json
,如果文件不存在,则创建一个。在文件中添加以下内容:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
重启Docker服务,使配置生效。运行以下命令:
sudo systemctl restart docker
测试配置是否成功,尝试拉取一个镜像,比如ubuntu:20.04。运行以下命令:
docker pull ubuntu:20.04
如果拉取速度明显提升,说明配置成功。
现在您已经成功在Ubuntu上安装了Docker。您可以开始构建和部署应用程序了。
以下是一些推荐的国内镜像仓库:
Docker中国 https://registry.docker-cn.com
网易 http://hub-mirror.c.163.com
5、通过命令行来进行系统代理访问仓库
在系统文件夹中新建proxy.conf文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
在proxy.conf文件中,添加以下内容:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
tee直接写入:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF
重启docker服务后即可正常拉取镜像
sudo systemctl daemon-reload
sudo systemctl restart docker
运行docker run hello-world
测试代理地址是否可用。如果之前运行过hello-world容器,需要先docker rmi hello-world
删掉镜像