Ubuntu20.04中Docker安装与配置

news2024/11/15 15:43:12

一、安装

  • 1、卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
  • 2、更新apt包索引
sudo apt-get update

显示“正在读取软件包列表… 完成”

  • 3、安装以下包以使apt可以通过HTTPS使用存储库(repository)
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

显示“done.”

  • 4、添加Docker官方的GPG密钥
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

显示“OK”

  • 5、设置stable存储库
sudo add-apt-repository "deb [arch=amd64] Index of linux/ubuntu/ $(lsb_release -cs) stable"

如果没有报错就正常进行下一步。显示“正在读取软件包列表… 完成”

这里我报错

Command 'lsb_release' not found, but can be installed with:
sudo apt install lsb-release
E: 文件 list 第 73 行的记录格式有误 /etc/apt/sources.list (URI parse)
E: 无法读取源列表。

解决方法就是

(1)先删除刚刚加进去的语句

sudo gedit /etc/apt/sources.list

删掉73以及之后的句子(也就是刚刚我们加进去的)

(2)改为重新运行下列语句(根据版本选择自己的句子即可)

# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu (Ubuntu内核名称) stable"

# Ubuntu16.04对应xenial
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"

# Ubuntu18.04对应bionic
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

# Ubuntu20.04对应focal
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

参考链接:Ubuntu安装docker报错:Command ‘lsb_release‘ not found

  • 6、更新一下apt包索引
sudo apt-get update

显示“正在读取软件包列表… 完成”

  • 7、安装最新版本的Docker CE
sudo apt-get install -y docker-ce

显示“正在处理用于 man-db (2.9.1-1) 的触发器 …
正在处理用于 systemd (245.4-4ubuntu3.17) 的触发器 …”

二、验证

  • 查看docker服务是否启动
systemctl status docker

或者

service docker status

在这里插入图片描述

  • 【可跳过】若未启动,则启动docker服务
systemctl start docker
# 或者
service docker start

三、配置镜像加速器

默认的情况下docker会从docker hub中查找或下载镜像,在国内会比较慢。可以使用阿里的镜像加速器来提高速度。

  • 1、在阿里云注册账号–右上角进入控制台。

https://www.aliyun.com/

  • 2、容器镜像服务

打开左上角菜单栏,搜索“容器镜像”,选择“容器镜像服务”

在这里插入图片描述

  • 3、加速

打开左侧"镜像工具",选择"镜像加速器",在Ubuntu中依次运行最下方代码

(容器镜像服务)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

如果写错了可以通过以下代码来修改或者查看

sudo gedit /etc/docker/daemon.json

四、镜像使用

1、镜像和容器的区别

img

  • 镜像与容器为一对多的关系,通过一个镜像确实可以启动三个容器,但是这个三个容器的名字不能一样。

  • 镜像是别人打包好在镜像仓库的,我们去下载就好了。但是我们下载镜像的时候要带上版本号。如ubuntu:20.04和ubuntu:18.04是两个不同的镜像。

  • 镜像的基本属性包括REPOSITORY(仓库名)、TAG、IMAGE ID、CREATED(创建时间)、SIZE等。例如【ubuntu:20.04】的REPOSITORY = ubuntu,TAG = 20.04。

参考链接:

docker容器和镜像的区别

Docker容器与镜像的区别

2、Exit状态、运行、未运行

  • 创建镜像时顺便创建的容器:exit后成为:exited状态=未运行状态

  • start之后的容器:运行状态。经过exit后,未成为exited状态,需要再经过stop,才可以成为未运行状态。

3、具体使用

简单了解了镜像和容器的区别,就可以开始创建镜像/容器了。

(1)创建镜像和容器

【在这步骤中可以输入“exit”来直接退出容器】

a. run命令

【ubuntu20.04:8ba1b8fe358d,不命名】

在ubuntu:20.04镜像下创建一个容器。如果没有发现镜像的话,会自动进行下载(Pull)。

sudo docker run -it ubuntu:20.04 /bin/bash

/bin/bash 参数告诉docker在容器中启动一个bash shell,即pull完会直接进入容器中,其中8ba1b8fe358d就是容器的编号。

在这里插入图片描述

【ubuntu20.04:892fed6bf971,名为myx_test】

–name可以实现为容器取名。

事实上,在ubuntu20的系统中,ubuntu:latest和ubuntu:20.04是同一个镜像,但由于TAG不同,会再次Pull,此时创建了ubuntu:latest镜像下下一个新的名为“myx_test”的容器,容器ID为892fed6bf971。

sudo docker run -it --name=myx_test ubuntu:latest

【ubuntu18.04:f36e76fb8d9a,名为myx_test2】

此时,如果改为ubuntu18.04,就要重新进行pull。此时创建了一个ID为f36e76fb8d9a的容器

