Ubuntu 22.04安装Docker

news/2024/12/27 15:17:59/

陈拓 2024/10/19-2024/12/26

0. 概述

docker是容器(Container),有点像一个轻量级的虚拟机。

容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。容器具备一定的生命周期。另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。

Docker的使用步骤:

  • 首先安装Docker管理系统

安装Docker通常包括添加Docker的官方软件包源(GPG密钥),安装Docker引擎,以及启动Docker服务。这些步骤确保了你的系统可以安装和运行Docker容器。

  • 获取或构建应用程序的Docker镜像

你可以从Docker Hub或其他容器镜像仓库获取现成的镜像,或者根据自己的需求构建自定义的Docker镜像。

  • 通过docker run命令运行镜像,启动容器
  • 容器之间相互隔离

Docker通过Linux内核的命名空间(namespaces)和控制组(cgroups)技术实现隔离和资源限制。

每个容器都有自己的文件系统、网络接口和资源限制,因此它们之间是相互隔离的。这种隔离确保了应用程序的安全性和稳定性。

1. 官方网址

https://www.docker.com/

2. 我的系统信息

lsb_release -a

需要升级系统可以参考《ssh远程升级Ubuntu20.04到Ubuntu 22.04》

https://blog.csdn.net/chentuo2000/article/details/144306625?spm=1001.2014.3001.5502

3. 安装步骤

3.1 更新软件包索引

sudo apt update

3.2 安装必要的软件包,以允许apt通过HTTPS使用仓库

sudo apt install ca-certificates curl gnupg lsb-release

然后安装apt-transport-httpsca-certificates软件包,这些是用于添加Docker的官方GPG密钥和软件源的:

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

3.3 添加Docker的官方GPG密钥

安装Docker时添加官方GPG密钥的主要目的是为了确保安装的软件源是正确的,以及验证软件包的完整性和真实性。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3.4 添加Docker软件源

Docker作为一个独立的项目,并不包含在Ubuntu或其他Linux发行版的官方APT源中。

因此,为了安装最新或者特定版本的Docker,你需要添加Docker的官方软件源到你的系统中。这样做可以确保你能够访问到Docker的最新版本和更新,同时也能够确保你安装的Docker版本是经过官方签名和验证的,从而保证了软件的安全性和可靠性。通过添加Docker的官方GPG密钥,你还可以确保软件包在下载和安装过程中没有被篡改。

添加Docker的官方软件源到你的系统:

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

3.5 更新软件包索引

sudo apt-get update

3.6 安装Docker CE/EE

安装Docker CE(社区版)或Docker EE(企业版),下面安装CE版:

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

查看版本:

docker -v

  • 查看Docker服务的状态

Docker服务在每次系统重启后会自动启动。可以用下面的命令查看Docker服务的状态:

sudo systemctl status docker

q退出。

3.7 运行测试

3.7.1 配置Docker使用国内镜像源
  • 编辑/etc/docker/daemon.json文件(如果该文件不存在,可以创建它)

sudo nano /etc/docker/daemon.json

在文件中添加以下内容,以配置使用国内的Docker镜像源,例如阿里云的镜像源:

{

  "registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]

}

镜像源提供:

