docker怎么用,linux怎么安装docker

面向初学者的Docker基本命令指南。这篇详细的Docker教程覆盖了核心的Docker命令,比如,如何创建新容器、运行容器、删除容器等。另外,这篇教程也解释了如何从已有的容器构建你自己的Docker

面向初学者的 Docker 基本命令指南。

这篇详细的 Docker 教程覆盖了核心的 Docker 命令,比如,如何创建新容器、运行容器、删除容器等。另外,这篇教程也解释了如何从已有的容器构建你自己的 Docker 镜像,如何移除容器和镜像。言归正传,现在开始 Docker 的基本用法。

Docker 安装步骤

linux怎么安装docker,在 AlmaLinux、CentOS、Rocky Linux 上 安装 Docker Engine 和 Docker Compose

如何在 Ubuntu 上 安装 Docker 和 Docker Compose

什么是 Docker 镜像和 Docker 容器?

在开始 Docker 之前,我先说明一下 Docker 镜像和 Docker 容器是什么。

Docker 镜像是一个描述容器如何运行的的文件,Docker 容器是 Docker 镜像在运行或被终止时的一个阶段。

容器和主机上的其他文件是隔离的。

当我们运行一个 Docker 容器的时候,它会使用一个被隔离出来的文件系统,这个文件系统是由一个 Docker 镜像提供的。Docker 镜像包含了运行应用程序所需要的一切东西 - 所有的依赖、配置、脚本、二进制文件等等。

镜像也包含容器所需要的其他配置项,比如说环境变量、默认运行的命令,以及其他元数据。

Linux 下的 Docker 入门

下面的所有步骤都已在 Ubuntu 22.04、20.04 以及 18.04 LTS 服务器版本中测试通过。后续小节中提供的步骤对于所有 Linux 平台都是通用的。比如,在基于 RHEL 的系统中(比如 AlmaLinux)可以运行相同的命令。

我们可以从叫做 Docker hub的 Docker 官方库获得镜像,或者我们也可以制作自己的镜像。

有些人可能不清楚,Docker hub 是一个线上的中心化仓库,Docker 用户们在上面构建、测试、然后保存他们的 Docker 镜像。Docker hub 有数以万计的 Docker 镜像,而且这个数字还在每天增长。

