ubuntu 安装 docker教程和使用

简介:本文章记录在ubuntu上安装docker全过程,及遇到的问题,解决方案、常用操作等,不废话,直击重点

在 Ubuntu  上安装 Docker

安装Docker

我们将会启用 Docker 软件源,导入 GPG key,并且安装软件包 ,需使用root权限 :sudo。

1、首先,更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源:

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

2、使用下面的 curl 导入源仓库的GPG key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

3、将 Docker APT 软件源添加到你的系统:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

4、安装Docker最新版:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

5、安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它:

sudo systemctl status docker

6、默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。命令如下:

注:重新登录才能使更改生效。

sudo usermod -aG docker $USER

阻止Docher 版本自动更新

如果你想阻止 Docker 自动更新,锁住它的版本:

sudo apt-mark hold docker-ce

阿里云镜像加速器的配置

拉取 hub.docker.com 的镜像,会发现速度很慢,是因为有墙。可以配置阿里云镜像加速器。
修改Docker配置文件。对于系统系统为Ubuntu 16.04+、Debian 8+、CentOS 7、Fedora 24+、RedHat 7+等,可修改/etc/docker/daemon.json文件(可能不存在)

登录阿里云控制台,搜索:容器镜像服务->镜像工具->镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://750xi8h6.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

 镜像拉取测试及遇到问题解决:

  Docker Hub是一个云端服务,主要用来储存 公有和私有源中的 Docker 镜像。默认情况下,    Docker可以从 从 Docker Hub 拉取镜像。想要验证当前用户权限,你可以执行docker命令,前面不需要加`sudo, 我们将会运行一个测试容器:

  运行个docker的hello-word,执行docker命令如下:

docker container run hello-world

 可能会出现以下错误:docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

解决方式
在 /etc/docker/daemon.json 里追加镜像拉取地址:“https://docker.yccp.site"
如下:

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://750xi8h6.mirror.aliyuncs.com","https://docker.yccp.site"]

}

EOF

#重新加载,重启服务

sudo systemctl daemon-reload

sudo systemctl restart docker

拉取成功

卸载 Docker

在卸载 Docker 之前,你最好 移除所有的容器,镜像,卷和网络。

运行下面的命令停止所有正在运行的容器,并且移除所有的 docker 对象:

docker container stop $(docker container ls -aq)
docker system prune -a --volumes

现在你可以使用apt像卸载其他软件包一样来卸载 Docker:

sudo apt purge docker-ce
sudo apt autoremove

删除镜像、容器、配置文件等内容:

sudo rm -rf /var/lib/docker

Docker常用命令 Linux

查看 

#查看所有镜像

docker images (该命令会列出已经下载到本地系统中的所有镜像,包括镜像名称、版本号(标签)、镜像ID、创建时间和大小等信息。)

#查看所有容器

docker ps

停止容器

#停止docker服务

sudo systemctl stop docker  (这个命令会停止Docker服务,并且释放所有占用的资源。在运行这个命令时,需要确保有足够的权限,否则会报错。)

#停止所有运行的容器

docker stop $(docker ps -q)

#停止单个容器

docker stop <container_id_or_name>

#停止所有在docker-compose.yml文件中定义的服务

docker-compose stop

#停止指定名称的服务

docker-compose stop <service_name>

 删除镜像

1、删除指定镜像

使用 docker rmi 命令加上镜像的名称或ID来删除单个镜像。例如,要删除名为 my_image (id:c3f279d17e0a)的镜像,可以运行:

docker rmi my_image

或者

docker rmi c3f279d17e0a

2、强制删除 

如果镜像正在被一个或多个容器使用,Docker 默认不允许删除该镜像。此时,可以添加 -f 或 --force 选项来强制删除镜像,即使有容器正在使用它 

docker rmi -f my_image

3、删除多个镜像(同样,如果需要强制删除这些镜像,可以添加 -f 选项。)

docker rmi image1 image2 image3 

4、删除所有未使用的镜像 

使用 docker image prune 命令可以删除所有没有被任何容器使用的镜像。这是一个相对安全的操作,因为它不会删除正在被使用的镜像。 (注意:该命令会提示你确认是否删除,你可以输入 y 来确认。)

docker image prune

5、删除所有镜像(包括正在使用的)

如果你确实需要删除所有镜像,包括那些正在被使用的镜像,可以使用以下命令组合: 

docker rmi $(docker images -q) 

这里,docker images -q 命令会列出所有镜像的ID(不带其他信息),然后通过管道传递给 docker rmi 命令进行删除。但请注意,这是一个不可逆的操作,应谨慎使用。

注意事项
在删除镜像之前,请确保该镜像不再需要,避免误删系统必需的镜像。
如果镜像正在被容器使用,你需要先停止并删除这些容器,或者强制删除镜像(使用 -f 选项)。
docker image rm 命令和 docker rmi 命令是等价的,都可以用来删除镜像。
删除镜像只会影响本地环境,不会影响远程仓库中的镜像。如果需要从远程仓库中删除镜像,则需要使用远程仓库提供的相应命令或操作界面。

Docker-compose 多容器冲突解决方法

问题分析

项目名称冲突:不同项目的 Docker Compose 文件未指定独立的项目名称,导致 Docker 自动生成的项目名称相同,从而在启动时将一个项目的 Redis 容器(举例)替换为另一个项目的Redis容器。
端口冲突:两个 Redis 容器尝试绑定相同的端口(如 6379),引发了端口占用问题,导致其中一个容器无法正常启动。
网络配置冲突:两个项目的 Redis 容器连接到同一个 Docker 网络,导致资源冲突和容器替换。

解决方法

为每个项目设置唯一的 Docker Compose 项目名称: 使用 -p 参数为每个项目指定独特的 Docker Compose 项目名称,确保容器和网络资源相互独立: 

  1. docker compose -f docker-compose.yml -p xxx up -d

 运行的容器内执行命令 docker exec 命令:

举例 eg:

docker exec -it ollama ollama list 

docker exec 是用来在一个已经运行的容器内执行命令的。它允许你在容器内部启动一个新的进程,通常用于调试和管理。
        it 选项:
            i(interactive): 使容器的标准输入保持打开,以便你可以与容器内的进程进行交互。
            t(tty): 为容器分配一个伪终端,这使得你可以以终端模式运行命令。
        ollama:这是正在运行的容器的名称。
        ollama list:这是在容器内执行的命令。它调用了 ollama 应用程序,查看当前ollama正在运行的大模型列表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值