[https://blog.csdn.net/weixin_46028606/article/details/142663559]

  • 重启Docker服务

修改配置文件后,需要重启Docker服务以使更改生效:

sudo systemctl restart docker

sudo systemctl daemon-reload

  • 查看Docker服务的状态

sudo systemctl status docker

  • 验证配置

重启Docker服务后,你可以运行以下命令来验证是否已经注册了新的镜像源:

docker info

3.7.2 从Docker仓库拉取hello-world镜像

sudo docker pull hello-world

  • 运行hello-world镜像

sudo docker run hello-world

Hello from Docker!

  • 查看本地已有的镜像列表

docker images

3.7.3 删除本地的Docker镜像

docker rmi <镜像 ID>

或者

docker rmi <镜像名称>:<标签>

强制删除镜像:

如果某个镜像正在被使用或者有其他依赖关系,可能无法直接删除。这时可以使用 -f(或 --force)参数强制删除:

docker rmi -f <镜像 ID> 或 docker rmi -f <镜像名称>:<标签>

注意事项:

在删除镜像之前,确保该镜像没有被正在运行的容器所使用,否则可能会导致容器无法正常运行。

谨慎删除镜像,尤其是重要的生产环境镜像,以免造成数据丢失或应用程序无法正常运行。

3.8 让非root用户也能运行Docker命令

如果你想让非root用户也能运行Docker命令,你可以将该用户添加到docker组,下面将当前用户添加到docker组:

sudo usermod -aG docker $USER

重新登录以使更改生效,或者在当前终端中运行以下命令使更改立即生效:

newgrp docker

这样我们就可以不用sudo直接运行docker了:

docker container run hello-world

3.9 查看Docker中已经在运行的容器

docker ps -a

注意:Docker安装完成时是没有容器的,而当前却有两个容器存在,是因为我们在前面成功运行了两次hello-world容器,所以现在有两个容器,可以看到两个容器都是依赖的同一个hello-world镜像。

3.10 删除容器

  • 停止正在运行的容器

使用docker stop命令来停止容器。可以使用容器 ID 或者容器名称作为参数。例如使用容器 ID:

docker stop 5bc70f020c0a

docker stop命令会向容器的主进程发送一个SIGTERM信号,给容器内的进程一定时间(默认是 10 秒)来优雅地关闭。如果进程没有在规定时间内关闭,docker会发送一个SIGKILL信号来强制关闭容器。

  1. 删除已停止的容器

docker container rm 容器名或容器id,例如:

docker container rm 5bc70f020c0a

此时再使用以下命令查看已有容器时,就只有一个容器了,结果如下图所示。

docker ps -a

注意事项:

如果容器正在运行,直接使用docker rm命令删除容器会报错。所以一定要先停止容器再删除。不过,也可以使用docker rm -f命令来强制删除正在运行的容器,但这种方式比较粗暴,可能会导致容器内的数据丢失或者未保存的工作丢失等问题。

4. 容器启动策略

Docker容器在系统重启后是否需要手动启动取决于容器的启动策略。默认情况下,Docker容器在系统重启后是不会自动启动的。这是因为Docker遵循一种“非侵入式”的设计理念,它不会对宿主机的启动流程进行过多的干预。

4.1 重启选项

Docker提供了一些启动策略选项来改变这种情况。例如,可以使用--restart选项来配置容器的重启策略。这个选项有不同的值可以设置,如no(默认值)、always、on - failure和unless - stopped。

  • always

如果将容器的启动策略设置为always,那么无论容器是因为什么原因退出的,在系统重启后它都会自动启动。这对于一些需要持续运行的服务容器非常有用,比如一个Web服务器容器或者数据库容器。例如,如果你有一个运行着Nginx的容器,并且希望它在系统重启后能马上恢复服务,就可以将其启动策略设置为always。

  • on – failure

当设置为on - failure时,容器只有在因为非零退出码(表示容器运行出错)而退出的情况下,才会在系统重启后自动启动。这个策略比较适合那些可能会因为某些错误而偶尔退出的容器,这样可以让容器有机会在系统重启后重新尝试运行,修复之前的错误。

  • unless – stopped

这种策略下,容器在系统重启后会自动启动,除非它在系统重启之前是处于停止状态的。也就是说,如果容器在系统重启前是运行中的,那么它会自动重启;如果是已经停止的,就不会自动启动。

4.2 配置方法示例

  • 新创建的容器

当你使用docker run命令创建一个新容器时,可以通过添加--restart选项来设置启动策略。例如:

docker run -d --restart=always my - image:latest

上面的命令会创建一个后台运行(-d)的容器,并且这个容器的启动策略是always,使用的镜像是my - image:latest。

  • 已经创建好的容器

如果是已经创建好的容器,你可以使用docker update命令来修改容器的启动策略,例如:

docker update --restart=on - failure:3 container - name

这条命令会将名为container - name的容器的启动策略修改为on - failure,并且在容器因为非零退出码退出时,最多尝试重启3次。

要进入正在运行的Docker容器,可以使用docker exec命令。这里有几种常用的方法:

使用bash shell(假设容器内部有bash):

docker exec -it <container_id_or_name> /bin/bash

docker exec -it c43d69f6884d /bin/bash

其中:

-it是两个参数的组合

-i 选项表示在容器中打开一个交互式会话。

-t 选项表示为会话分配一个伪tty。

--rm参数是用来在容器退出之后自动删除容器的。这个参数可以在docker run命令中使

参考文档

  1. Ubuntu22.04安装Docker并搭建ros2环境
    https://blog.csdn.net/Songqiang777/article/details/132686455

http://www.ppmy.cn/news/1558554.html

相关文章

【Kafka基础】10个Kafka基础知识,面试经常会问到

前几天面试一个测试开发&#xff0c;问了Kafka的基础性知识&#xff0c;受试者没有回答出来&#xff0c;在项目中介绍有使用Kafka但是对kafka的基础知识掌握的却不牢固不全面&#xff0c;今天列出Kafka经常会问到的10个基础知识&#xff0c;供大家参考学习 一、你会在哪些场景选…

深入理解AQS之独占锁ReentrantLock源码分析

1.管程—Java同步的设计思想 管程&#xff1a;指的是管理共享变量以及对共享变量的操作过程&#xff0c;让他们支持并发。 互斥&#xff1a;同一时刻只允许一个线程访问共享资源&#xff1b; 同步&#xff1a;线程之间如何通信、协作。 MESA模型 在管程的发展史上&#xf…

Lua元方法

这一章主要记录介绍 元表 和 元方法 和使用&#xff0c;如果对 元表 不熟悉的同学可以闪现Lua元表。 元方法 是元表中的某些字段&#xff0c;定义了表在特定操作下的行为。例如&#xff0c;当表进行加法运算时&#xff0c;Lua会检查元表中的__add字段&#xff0c;并使用它定义的…

ubuntu22.04修改mysql存储路径

操作系统ubuntu22.04&#xff0c;mysql8.0。安装方式apt install安装的。 正常修改存储路径&#xff1a; 先登录进去 mysql -u root -p 然后看下当前的数据存储路径&#xff1a; show global variables like "%datadir%"; 当然看不看也不重要&#xff0c;一般默…

【Git】—— 使用git操作远程仓库(gitee)

目录 一、远程仓库常用命令 1、从远程仓库克隆项目 2、查看关联的远程仓库 3、添加关联的远程仓库 4、移除关联的远程仓库 5、将本地仓库推送到远程仓库 6、从远程仓库拉取项目 二、分支命令 1、查询分支 2、创建分支 3、切换分支 4、推送到远程分支 5、合并分支 …

Python进阶之opencv图片和视频基本读取关闭

opencv 目录 opencvpip 下载图片基本读取关闭导入前提读取显示和关闭图片属性 视频读取显示和关闭视频读取 pip 下载 在终端下载 已经修改pip源可直接下载&#xff0c;未修改为下面代码 -i 镜像网址 代码展示: pip install opencv-python3.4.18.65 pip install opencv-contrib…

2. FPGA基础了解--全局网络

前言 引入扇出的概念介绍FPGA中的全局网络为后续时序优化埋下伏笔 扇出 在FPGA设计中扇出是一个重要的概念&#xff0c;所谓的扇出就是一个控制信号所能控制的数据信号的总个数&#xff0c;比如ctrl信号的扇出就是16 reg ctrl 0; reg [15:0] out 0; always (posedge c…

第三章线性表+第四章ArrayList与顺序表

一 线性表 1.定义&#xff1a;线性表中的元素呈线性排列&#xff0c;一个元素只有一个前驱和一个后继 2.分类&#xff1a; &#xff08;1&#xff09;顺序表&#xff1a;ArrayList&#xff08;新版本&#xff09;与Vector&#xff08;旧版本&#xff09; &#xff08;2&…