openEuler(华为欧拉)安装docker
系统版本、docker版本
欧拉系统为:22.03,docker为:24.0.4
安装Docker
添加docker源
- *该docker源为阿里云源
# 添加源
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 上面命令执行成功后,手动编辑/etc/yum.repos.d/docker-ce.repo文件,将里面的$Release修改为对应的Centos版本号,这样才能映射到具体的下载连接,本文$Release的值为7。
# 安装稳定版
dnf install -y docker-ce
# 启动docker
systemctl start docker
# 设置为开机启动
systemctl enable docker
# 查看docker版本信息
docker -v
# 或使用
docker version
docker依赖项安装
若安装时出现错误:fuse-overlayfs >= 0.7 error while installing docker
需要安装docker的依赖包,手动编辑:
/etc/yum.repos.d/openEuler.repo
添加以下信息并保存:
[centos-extras]
name=Centos extras - $basearch
# baseurl=http://mirror.centos.org/centos/7/extras/x86_64 该链接已过时,请使用下面的链接
baseurl=https://vault.centos.org/7.9.2009/extras/x86_64
enabled=1
gpgcheck=1
gpgkey=http://centos.org/keys/RPM-GPG-KEY-CentOS-7
然后安装这些依赖包:
yum -y install slirp4netns fuse-overlayfs container-selinux
参考:https://stackoverflow.com/questions/65878769/cannot-install-docker-in-a-rhel-server
docker常用指令
启动docker服务、查看服务状态、设置为开机启动
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
查看已安装镜像列表
docker image ls
导出镜像到指定路径
docker save myimage -o /path/to/save/myimage.tar
加载保存在指定位置的Docker镜像
docker load -i /path/to/save/myimage.tar
请注意,在加载镜像时,您需要使用该镜像的名称和标记来引用它。如果导出的镜像没有标记,您可以使用docker tag命令为其添加标记。
可以在使用docker load命令成功加载镜像后,安全地删除镜像文件。因为docker load命令将镜像文件加载到Docker守护程序中,从而创建了一个新的Docker镜像。该新的Docker镜像不再依赖于原始镜像文件。
但是,如果您需要重新加载该镜像,您将需要重新获取该镜像文件或从其他位置恢复该文件。因此,在删除镜像文件之前,请确保您不再需要重新加载该镜像
查看容器列表及状态
#查看运行的容器
docker ps
#查看所有容器,包括已停止的容器
docker ps -a
创建并启动一个新容器
#需要注意的是,每次调用run都会创建一个新容器,会占用空间。--name是你指定的容器名称
#-p 3000:3000 表示将docker容器内部的3000端口映射到系统的3000端口,外部程序连接系统3000端口即可连接到容器内部的3000端口
docker run -it --rm -v $(pwd):/mnt --name mycontainer -p 3000:3000 <容器名称或ID>
启动已经创建容器
#为避免重复创建容器和占用空间,您可以使用 docker start 命令来启动之前创建的容器。
docker start -i mycontainer
查看容器资源占用
docker stats <容器名称或ID>
停止当前容器
在当前容器的控制台输入
exit 0
使用docker指令停止容器
docker stop <容器ID或容器名称>
如果要强制停止容器,可以使用 -f 选项:
docker stop -f <容器ID或容器名称>
删除容器
#该命令将删除指定的Docker容器,并释放其占用的磁盘空间。请注意,如果容器正在运行,则必须先停止容器才能删除它。
docker rm <容器名称或ID>
删除所有已停止的Docker容器
docker container prune
非root用户添加到 docker 用户组中
在Linux系统中,使用Docker启动容器通常需要root权限或者与root等效的权限。这是因为Docker需要访问系统的底层资源,如网络和文件系统等。如果您没有足够的权限,则可能无法启动容器或者无法访问容器所需的资源。
然而,在某些情况下,您可以将非root用户添加到 docker 用户组中,以便该用户可以使用Docker命令而无需使用sudo或root权限。要将用户添加到 docker 用户组中,请使用以下命令:
#您需要使用sudo或root权限来运行此命令
sudo usermod -aG docker <用户名>
完成后,您需要注销并重新登录才能使更改生效。
请注意,将非root用户添加到 docker 用户组中可能会带来一些安全风险,因为该用户可以访问Docker守护程序和容器所使用的底层资源。因此,建议仅将可信用户添加到 docker 用户组中,并且在使用Docker时仍需谨慎行事。
查看 Docker 容器的 IP 地址和端口号
docker inspect 容器名称或ID | grep -E 'IPAddress|Ports'
为Docker容器的传入DISPLAY环境变量
#也可以通过echo $DISPLAY获取到值后直接赋值
docker -e DISPLAY=$DISPLAY
host网络模式,不使用端口映射,共享主机地址及端口
docker --network host
为容器传入环境变量
docker env EN1=XX EN2=YY