sudo docker run -it --name=myx_test2 ubuntu:18.04

在这里插入图片描述

b. create命令

也可以用create命令新建镜像,但create完成后不会自动创建容器。由于此时已经存在latest,所以不会pull

sudo docker create -it ubuntu:latest

在这里插入图片描述

(2)查看镜像和容器

  • 查看镜像
sudo docker images

在这里插入图片描述

根据之前的步骤,分别创建过ubuntu20.04、ubuntu:latest、ubuntu18.04三种镜像。

同时如之前所述,对于同版本的ubuntu镜像,其ID是相同的

  • 查看容器
# 查看Exited状态的容器
sudo docker ps -a|grep Exited|awk '{print $1}'

在这里插入图片描述

从下至上依次是之前创建的三个容器

(3)容器进入退出和启动停止

  • 若当前已经位于容器中:

    • 退出时想继续运行容器:依次按【ctrl+p】,【ctrl+q】

    • 退出时想停止运行容器:按【ctrl+d】或输入exit

  • 若当前不在容器中:

# 启动,start后跟着id号,只要能唯一标志,可以不完整输入
# 也可以是之前定义的名称
sudo docker start id   # sudo docker start 89
sudo docker start name  # sudo docker start myx_test
# 停止
sudo docker stop id
sudo docker start name

其中,启动并不会进入bash界面,而是让容器运行,不再属于Exited状态。

在这里插入图片描述

  • 容器已经启动,想要进入容器bash界面:

需要先通过sudo docker start启动容器,才可以用以下代码进入

# 同样是使用id和name都可以,之后不再复述
sudo docker exec -i -t myx_test /bin/bash
sudo docker exec -i -t 89 /bin/bash

在这里插入图片描述

这里要注意的是,经过start的容器,仅仅“exit”无法让其处于Exited状态,需要再运行stop命令。

在这里插入图片描述

(4)删除镜像和容器

  • 删除镜像

删除镜像ubuntu:latest

# 短id
sudo docker rmi ba6a
# 完整id
sudo docker rmi ba6acccedd29
# 镜像名【REPOSITORY:TAG】
sudo docker rmi ubuntu:latest

(2)删除容器

创建一个新的容器,id是d56bf84b9bbe,删除

# 删除某个具体容器
sudo docker rm id
# 删除Exited状态/未运行的容器,三种命令均可
sudo docker rm docker ps -a|grep Exited|awk '{print $1}'
sudo docker rm $(sudo docker ps -qf status=exited)
sudo docker rm $(sudo docker ps -a -q)
# 删除孤立容器
sudo docker container prune 

在这里插入图片描述

参考链接

docker容器安装与使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java多线程(二三)并发编程:Callable、Future和FutureTask

一、Callable 与 Runnable 先说一下java.lang.Runnable吧&#xff0c;它是一个接口&#xff0c;在它里面只声明了一个run()方法&#xff1a; public interface Runnable {public abstract void run(); }由于run()方法返回值为void类型&#xff0c;所以在执行完任务之后无法返…

关于React Hook(18)

useState&#xff08;&#xff09;&#xff1a;&#x1f449;详情 &#xff08;必须“有条件地调用”&#xff1b;注意避免冗余状态的产生&#xff09; 关于useState的两种使用方式的区别&#xff1a;&#x1f449;详情 关于batch机制&#xff1a;有条件地调用一些状态的set方…

L3-021 神坛

在古老的迈瑞城&#xff0c;巍然屹立着 n 块神石。长老们商议&#xff0c;选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比&#xff0c;因此神坛的面积越小越好。特殊地&#xff0c;如果有两块神石坐标相同&#xff0c;或者三块神石共线&#xff0c;神坛的面积…

STM32F103R8T6 SPWM实现正弦波输出

前言 PWM合成正弦波&#xff0c;原理什么的不详细说了&#xff0c;概括一下就是 PWM有效面积的积分 正弦波的有效面积。PWM的频率越快&#xff0c;细分的越多&#xff0c;锯齿也就越不明显。 做法是&#xff1a;首先利用正弦波取点软件&#xff0c;取点1000个&#xff0c;生…

计算机网络:OSPF协议和链路状态算法

OSPF协议 开放最短路经优先OSPF协议是基于最短路径算法SPF,其主要特征就是使用分布式的链路状态协议OSPF协议的特点&#xff1a; 1.使用泛洪法向自治系统中的所有路由器发送信息&#xff0c;即路由器通过输出端口向所有相邻的路由器发送信息&#xff0c;而每一个相邻的路由器又…

阶段二12_面向对象高级_继承3

知识点内容&#xff1a; 抽象类 模板设计模式 final关键字 一.抽象类 (1)抽象类概述 抽象方法&#xff1a;将共性的行为&#xff08;方法&#xff09;抽取到父类之后&#xff0c;发现该方法的实现逻辑 无法在父类中给出具体明确&#xff0c;该方法就可以定义为抽象方法。 抽…