你可以从命令行通过 ``docker search` 命令搜索任意 Docker 镜像。

比如要搜索基于 AlpineLinux 的 Docker 镜像,运行:

$ sudo docker search alpine

输出结果:

搜索基于 Ubuntu的镜像,运行:

$ sudo docker search ubuntu

你还可以搜索其他任意的应用,比如 Nginx,像下面这样:

$ sudo docker search nginx

Docker hub 有各种各样的镜像。你能在 Docker hub 上找到各种已构建好的 Docker 镜像,比如说操作系统、应用,或者多个应用的合体(比如 LAMP 栈)。

如果你找的东西不在上面,你还可以构建一个镜像,然后通过 Docker hub 向其他人开放,或者只是自己用。

从终端运行下面的命令可以下载 Ubuntu OS 的 Docker 镜像:

$ sudo docker pull ubuntu

上面的这个命令会从 Docker hub 下载最新的 Ubuntu 镜像。

输出结果:

Using default tag: latestlatest: Pulling from library/ubuntu405f018f9d1d: Pull completeDigest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7acStatus: Downloaded newer image for ubuntu:latestdocker.io/library/ubuntu:latest

你也可以用下面的命令下载指定版本的 Ubuntu 镜像:

$ sudo docker pull ubuntu:20.04

Docker 允许我们下载任何镜像,并且在那个镜像上创建容器,这些操作与主机的操作系统无关。

比如要下载 Alpine 系统的镜像,运行:

$ sudo docker pull alpine

所有已下载的 Docker 镜像都保存在 var/lib/docker

要杀死正在运行的容器,首先需要Container ID(随机字符串)。 发出docker ps -a命令时会显示此字符串。 要终止正在运行的容器,使用命令:其中CONTAINER_ID是相关容器的ID。然后,您可以使用以下命令删除容器:其中CONTAINER_ID。

要查看所有已下载的 Docker 镜像,运行:

$ sudo docker images

输出结果:

REPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest27941809078c 3 weeks ago 77.8MBubuntu 20.04 20fffa419e3a 3 weeks ago 72.8MBalpine lateste66264b98777 5 weeks ago 5.52MB

从上面可以看出来,我已经下载了三个 Docker 镜像 - Ubuntu latest、Ubuntu 20.04 和 Alpine Linux。

现在,我们看一下接下来如何从下载的镜像启动或者运行容器。

有两种方法我们可以启动一个容器 - 使用 Docker 镜像的标签TAG 或者 镜像 IDImage ID。

标签指的是一个特定的镜像快照,镜像 IDImage ID 是那个镜像对应的唯一识别码。

可以查看下面这个截图:

从上面的解脱可以看到,标签是 latest

20.04

docker怎么用

27941809078c

docker怎么用

20fffa419e3a

而 e66264b98777

下载选择好的 Docker 镜像后,运行下面的命令来启动 Docker 容器,并且通过它的标签进行连接。

$ sudo docker run -t -i ubuntu:latest /bin/bash

或者。

$ sudo docker run -it ubuntu:latest /bin/bash

这里。

-t

-i

ubuntu:latest

latest

bin/bash

启动容器后,会自动进入容器的 shell(命令行):

基于最新 Ubuntu 镜像的容器现在已经启动了。所有的新容器都会被赋予一个名字和唯一的 ID。从上面的输出可以看到,那个 Ubuntu 容器的 ID 是 2f2a5b826762

现在就可以在容器里面工作了。当你完成容器内的工作后,你可以回到主机操作系统的终端(在我这个例子中,操作系统是 Ubuntu 22.04 LTS)而不需要关掉容器(客户机)。

使用 CTRL+P

CTRL+Q

现在,你就回到了你原来的主机的终端窗口。请注意,容器还在后台运行中,我们并没有关掉它。

另一种启动容器并且连接进去的方式是通过使用镜像 ID,像下面这样:

$ sudo docker run -it 20fffa419e3a /bin/bash

这里。

20fffa419e3a

按 CTRL+P

CTRL+Q

在前面的小结中,我们启动了一个容器并且立刻连接了进去。然后当容器中的工作结束后,我们从容器中脱离了出来。

你也可以在脱离模式(不需要自动连接进去)中启动容器。

在后台运行一个容器,输入命令:

$ sudo docker run -it -d alpine:latest

输出结果:

上面输出结果的前 12 字符代表的是容器的 ID。

通过 docker ps

$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd74f2ceb5f3a alpine:latest "/bin/sh" 3 seconds ago Up 2 seconds zen_pascal

从上面个的输出结果中可以看到,我们创建了一个 Alpine 容器,但是还没有连接进去。

如果你想连接进去,很简单,运行:

$ sudo docker attach d74f2ceb5f3a

查看运行中的容器,运行下面的命令:

$ sudo docker ps

输出结果:

CONTAINER ID IMAGE COMMAND CREATEDSTATUSPORTS NAMESf7e04eed577e 20fffa419e3a"/bin/bash" 6 minutes agoUp 6 minutesbrave_mclean2f2a5b826762 ubuntu:latest "/bin/bash" 18 minutes ago Up 18 minutes hungry_leavitt

这里。

f7e04eed577e

2f2a5b826762

brave_mclean

2f2a5b826762

hungry_leavitt

当一个新容器被创建后,会赋给它一个唯一的 ID 和名字,这样我们就能通过它的 ID 和名字来连接它。

注意:请注意容器 ID 和 Docker 镜像 ID 是不同的。

列出所有可用的(运行或者停止)容器,运行:

$ sudo docker ps -a

首先,通过 docker ps

$ sudo docker ps

然后,运行 docker attach

$ sudo docker attach

比如像下面这样,我要连接到 ID 为 f7e04eed577e

$ sudo docker attach f7e04eed577e

你也可以通过使用它的名字连接到一个容器。

$ sudo docker attach brave_mclean

现在你就登录到这个容器了。

想要从容器脱离,只要按 CTRL+P

CTRL+Q

你可以使用容器的名字或 ID 来启动,重启,暂停或者终止一个 Docker 容器。

首先,通过 docker ps -a

现在,通过使用 docker start

$ sudo docker start modest_cray

$ sudo docker start 10615254bb45

用空格隔开,就可以启动多个容器,像下面这样:

$ sudo docker start 24b5ee8c3d3a 56faac6d20ad d74f2ceb5f3a

优雅的重启一个运行中的容器,运行:

$ sudo docker start 10615254bb45

暂停一个运行中的容器:

$ sudo docker pause 10615254bb45

把暂停的容器恢复过来:

$ sudo docker unpause 10615254bb45

直到其它容器都停止前,阻塞一个容器:

1、先登录私服地址,然后从上面pull下来镜像 命令:docker pull xiaoxiaoyuyu123/aids:jeecg-boot-system 2、上传服务器yml文件,使用docker-compose来启动镜像 命令:docker-compose -f ./docker-compose-server.yml up dock。

$ sudo docker wait 10615254bb45

我们可以很容易地通过使用它的名字或 ID 来终止一个容器。如果你已经在容器的 shell 里了,只需要运行下面的命令就可以非常简单的终止:

# exit

你也可以使用下面的命令从 Docker 的主机系统中终止容器:

$ sudo docker stop 10615254bb45

用空格隔开,你可以退出多个容器,像下面这样。

$ sudo docker stop 35b5ee8c3d3a 10615254bb45

在退出容器之后,通过列出所有容器的命令来确保它确实被终止了:

$ sudo docker ps

docker stop

通过给一个运行中的容器发送 SIGKILL

$ sudo docker kill 10615254bb45

也许你想测试一个容器,然后当你完成在容器中的工作就把它删掉。如果是这样,通过使用 --rm

$ sudo docker run -it --rm debian:latest

当你从容器中退出,它会自动被删掉。

从上面的结果可以看到,我先创建了一个新的 Debian 容器。当我退出这个容器的时候,它就被自动删掉了。docker ps -a

如果你再看一下之前命令的输出结果,当你启动一个容器的时候,每个容器都被赋予了一个随机的名字。如果你不命名你的容器,Docker 会自动替你给他们命名。

现在看一下下面的例子:

$ sudo docker run -it -d alpine:latest2af79e97a825c91bf374b4862b9e7c22fc22acd1598005e8bea3439805ec335d

$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES80b53b7e661d alpine:latest "/bin/sh" 3 seconds ago Up 2 seconds bold_margulis2af79e97a825 alpine:latest "/bin/sh" 6 seconds ago Up 5 seconds recursing_taussig

从上面的结果可以看到,尽管我用同一个 Docker 镜像创建了两个容器,它们获得了不同的 ID 和名字。

如果你想给容器赋一个不变的名字,使用 --name

$ sudo docker run -it -d --name ostechnix_alpine alpine:latest

上面的命令会在脱离模式中创建一个叫做 ostechnix_alpine

我们看一下当前运行的容器列表:

$ sudo docker ps

输出结果:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES397111fac537 alpine:latest "/bin/sh" 2 seconds ago Up 2 seconds ostechnix_alpine80b53b7e661d alpine:latest "/bin/sh" 7 minutes ago Up 7 minutes bold_margulis2af79e97a825 alpine:latest "/bin/sh" 7 minutes ago Up 7 minutes recursing_taussig

注意到上面输出结果中的第一个容器的名字了吗?对了,我们给这个容器分配了一个自定义的名字(也就是 ostechnix_alpine

Docker 不仅仅是下载和使用已存在的容器。你也可以创建自己的自定义 Docker 镜像。

现在我们开始一个 Ubuntu 容器:

$ sudo docker run -it ubuntu:latest

现在,你会进入到容器的 shell。

然后,在容器中,你可以安装任何的软件或者做你想做的事情。

比如,我们在容器中安装 Apache Web 服务器。

apt install apache2

相似地,在容器中,可以根据自己的需要安装和测试软件。

完成以后,从容器脱离(不要退出)回到主机系统的 shell。不要终止或者关闭容器。使用 CTRL+P

CTRL+Q

在你的 Docker 主机的终端,运行下面的命令来找到容器 ID:

docker怎么用

$ sudo docker ps

最后,创建一个当前运行中的容器的 Docker 镜像,使用命令:

$ sudo docker commit 377e6d77ebb5 ostechnix/ubuntu_apache

输出结果:

•018.Docker视频教程:Docker使用初体验-Docker镜像启动运行 •019.Docker视频教程:Docker使用初体验-访问容器中的Tomcat服务 •020.Docker视频教程:Docker使用初体验-Docker的网络访问机制 •021.Dock。

sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1

这里。

377e6d77ebb5

ostechnix

ubuntu_apache

ostechnix

现在我们查看一下新的 Docker 镜像是否被创建了,使用下面的命令:

$ sudo docker images

输出结果:

ostechnix/ubuntu_apache

从上面给的结果中可以看到,从运行中的容器创建的新 Docker 镜像已经在我们的 Docker 主机系统中了。

现在你就可以从这个新的 Docker 镜像创建行容器了,用之前的命令:

$ sudo docker run -it ostechnix/ubuntu_apache

当你在 Docker 容器中完成所有开发后,如果你不需要它们了,你可以删掉它们。

为此,首先我们需要终止运行中的容器。

用这个命令来看一下运行中的容器:

$ sudo docker ps

输出结果:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES377e6d77ebb5 ubuntu:latest "bash"7 minutes ago Up 7 minutes elegant_beaver

通过使用它的 ID 来终止运行中的容器:

$ sudo docker stop 377e6d77ebb5

现在,使用这个命令删除容器:

$ sudo docker rm 377e6d77ebb5

同样,如果不再需要所有的容器,关闭并删除它们。

一个一个的删除多个容器会是一项繁琐的工作。所以,我们可以把所有停止的容器一次性删掉,运行:

$ sudo docker container prune

敲 Y

WARNING! This will remove all stopped containers.Are you sure you want to continue? [y/N] yDeleted Containers:397111fac5374921b974721ee646b2d5fbae61ca9c6e8b90fbf47952f382a46b80b53b7e661d33696b65c78267fc3f067b6100799c925910db4721963e3fae0a[...]Total reclaimed space: 176B

这个命令只有在最新版中有效。

使用下面的命令来验证是否所有容器都被删除了:

$ sudo docker ps -a

如果看不到任何结果,说明所有容器被删掉了。

记住,在删除所有镜像之前,首先要删掉所有从那些镜像创建的容器。

当你删掉容器后,你可以删掉你不需要的 Docker 镜像。

列出所有下载的 Docker 镜像:

$ sudo docker images

输出结果:

REPOSITORYTAG IMAGE ID CREATEDSIZEostechnix/ubuntu_apache latestbc5e5f95ca59 14 minutes ago 229MBdebianlatestd2780094a226 11 days ago124MBubuntulatest27941809078c 3 weeks ago77.8MBubuntu20.04 20fffa419e3a 3 weeks ago72.8MBalpinelateste66264b98777 5 weeks ago5.52MB

从上面可以看到,在我们的主机上有 5 个 Docker 镜像。

通过使用镜像 ID 来删掉它们:

$ sudo docker rmi ce5aa74a48f1

输出结果:

Untagged: ostechnix/ubuntu_apache:latestDeleted: sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1Deleted: sha256:a8e4797160a2b2d33d8bd1bd67e008260c022b3a53fbcc198b2b74d9eae5961d

同样,删除其他所有 Docker 镜像。

删掉所有未运行的容器、所有镜像、构建的缓存、所有网络,运行:

$ sudo docker system prune -a

使用这个命令的时候要注意,它会删掉所有没有使用的容器、网络、镜像(包括 挂起dangling和未使用unreferenced 的)

贼好用啊,还有提示。docker restart redis 重启redis容器后,发现之前的数据都丢失了,因为保存在内存中。所以我们需要配置持久化。 因为之前已经将容器配置文件挂载到本机目录下,所以直接修改本机redis.conf即可。重启验证。

默认情况下,即使当前没有容器在使用磁盘卷volumes,为防止重要数据被删除,磁盘卷也不会被删除。

如果你想删掉所有东西,包括分配的卷,使用 --volumes

$ sudo docker system prune -a --volumes

Docker 问题汇总

如果 Docker 镜像正在被运行或停止的容器使用,Docker 不会允许你删除这些镜像。

比如,当我尝试从一个以前的 Ubuntu 服务器上删除 ID 为 b72889fa879c

Error response from daemon: conflict: unable to delete b72889fa879c (must be forced) - image is being used by stopped container dde4dd285377

这是因为你想删除的 Docker 镜像正在被另一个容器使用。

所以,我们先查看一下运行中的容器,使用命令:

$ sudo docker ps

输出结果:

噢,没有运行中的容器。

我们在看一下所有的容器(运行和停止的),用这个命令:

$ sudo docker ps -a

输出结果:

可以看到,仍然有停止的容器在使用其中一个 Docker 镜像。所以,我们先把所有容器删掉。

比如:

$ sudo docker rm 12e892156219

类似地,向上面那样,用对应容器的 ID 将它们都删除。

当把所有容器删掉后,移除掉 Docker 镜像。

比如:

$ sudo docker rmi b72889fa879c

就这么简单。现在确认是否还有其他 Docker 镜像在主机上,使用命令:

$ sudo docker images

你现在应该不再有任何 docker 镜像了。

总结

在这篇全面的 Docker 入门教程中,我们解释了 Docker 的基本操作,比如创建、运行、搜索、删除容器,还有从 Docker 镜像构建你自己的容器。同时,我们也解释了如何在不需要 Docker 容器和镜像的时候删除它们。

希望你现在对 Docker 的使用有一个基本的了解。

相关资料

Docker 官网

Docker 文档

via:

上一篇 2023年01月14 10:17
下一篇 2023年02月04 11:53

相关推荐

  • 无线网密码怎么改密码,自己怎么更改无线网密码

    上次跟大家说了怎么修改wifi的名称和密码,这次就来跟大家聊一下,怎么修改路由器的密码,也就是192.168.1.1的密码,我会以tenda路由器为例子。1.路由器初始密码1、首先打开电脑浏览器,然后

    2023年02月01 245
  • dat文件怎么打开,dat文件手机怎么打开

    CASS10.1支持的AutoCAD平台是?答:正版支持AutoCAD2010-2017,2019-2020包含32位和64位。破解版一般只支持CAD2016.如何在安装CASS后,单独运行AutoC

    2023年02月04 299
  • 怎么投诉骚扰电话,不停变号的骚扰电话怎么举报

    "新开的XX楼盘,有兴趣了解下吗?""小额贷款办理……""这里是XX培训,您的孩子有兴趣学……""这块的商铺环境很好……"猝不及防的电话,让人不堪其扰。故作亲昵的语气,套路太深。相信大家或多或少和小编

    2023年01月20 264
  • 猎聘网怎么样,猎聘怎么样,真实吗

    猎聘仍以默认选择同意隐私政策的非明示方式征求用户同意猎聘怎么样,真实吗,公开资料显示,猎聘网2011年上线、2018年上市,是中国最大的中高端人才线上招聘平台。不同于早先成立的智联招聘、前程无忧以及5

    2023年01月11 224
  • 怎么查看显卡温度,任务管理器不显示显卡温度

    IT之家8月18日消息根据外媒OC3D的报道,任务管理器不显示显卡温度,用户看到自己的RX5700系列显卡温度过高,往往会很担心。近日,AMD发布了其Radeon5700系列显卡的社区更新,证实了RX

    2023年02月06 275
  • 联想平板怎么样,华为和联想平板哪个好

    联想小新PadPro2021测评来了!作为今年首款搭载骁龙870Soc的安卓平板,托尼其实在这台平板刚发布的时候就对它产生了兴趣,只不过由于各种原因,导致时隔快一个月我才拿到平板。虽然是晚了一点,期间

    2023年02月06 294
  • 微信怎么转发聊天记录

    实操步骤如下:第一步:打开手机并在桌面找到微信图标,点击进入。第二步:进入app主页后,选择页面内的任意一个聊天链接并打开。第三步:进入聊天页面后,选择要转发的记录并长按,打开多选命令界面。第四步:点

    2023年01月18 299
  • 路由器怎么重置,路由器重置后怎么恢复上网

    今天教大家如何用一部手机来修改我们家里面路由器WiFi的密码,很多人以为修改路由器WiFi密码是需要用电脑来操作的。其实用我们平常使用的手机就可以操作,而且呢步骤非常的简单,如果说你还不了解的话,可以

    2023年01月16 250
  • 网页是怎么制作的,如果制作一个网页出来用

    网页如何制作?看着各种各样的网页源代码是不是很神秘。其实网页制作对程序开发来说是最简单的。今天就来介绍下网页制作需要用到哪些技术,如果制作一个网页出来用,如何制作。,一、网页制作需要用到技术网页需要用

    2023年02月04 280
  • 华为平板怎么截图,华为平板怎么截长图啊

    随着社会的发展、科技的进步以及无纸化办公的推行,智慧化办公也逐步进入到我们的工作中。电子化办公在大家的生活工作中占得比例越来越高,一款可以提升办公效率的电子产品成为了很多人的需求。华为此前发布的Mat

    2023年02月05 227
  • wps怎么删除分页符,wps表格分页符怎么删除不了

    在我们平时使用WPSExcel文件时,经常会遇到分页符的情况。原本在一个表格中的数据硬生生被分为两个表格分别打印,如果我们想要把整个表格统一打印的话,wps表格分页符怎么删除不了,就需要删除分页符。如

    2023年01月22 247
  • 怎么找到隐藏文件夹,隐藏的文件夹找不到了怎么办

    隐藏的文件夹找不到了怎么办,可能每个人的电脑都会有隐藏文件保存在里面,那么如何把它们显示出来呢?方法很简单,也很容易就能学会,下面来看看详细的操作步骤吧。更多系统教程尽在小白系统重装官网1、打开“我的

    2023年02月05 211
  • abc文件怎么打开

    我是艾西今天跟大家聊聊Linux系统怎么查看端口有没有被占用命令首先,当你无法运行以下命令时候,请检查是否已经安装相应软件,您可以用以下命令安装:yuminstallnet-toolsapt-geti

    2023年01月21 290
关注微信