登录电脑
我们将会启用 Docker 软件源,导入 GPG key,并且安装软件包。
首先,更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源:
lsb_release-a 查看ubuntu版本
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
使用下面的 curl
导入源仓库的 GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将 Docker APT 软件源添加到你的系统:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
现在,Docker 软件源被启用了,你可以安装软件源中任何可用的 Docker 版本。
ps -p 1来识别 init 系统
安装最新版本的 Docker Engine-Community
sudo apt install docker-ce
到此安装完成, 可以输入 sudo docker --version 或者 sudo docker run hello-world 测试是否安装成功。
问题1:
sudo docker --version
返回:Docker version 24.0.7, build afdd53b
sudo docker run hello-world
发生错误:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这个错误表示Docker守护进程(Docker Daemon)没有再系统运行。Docker 守护进程是一个在后台运行的服务,用于管理 Docker 容器和镜像。
解决这个问题的方法是确保 Docker 守护进程正在运行。你可以按照以下步骤来检查和启动 Docker 守护进程:
-
检查 Docker 服务状态:
使用以下命令检查 Docker 服务是否正在运行:
复制代码
sudo service docker status
如果 Docker 服务未启动,你可以使用以下命令启动它:
复制代码
sudo service docker start
或者,如果你的系统使用
systemd
,你可以使用以下命令:复制代码
sudo systemctl start docker
-
添加用户到 Docker 用户组(可选):
你也可以将你的用户添加到 Docker 用户组,这样你就不需要每次都使用
sudo
来运行 Docker 命令。使用以下命令将你的用户添加到 Docker 用户组:复制代码
sudo usermod -aG docker $USER
请注意,添加用户到 Docker 用户组后,你需要注销并重新登录以使更改生效。
-
重新启动终端:
重新启动终端会确保你的用户已成功添加到 Docker 用户组或者 Docker 服务已经启动。
在完成上述步骤后,你应该能够使用 sudo docker run hello-world
命令来成功运行 Docker 容器,而不再遇到该错误。如果问题仍然存在,请提供更多关于你的系统和配置的信息,以便更好地帮助你解决问题。
到此安装完成, 可以输入 sudo docker --version 或者 sudo docker run hello-world 测试是否安装成功
如果您想免sudo进入docker的话, 直接输入以下命令,亲测:
以下命令意思就是将用户加入新docker组中,重启docker,切换当前会话到新 group
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker
注意:最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。
在ubuntu中如何查看初始化系统是哪一个?
在 Ubuntu 中,你可以使用以下命令来查看初始化系统(init system)是哪一个:
bash复制代码
ps -p 1 -o comm=
这个命令会显示 PID 为 1 的进程的名称,而 PID 1 通常是初始化系统的进程。根据输出的结果,你可以确定你的系统使用的是哪个初始化系统。常见的初始化系统包括:
-
Systemd:大多数现代版本的 Ubuntu 使用 Systemd 作为初始化系统。
-
Upstart:在一些较早的 Ubuntu 版本中使用过 Upstart,但它已经被 Systemd 取代。
-
SysV Init:在一些非常古老的 Ubuntu 版本中可能仍然使用 SysV Init。
请注意,随着 Ubuntu 版本的更新,初始化系统也可能会有变化,所以确保查看正确的版本信息。
在使用 SysVinit 作为初始化系统时,如何打开docker?
在使用 SysVinit 作为初始化系统时,你可以通过编写一个启动脚本来启动 Docker 服务。以下是一些通用的步骤,你可以根据你的系统配置稍作调整:
-
创建一个新的启动脚本: 使用文本编辑器创建一个新的启动脚本,通常位于
/etc/init.d/
目录中。你可以使用sudo
权限来创建这个文件,例如:sudo nano /etc/init.d/docker
-
编写启动脚本内容: 在这个新创建的文件中,你需要定义如何启动和停止 Docker 服务。以下是一个示例 SysVinit 启动脚本,你可以根据需要进行修改:
#!/bin/sh ### BEGIN INIT INFO # Provides: docker # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Docker at boot time # Description: Enable Docker container runtime ### END INIT INFO # Path to the Docker binary DOCKER_BINARY="/usr/bin/docker" case "$1" in start) echo "Starting Docker..." $DOCKER_BINARY daemon ;; stop) echo "Stopping Docker..." $DOCKER_BINARY stop ;; restart) echo "Restarting Docker..." $DOCKER_BINARY restart ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0
请确保将
DOCKER_BINARY
变量设置为 Docker 二进制文件的实际路径。 -
保存并退出编辑器。
-
设置文件权限: 设置新创建的脚本文件为可执行:
sudo chmod +x /etc/init.d/docker
-
启用服务: 使用以下命令将 Docker 服务添加到运行级别中,以便在系统启动时启动:
sudo update-rc.d docker defaults
-
启动 Docker 服务: 使用以下命令来启动 Docker 服务:
sudo service docker start
现在,Docker 服务应该已经在 SysVinit 初始化系统中启动了。你可以使用 sudo service docker stop
、sudo service docker restart
和其他相关命令来管理 Docker 服务。请注意,SysVinit 在现代 Linux 发行版中不常见,大多数系统已经迁移到了 Systemd 或其他初始化系统。如果可能的话,建议升级到一个更现代的系统,以获得更好的支持和安全性。