ASP.NET CORE API 使用Orleans

快速使用Monimal API 快速集成Orleans 微软官网地址如下&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储&#xff0c;我缓存…

JVM调优面试题——参数命令专题

文章目录1、JVM参数有哪些&#xff1f;1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些&#xff1f;2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…

【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体遇到的问题描述解决方式Font Asset Creator 面板扩展中文字体文本遇到…

深度学习零基础学习之路——第五章 个人数据集的制作

Python深度学习入门 第一章 Python深度学习入门之环境软件配置 第二章 Python深度学习入门之数据处理Dataset的使用 第三章 数据可视化TensorBoard和TochVision的使用 第四章 UNet-Family中Unet、Unet和Unet3的简介 第五章 个人数据集的制作 深度学习数据集的制作Python深度学…

MySQL 行锁

行锁 : 对表中行记录的锁 MySQL 的行锁 : 由各个引擎自己实现MyISAM 不支持行锁InnoDB 支持行锁 两阶段锁协议 : 行锁是在需要时才加上&#xff0c;要等到事务结束才释放 例子 : id 是表 t 的主键的 B 的 update 会阻塞&#xff0c;直到 A 执行 commit 后&#xff0c;B 才能…

Spring Cloud/Spring Cloud Alibaba核心知识总结

Spring Cloud核心知识总结 springCloud是一个服务治理平台&#xff0c;若干个框架的集合&#xff0c;提供了全套的分布式系统的解决方案。包含&#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。 SpringC…

Python机器学习库scikit-learn在Anaconda中的配置

本文介绍在Anaconda环境中&#xff0c;安装Python语言scikit-learn模块的方法。 scikit-learn库&#xff08;简称sklearn&#xff09;是一个基于Python语言的机器学习库&#xff0c;提供了各种机器学习算法和相关工具&#xff0c;包括分类、回归、聚类、降维、模型选择和预处理…

TiDB Server

文章目录TiDB Server架构TiDB Server作用TiDB Server的进程SQL语句的解析和编译SQL读写相关模块在线DDL相关模块GC机制与相关模块TiDB Server的缓存热点小表缓存TiDB Server架构 Protocol Layer、Parse、Compile负责sql语句的解析编译和优化&#xff0c;然后生成sql语句执行计划…

易优cms attribute 栏目属性列表

attribute 栏目属性列表 attribute 栏目属性列表 [基础用法] 标签&#xff1a;attribute 描述&#xff1a;获取栏目的属性列表&#xff0c;或者单独获取某个属性值。 用法&#xff1a; {eyou:attribute typeauto} {$attr.name}&#xff1a;{$attr.value} {/eyou:attri…

iperf3主页官方信息

​ iPerf 是一款支持TCP,UDP和SCTP的高速协议测试工具 网络极限性能测试网络中立性检测 主页 下载iPerf安装包 公共的iPerf3服务器 iPerf用户手册 iPerf论坛—法语 联系我们 iPerf / iPerf3简介 iPerf3是一款用于对IP网络的最大带宽进行主动测试的工具。提供对和时间&…

地质灾害防治单位资质

地质灾害危险性评估&#xff0c;是指在地质灾害易发区进行工程建设或者编制地质灾害易发区内的国土空间规划时&#xff0c;对建设工程或者规划区遭受山体崩塌、滑坡、泥石流、地面塌陷、地裂缝、地面沉降等地质灾害的可能性和建设工程引发地质灾害的可能性作出评估&#xff0c;…

VUE3入门基础:input元素的type属性值说明

说明 在Vue 3中&#xff0c;<input>元素的type属性可以设置不同的类型&#xff0c;以适应不同的输入需求。 常见的type属性取值如下&#xff1a; text&#xff1a;默认值&#xff0c;用于输入文本。password&#xff1a;用于输入密码&#xff0c;输入内容会被隐藏。em…

System has not been booted with systemd as init system (PID 1). Can‘t operate.

今天想查看防火墙的状态&#xff0c;但是对防火墙的操作还不熟悉&#xff0c;网上搜到的命令是这样的systemctl status firewalld 结果输入之后出现了这样的错误&#xff1a; System has not been booted with systemd as init system (PID 1). Can’t operate. 然后接着去网上…

老马闲评数字化「4」做数字化会不会被供应商拿捏住

原文作者&#xff1a;行云创新CEO 马洪喜 导语 开年过后业务特别的繁忙&#xff0c;出差也比较多&#xff0c;所以有段时间没更新了&#xff0c;对不住大家&#xff01; 上一集&#xff08;您可以查看“行云创新”主页阅读原文&#xff09;咱们聊了数字化转型的“想转、急转、…