容器技术

容器技术

1.1 概念

1.1.1 什么是云原生

云原生是一种构建和运行云端应用程序的方法论,它将应用程序设计和开发与云计算的特性和优势相结合。用通俗易懂的语言来解释,可以用以下例子来说明云原生的概念:

假设你要开一家面包店。在传统的方式下,你需要自己从头开始建造一个面包店,购买烤箱、面粉、糖等原材料,并且雇佣烘焙师傅和服务员来生产面包和销售产品。这个过程需要自己投入大量的时间和精力。

而云原生的方式就可以将你的面包店基于云计算的虚拟化环境来建立。你不需要购买实体设备,只需租用云服务提供商的虚拟机、存储和网络资源。你可以将面包店的应用程序作为一个云原生应用来设计和开发,利用云计算的优势,比如弹性伸缩、高可用性和灵活性。你可以根据需求动态调整资源使用,不再需要关心硬件设备的细节,并且可以迅速部署和管理应用程序。

此外,云原生还提倡使用容器技术(如Docker) 来打包和分发应用程序,使得应用程序的运行环境更加独立和可移植。同时,云原生还倡导采用微服务架构,将应用程序分解成一系列小型、独立的服务组件,每个组件负责一个特定的功能。这样可以实现模块化开发,方便应对复杂的业务需求和快速迭代。

综上所述,云原生是一种以云计算为基础,利用虚拟化、容器化和微服务架构的方式,更高效、更灵活地构建和运行应用程序(上层应用)。它可以让你专注于应用开发和业务创新,而不需要关注底层基础设施的细节。

1.1.2 什么是容器

容器技术是一种轻量级的虚拟化技术,它允许将应用程序和其依赖项打包到一个独立的、可移植的运行环境中,称为容器。这些容器可以在任何支持容器化技术的主机上运行,而不受底层操作系统和硬件的影响。

传统的虚拟化技术通常涉及在物理服务器上运行多个虚拟机,每个虚拟机都包含一个完整的操作系统和应用程序栈。这样的虚拟机运行起来更为重量级,占用更多的系统资源。相比之下,容器技术专注于应用程序和所需的运行时依赖项,而不需要额外的操作系统实例。

容器化应用程序在容器内部运行,并与底层的操作系统内核共享资源。容器可以拥有自己的文件系统、进程空间和网络接口,但它们与宿主机共享操作系统的内核。这种共享资源的方式让容器变得更加轻量级、快速启动和高效运行。

容器技术提供了许多优势,包括:

  • 简化部署:容器提供了一个一致的运行环境,可以轻松地在不同的主机或云平台上部署应用程序。
  • 快速启动:容器可以在几秒钟内启动,相比之下,传统的虚拟机需要更长的启动时间。
  • 可移植性:容器可以在不同的环境中移植和运行,无需重写代码或重新配置应用程序。
  • 资源隔离:容器提供了资源隔离,使得不同的容器可以在同一台主机上运行,而互不干扰。
  • 弹性伸缩:容器技术可以根据需求自动扩展或收缩容器实例,以适应负载的变化。

一些流行的容器化技术包括Docker 和 Kubernetes(K8s),Podman、Buildah。Docker 提供了一种简单的方法来创建、打包和分享容器镜像,而Kubernetes 是一个容器编排平台,用于自动化和管理大规模的容器部署。这些技术的出现,使得容器化应用程序的开发、部署和管理变得更加简单和高效。

K3s怎么来的呢?认为k8s太过重量级。在某些场景下不需要用到k8s这么强大的功能,边缘计算等等场景,它们就想砍掉一半,原10个字母就剩了5个字母,带上ks,中间就是3个字母。

1.2 容器和虚拟化的区别

1.2

资源利用率:虚拟化技术通过在物理服务器上创建多个虚拟机实例,每个实例都有自己的操作系统和应用程序栈。这导致了较高的资源消耗,因为每个虚拟机都需要独立的操作系统和相关基础设施。相比之下,容器技术非常轻量级,容器共享主机的操作系统内核和基础设施,因此具有更高的资源利用率。

启动速度:由于容器共享操作系统内核和基础设施,容器的启动时间通常比虚拟机更快。容器可以在几秒钟之内启动,而虚拟机可能需要几分钟才能启动。

隔离性:虚拟化技术提供了更强的隔离性,每个虚拟机都有自己独立的操作系统和内核,因此虚拟机之间的资源和环境相对独立。容器技术提供了一定程度的隔离,但容器之间共享操作系统内核和资源,因此容器之间的隔离性较虚拟机较弱。

灵活性和可移植性:容器技术非常灵活和可移植,容器可以在不同的环境中移植和运行,无需进行重写或重新配置。虚拟化技术在不同平台之间的迁移相对较复杂,需要进行更多的配置和调整。

管理和部署:容器技术提供了一套工具和平台(如Docker 和 Kubernetes),使得容器的管理和部署更加简单、自动化和可扩展。传统的虚拟化技术需要使用虚拟化管理器来管理和监控虚拟机。

总体而言,虚拟化技术更适用于创建完全隔离的、具有独立操作系统的虚拟环境。容器技术则更适合运行轻量级、可移植、可扩展和高密度的应用程序,享受较高的资源利用率和启动效率。

1.2

1.2

1.3 安装Docker

Docker 分为两个版本:

  • EE(企业版):需要付费。
  • CE(开源社区版):免费使用。

1.3.1 安装基础软件

[root@zengxi ~]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@zengxi ~]# cd /etc/yum.repos.d/
[root@zengxi yum.repos.d]# mkdir bak
[root@zengxi yum.repos.d]# mv CentOS-Stream-* bak/
[root@zengxi yum.repos.d]# ls
bak
[root@zengxi yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache
[root@docker yum.repos.d]# yum -y install  vim net-tools bash-completion  yum-utils

下载docker-ce repo文件

阿里巴巴开源镜像站:https://developer.aliyun.com/mirror/

1.3.1

获取在线Docker-CE.repo

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

1.3.1

[root@Hlanan yum.repos.d]# ll
total 12
drwxr-xr-x. 2 root root 4096 Oct  8 11:31 bak
-rw-r--r--. 1 root root 2495 Aug  4  2022 CentOS-Base.repo
-rw-r--r--. 1 root root 2081 Oct  8 15:04 docker-ce.repo
[root@Hlanan yum.repos.d]#

查看下docker-ce.repo仓库中有哪些docker版本可供选择安装

[root@Hlanan yum.repos.d]# yum list docker-ce --showduplicate |sort -r
Last metadata expiration check: 0:11:49 ago on Tue 08 Oct 2024 03:05:24 PM CST.
docker-ce.x86_64                3:26.1.3-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.2-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.1-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.0-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.0.2-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.0.1-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.0.0-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.5-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.4-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.3-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.2-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.1-1.el8                  docker-ce-stable
docker-ce.x86_64                3:25.0.0-1.el8                  docker-ce-stable

安装docker-ce:yum -y install docker-ce

如果如下报错,则


[root@Hlanan ~]# yum -y install docker-ce
Last metadata expiration check: 0:13:40 ago on Tue 08 Oct 2024 03:05:24 PM CST.
Error:
 Problem: package docker-ce-3:26.1.3-1.el8.x86_64 requires containerd.io >= 1.6.24, but none of the providers can be installed
  - package containerd.io-1.6.24-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.24-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.25-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.25-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.26-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.26-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.27-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.27-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.28-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.28-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.28-3.2.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.28-3.2.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.31-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.31-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.32-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - package containerd.io-1.6.32-3.1.el8.x86_64 obsoletes runc provided by runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64
  - problem with installed package buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64
  - package buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package buildah-1.22.3-2.module_el8.5.0+911+f19012f9.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
  - package containerd.io-1.6.24-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.24-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.25-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.25-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.26-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.26-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.27-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.27-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.28-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.28-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.28-3.2.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.28-3.2.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.31-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.31-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.32-3.1.el8.x86_64 conflicts with runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - package containerd.io-1.6.32-3.1.el8.x86_64 obsoletes runc provided by runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  - cannot install the best candidate for the job
  - package runc-1.0.0-56.rc5.dev.git2abd837.module_el8.3.0+569+1bada2e4.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-66.rc10.module_el8.5.0+1004+c00a74f5.x86_64 is filtered out by modular filtering
  - package runc-1.0.0-72.rc92.module_el8.5.0+1006+8d0e68a2.x86_64 is filtered out by modular filtering
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

由于podman 和buildah与docker有冲突,所有需要先卸载podman buildah,在安装docker

yum -y erase podman buildah

[root@Hlanan ~]# yum -y erase podman buildah
Dependencies resolved.
================================================================================================================================================================
 Package                              Architecture             Version                                                       Repository                    Size
================================================================================================================================================================
Removing:
 buildah                              x86_64                   1:1.28.2-2.module_el8.8.0+1254+78119b6e                       @AppStream                    26 M
 podman                               x86_64                   3:4.3.1-2.module_el8.8.0+1254+78119b6e                        @AppStream                    42 M
Removing dependent packages:
 cockpit-podman                       noarch                   59-1.module_el8.8.0+1254+78119b6e                             @AppStream                   579 k
Removing unused dependencies:
 conmon                               x86_64                   3:2.1.5-1.module_el8.8.0+1254+78119b6e                        @AppStream                   172 k
 container-selinux                    noarch                   2:2.195.1-1.module_el8.8.0+1254+78119b6e                      @AppStream                    62 k
 containers-common                    x86_64                   2:1-49.module_el8.8.0+1254+78119b6e                           @AppStream                   411 k
 criu                                 x86_64                   3.15-3.module_el8.7.0+1216+b022c01d                           @AppStream                   1.4 M
 fuse-overlayfs                       x86_64                   1.10-1.module_el8.8.0+1254+78119b6e                           @AppStream                   145 k
 fuse3                                x86_64                   3.3.0-16.el8                                                  @anaconda                    100 k
 fuse3-libs                           x86_64                   3.3.0-16.el8                                                  @anaconda                    274 k
 libnet                               x86_64                   1.1.6-15.el8                                                  @AppStream                   170 k
 libslirp                             x86_64                   4.4.0-1.module_el8.7.0+1216+b022c01d                          @AppStream                   134 k
 podman-catatonit                     x86_64                   3:4.3.1-2.module_el8.8.0+1254+78119b6e                        @AppStream                   761 k
 runc                                 x86_64                   1:1.1.4-1.module_el8.7.0+1216+b022c01d                        @AppStream                   9.5 M
 shadow-utils-subid                   x86_64                   2:4.6-17.el8                                                  @anaconda                    205 k
 slirp4netns                          x86_64                   1.2.0-2.module_el8.7.0+1216+b022c01d                          @AppStream                   103 k

Transaction Summary
================================================================================================================================================================
Remove  16 Packages

Freed space: 82 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                        1/1
  Running scriptlet: buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                 1/1
  Erasing          : buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                1/16
  Erasing          : cockpit-podman-59-1.module_el8.8.0+1254+78119b6e.noarch                                                                               2/16
  Running scriptlet: podman-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                  3/16
  Erasing          : podman-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                  3/16
  Running scriptlet: podman-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                  3/16
  Erasing          : containers-common-2:1-49.module_el8.8.0+1254+78119b6e.x86_64                                                                          4/16
  Erasing          : container-selinux-2:2.195.1-1.module_el8.8.0+1254+78119b6e.noarch                                                                     5/16
  Running scriptlet: container-selinux-2:2.195.1-1.module_el8.8.0+1254+78119b6e.noarch                                                                     5/16
  Erasing          : podman-catatonit-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                        6/16
  Erasing          : fuse-overlayfs-1.10-1.module_el8.8.0+1254+78119b6e.x86_64                                                                             7/16
  Erasing          : fuse3-3.3.0-16.el8.x86_64                                                                                                             8/16
  Erasing          : slirp4netns-1.2.0-2.module_el8.7.0+1216+b022c01d.x86_64                                                                               9/16
  Erasing          : runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64                                                                                   10/16
  Erasing          : criu-3.15-3.module_el8.7.0+1216+b022c01d.x86_64                                                                                      11/16
  Erasing          : libnet-1.1.6-15.el8.x86_64                                                                                                           12/16
  Running scriptlet: libnet-1.1.6-15.el8.x86_64                                                                                                           12/16
  Erasing          : libslirp-4.4.0-1.module_el8.7.0+1216+b022c01d.x86_64                                                                                 13/16
  Erasing          : fuse3-libs-3.3.0-16.el8.x86_64                                                                                                       14/16
  Running scriptlet: fuse3-libs-3.3.0-16.el8.x86_64                                                                                                       14/16
  Erasing          : conmon-3:2.1.5-1.module_el8.8.0+1254+78119b6e.x86_64                                                                                 15/16
  Erasing          : shadow-utils-subid-2:4.6-17.el8.x86_64                                                                                               16/16
  Running scriptlet: shadow-utils-subid-2:4.6-17.el8.x86_64                                                                                               16/16
  Verifying        : buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                1/16
  Verifying        : cockpit-podman-59-1.module_el8.8.0+1254+78119b6e.noarch                                                                               2/16
  Verifying        : conmon-3:2.1.5-1.module_el8.8.0+1254+78119b6e.x86_64                                                                                  3/16
  Verifying        : container-selinux-2:2.195.1-1.module_el8.8.0+1254+78119b6e.noarch                                                                     4/16
  Verifying        : containers-common-2:1-49.module_el8.8.0+1254+78119b6e.x86_64                                                                          5/16
  Verifying        : criu-3.15-3.module_el8.7.0+1216+b022c01d.x86_64                                                                                       6/16
  Verifying        : fuse-overlayfs-1.10-1.module_el8.8.0+1254+78119b6e.x86_64                                                                             7/16
  Verifying        : fuse3-3.3.0-16.el8.x86_64                                                                                                             8/16
  Verifying        : fuse3-libs-3.3.0-16.el8.x86_64                                                                                                        9/16
  Verifying        : libnet-1.1.6-15.el8.x86_64                                                                                                           10/16
  Verifying        : libslirp-4.4.0-1.module_el8.7.0+1216+b022c01d.x86_64                                                                                 11/16
  Verifying        : podman-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                                 12/16
  Verifying        : podman-catatonit-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                                                                       13/16
  Verifying        : runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64                                                                                   14/16
  Verifying        : shadow-utils-subid-2:4.6-17.el8.x86_64                                                                                               15/16
  Verifying        : slirp4netns-1.2.0-2.module_el8.7.0+1216+b022c01d.x86_64                                                                              16/16

Removed:
  buildah-1:1.28.2-2.module_el8.8.0+1254+78119b6e.x86_64                        cockpit-podman-59-1.module_el8.8.0+1254+78119b6e.noarch
  conmon-3:2.1.5-1.module_el8.8.0+1254+78119b6e.x86_64                          container-selinux-2:2.195.1-1.module_el8.8.0+1254+78119b6e.noarch
  containers-common-2:1-49.module_el8.8.0+1254+78119b6e.x86_64                  criu-3.15-3.module_el8.7.0+1216+b022c01d.x86_64
  fuse-overlayfs-1.10-1.module_el8.8.0+1254+78119b6e.x86_64                     fuse3-3.3.0-16.el8.x86_64
  fuse3-libs-3.3.0-16.el8.x86_64                                                libnet-1.1.6-15.el8.x86_64
  libslirp-4.4.0-1.module_el8.7.0+1216+b022c01d.x86_64                          podman-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64
  podman-catatonit-3:4.3.1-2.module_el8.8.0+1254+78119b6e.x86_64                runc-1:1.1.4-1.module_el8.7.0+1216+b022c01d.x86_64
  shadow-utils-subid-2:4.6-17.el8.x86_64                                        slirp4netns-1.2.0-2.module_el8.7.0+1216+b022c01d.x86_64

Complete!
[root@Hlanan ~]# yum -y install docker-ce
Last metadata expiration check: 0:16:50 ago on Tue 08 Oct 2024 03:05:24 PM CST.
Dependencies resolved.
================================================================================================================================================================
 Package                               Architecture           Version                                                    Repository                        Size
================================================================================================================================================================
Installing:
 docker-ce                             x86_64                 3:26.1.3-1.el8                                             docker-ce-stable                  27 M
Installing dependencies:
 container-selinux                     noarch                 2:2.167.0-1.module_el8.5.0+911+f19012f9                    AppStream                         54 k
 containerd.io                         x86_64                 1.6.32-3.1.el8                                             docker-ce-stable                  35 M
 docker-ce-cli                         x86_64                 1:26.1.3-1.el8                                             docker-ce-stable                 7.8 M
 libcgroup                             x86_64                 0.41-19.el8                                                base                              70 k
Installing weak dependencies:
 docker-buildx-plugin                  x86_64                 0.14.0-1.el8                                               docker-ce-stable                  14 M
 docker-compose-plugin                 x86_64                 2.27.0-1.el8                                               docker-ce-stable                  13 M

Transaction Summary
================================================================================================================================================================
Install  7 Packages

Total download size: 97 M
Installed size: 374 M
Downloading Packages:
(1/7): container-selinux-2.167.0-1.module_el8.5.0+911+f19012f9.noarch.rpm                                                       629 kB/s |  54 kB     00:00
(2/7): libcgroup-0.41-19.el8.x86_64.rpm                                                                                         450 kB/s |  70 kB     00:00
(3/7): docker-buildx-plugin-0.14.0-1.el8.x86_64.rpm                                                                              17 MB/s |  14 MB     00:00
(4/7): docker-ce-cli-26.1.3-1.el8.x86_64.rpm                                                                                     20 MB/s | 7.8 MB     00:00
(5/7): docker-ce-26.1.3-1.el8.x86_64.rpm                                                                                         18 MB/s |  27 MB     00:01
(6/7): containerd.io-1.6.32-3.1.el8.x86_64.rpm                                                                                   18 MB/s |  35 MB     00:01
(7/7): docker-compose-plugin-2.27.0-1.el8.x86_64.rpm                                                                             18 MB/s |  13 MB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                            48 MB/s |  97 MB     00:02
Docker CE Stable - x86_64                                                                                                        17 kB/s | 1.6 kB     00:00
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
 From       : https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                        1/1
  Installing       : docker-compose-plugin-2.27.0-1.el8.x86_64                                                                                              1/7
  Running scriptlet: docker-compose-plugin-2.27.0-1.el8.x86_64                                                                                              1/7
  Running scriptlet: container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                                                                       2/7
  Installing       : container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                                                                       2/7
  Running scriptlet: container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                                                                       2/7
  Installing       : containerd.io-1.6.32-3.1.el8.x86_64                                                                                                    3/7
  Running scriptlet: containerd.io-1.6.32-3.1.el8.x86_64                                                                                                    3/7
  Installing       : docker-buildx-plugin-0.14.0-1.el8.x86_64                                                                                               4/7
  Running scriptlet: docker-buildx-plugin-0.14.0-1.el8.x86_64                                                                                               4/7
  Installing       : docker-ce-cli-1:26.1.3-1.el8.x86_64                                                                                                    5/7
  Running scriptlet: docker-ce-cli-1:26.1.3-1.el8.x86_64                                                                                                    5/7
  Running scriptlet: libcgroup-0.41-19.el8.x86_64                                                                                                           6/7
  Installing       : libcgroup-0.41-19.el8.x86_64                                                                                                           6/7
  Running scriptlet: libcgroup-0.41-19.el8.x86_64                                                                                                           6/7
  Installing       : docker-ce-3:26.1.3-1.el8.x86_64                                                                                                        7/7
  Running scriptlet: docker-ce-3:26.1.3-1.el8.x86_64                                                                                                        7/7
  Running scriptlet: container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                                                                       7/7
  Running scriptlet: docker-ce-3:26.1.3-1.el8.x86_64                                                                                                        7/7
  Verifying        : libcgroup-0.41-19.el8.x86_64                                                                                                           1/7
  Verifying        : container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                                                                       2/7
  Verifying        : containerd.io-1.6.32-3.1.el8.x86_64                                                                                                    3/7
  Verifying        : docker-buildx-plugin-0.14.0-1.el8.x86_64                                                                                               4/7
  Verifying        : docker-ce-3:26.1.3-1.el8.x86_64                                                                                                        5/7
  Verifying        : docker-ce-cli-1:26.1.3-1.el8.x86_64                                                                                                    6/7
  Verifying        : docker-compose-plugin-2.27.0-1.el8.x86_64                                                                                              7/7

Installed:
  container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch      containerd.io-1.6.32-3.1.el8.x86_64      docker-buildx-plugin-0.14.0-1.el8.x86_64
  docker-ce-3:26.1.3-1.el8.x86_64                                       docker-ce-cli-1:26.1.3-1.el8.x86_64      docker-compose-plugin-2.27.0-1.el8.x86_64
  libcgroup-0.41-19.el8.x86_64

Complete!
[root@Hlanan ~]#

如果需要指定安装docker的版本的话,采用如下命令

[root@Hlanan ~]# yum -y install docker-ce-20.10.24 docker-ce-cli-20.10.24

查看安装的docker的版本

[root@Hlanan ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.3
 API version:       1.45
 Go version:        go1.21.10
 Git commit:        b72abbb
 Built:             Thu May 16 08:34:39 2024
 OS/Arch:           linux/amd64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@Hlanan ~]#

启动docker,查看docker状态,设置开机自启

[root@Hlanan ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com
[root@Hlanan ~]#
[root@Hlanan ~]# systemctl start docker
[root@Hlanan ~]# systemctl status docker
[root@Hlanan ~]#
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2024-10-08 15:28:58 CST; 1s ago
     Docs: https://docs.docker.com
 Main PID: 147389 (dockerd)
    Tasks: 18
   Memory: 36.6M
   CGroup: /system.slice/docker.service
           └─147389 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Oct 08 15:28:57 Hlanan systemd[1]: Starting Docker Application Container Engine...
Oct 08 15:28:57 Hlanan dockerd[147389]: time="2024-10-08T15:28:57.101692080+08:00" level=info msg="Starting up"
Oct 08 15:28:57 Hlanan dockerd[147389]: time="2024-10-08T15:28:57.136053043+08:00" level=info msg="Loading containers: start."
Oct 08 15:28:57 Hlanan dockerd[147389]: time="2024-10-08T15:28:57.984690734+08:00" level=info msg="Firewalld: interface docker0 already part of docker zone, re>
Oct 08 15:28:58 Hlanan dockerd[147389]: time="2024-10-08T15:28:58.061672054+08:00" level=info msg="Loading containers: done."
Oct 08 15:28:58 Hlanan dockerd[147389]: time="2024-10-08T15:28:58.090287963+08:00" level=info msg="Docker daemon" commit=8e96db1 containerd-snapshotter=false s>
Oct 08 15:28:58 Hlanan dockerd[147389]: time="2024-10-08T15:28:58.090430343+08:00" level=info msg="Daemon has completed initialization"
Oct 08 15:28:58 Hlanan dockerd[147389]: time="2024-10-08T15:28:58.108976764+08:00" level=info msg="API listen on /run/docker.sock"
Oct 08 15:28:58 Hlanan systemd[1]: Started Docker Application Container Engine.
[root@Hlanan ~]#
[root@Hlanan ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@Hlanan ~]#

1.4 Docker架构

1.4

1.5 容器和镜像的关系

想要创建容器,前提必须得有镜像。运行什么进程由镜像来决定。

1.6 Docker镜像管理

1.6.1 科学上网v2raya及v2ray-core

https://github.com/v2rayA/v2rayA

https://github.com/v2fly/v2ray-core

yum -y install v2raya_installer_redhat_x64_2.2.5.8.rpm
unzip v2ray-linux-64.zip -d ./v2ray
sudo mkdir -p /usr/local/share/v2ray
sudo cp ./v2ray/*dat /usr/local/share/v2ray
sudo install -Dm755 ./v2ray/v2ray /usr/local/bin/v2ray
systemctl restart v2raya.service
systemctl status v2raya.service
[root@Hlanan ~]# yum -y install v2raya_installer_redhat_x64_2.2.5.8.rpm
Last metadata expiration check: 0:50:00 ago on Tue 08 Oct 2024 03:05:24 PM CST.
Dependencies resolved.
============================================================================================================================================
 Package                        Architecture                   Version                           Repository                            Size
============================================================================================================================================
Installing:
 v2raya                         x86_64                         2.2.5.8-1                         @commandline                          12 M

Transaction Summary
============================================================================================================================================
Install  1 Package

Total size: 12 M
Installed size: 29 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                    1/1
  Installing       : v2raya-2.2.5.8-1.x86_64                                                                                            1/1
  Running scriptlet: v2raya-2.2.5.8-1.x86_64                                                                                            1/1
******************************
*         Completed!         *
******************************

  Verifying        : v2raya-2.2.5.8-1.x86_64                                                                                            1/1

Installed:
  v2raya-2.2.5.8-1.x86_64

Complete!
[root@Hlanan ~]#
[root@Hlanan ~]# unzip v2ray-linux-64.zip -d ./v2ray
Archive:  v2ray-linux-64.zip
  inflating: ./v2ray/geoip.dat
  inflating: ./v2ray/geoip-only-cn-private.dat
  inflating: ./v2ray/v2ray
  inflating: ./v2ray/config.json
   creating: ./v2ray/systemd/
   creating: ./v2ray/systemd/system/
  inflating: ./v2ray/systemd/system/v2ray@.service
  inflating: ./v2ray/systemd/system/v2ray.service
  inflating: ./v2ray/geosite.dat
  inflating: ./v2ray/vpoint_socks_vmess.json
  inflating: ./v2ray/vpoint_vmess_freedom.json
[root@Hlanan ~]# ll
[root@Hlanan ~]# sudo mkdir -p /usr/local/share/v2ray
[root@Hlanan ~]# sudo cp ./v2ray/*dat /usr/local/share/v2ray
[root@Hlanan ~]# sudo install -Dm755 ./v2ray/v2ray /usr/local/bin/v2ray
[root@Hlanan ~]# systemctl restart v2raya.service
[root@Hlanan ~]# systemctl status v2raya.service
● v2raya.service - v2rayA Service
   Loaded: loaded (/usr/lib/systemd/system/v2raya.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2024-10-08 16:01:13 CST; 6s ago
     Docs: https://github.com/v2rayA/v2rayA/wiki
 Main PID: 159894 (v2raya)
    Tasks: 10 (limit: 48701)
   Memory: 17.4M
   CGroup: /system.slice/v2raya.service
           └─159894 /usr/bin/v2raya --log-disable-timestamp

Oct 08 16:01:13 Hlanan systemd[1]: Started v2rayA Service.
[root@Hlanan ~]#

v2raya默认端口号2017:http://zhangbx.cn:2017登陆v2raya,配置代理。现在可以进入v2rayA登陆UI界面了。在第一次进入页面时,你需要创建一个管理员账号,请妥善保管你的用户名密码,如果遗忘,使用sudo v2raya --reset-password命令重置。

1.6.1

1.6.2 登陆dockerhub

登陆Dockerhub,国内已封锁dockerhub,需科学上网才可登录

[root@Hlanan ~]# docker login
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/

Username: zhang.bx@outlook.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
### 1.6.3 拉取镜像
[root@Hlanan ~]# docker pull xhofe/alist
Using default tag: latest
latest: Pulling from xhofe/alist
32b772fa5071: Pull complete
c56eaf8e1da4: Pull complete
b032813f06fb: Pull complete
edd92cbb75e9: Pull complete
a3c108e06e96: Pull complete
7ef37283fb00: Pull complete
Digest: sha256:8822a7fe89c1cb255d26251220acb948a1faa58130c49ac7f85268b9f7c5d516
Status: Downloaded newer image for xhofe/alist:latest
docker.io/xhofe/alist:latest
[root@Hlanan ~]#
[root@Hlanan ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
xhofe/alist   latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]#

1.6.4 镜像重命名

镜像重命名时不能镜像名不能用大写字母
[root@Hlanan ~]# docker tag xhofe/alist alist
[root@Hlanan ~]#
[root@Hlanan ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
xhofe/alist   latest    db320b123a98   2 weeks ago   97.2MB
alist         latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]#
[root@Hlanan ~]# docker tag alist:latest alist:1.0
[root@Hlanan ~]# docker tag alist:latest alist:2.0
[root@Hlanan ~]# docker tag alist:latest alist:3.0
[root@Hlanan ~]#
[root@Hlanan ~]# docker save alist:1.0 alist:2.0 alist:3.0 > /root/alist-1.tar
[root@Hlanan ~]# ll
total 224612
-rw-r--r--. 1 root root 98364928 Oct  8 16:47 alist-1.tar
[root@Hlanan ~]#

1.6.5 镜像删除

[root@Hlanan ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
xhofe/alist   latest    db320b123a98   2 weeks ago   97.2MB
alist         latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]# docker rmi xhofe/alist
Untagged: xhofe/alist:latest
Untagged: xhofe/alist@sha256:8822a7fe89c1cb255d26251220acb948a1faa58130c49ac7f85268b9f7c5d516
[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alist        latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]#

1.6.6 镜像导出和导入

[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alist        latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]# docker save alist > /root/alist.tar
[root@Hlanan ~]# ll
total 128552
-rw-r--r--. 1 root root 98364416 Oct  8 16:39 alist.tar
[root@Hlanan ~]#

再导入压缩包,会自动解压

[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@Hlanan ~]# docker load -i /root/alist.tar
30f8e4588c9e: Loading layer [==================================================>]  8.081MB/8.081MB
b0df0f150067: Loading layer [==================================================>]  2.048kB/2.048kB
6746ab1f9ae9: Loading layer [==================================================>]  11.37MB/11.37MB
1150ed625e8f: Loading layer [==================================================>]  78.88MB/78.88MB
9c909fbeae5b: Loading layer [==================================================>]  2.048kB/2.048kB
90aea256876c: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image: alist:latest
[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alist        latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]#

1.6.7 脚本批量删除镜像

#!/bin/bash
docker rmi -f $(docker images -q)
[root@Hlanan ~]# docker images -q
db320b123a98
db320b123a98
db320b123a98
db320b123a98
[root@Hlanan ~]# docker rmi -f $(docker images -q)
Untagged: alist:1.0
Untagged: alist:2.0
Untagged: alist:3.0
Untagged: alist:latest
Deleted: sha256:db320b123a98c682c9905e91e1b351cba83b20d2dfb2038fe711fd70439ff87b
Deleted: sha256:53238a0fc3f19b72e0fb93f722b9ea06289141b9c0ef2bb8fa9921003d8d9cdb
Deleted: sha256:8ccaa6a1536df5c8d42727eb5e130583d2c1aa321e89d2144a259df590677295
Deleted: sha256:0af7e5280bcb6f8e8035ba008cdfd961f75706433b18cae007035667a7774815
Deleted: sha256:eed8acd65df88e17a5f6def7ee4f851759dfeb3de5314dac10c53e6889ab71cb
Deleted: sha256:b4e4aa34d27f3cef2f721c39acb6aa23b8b17f1b26c92e39fc927011714c31e6
Deleted: sha256:30f8e4588c9e02cc64ca7c31900a63826b14b9f77786fc8a13f6a641da95266e
Error response from daemon: No such image: db320b123a98:latest
Error response from daemon: No such image: db320b123a98:latest
Error response from daemon: No such image: db320b123a98:latest
[root@Hlanan ~]#

[root@Hlanan ~]# vim delimages.sh
[root@Hlanan ~]# cat delimages.sh
#!/bin/bash
docker rmi -f $(docker images -q)
[root@Hlanan ~]#

[root@Hlanan ~]# vim delimages.sh
[root@Hlanan ~]# cat delimages.sh
#!/bin/bash
docker rmi -f $(docker images -q)
[root@Hlanan ~]#
[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alist        1.0       db320b123a98   2 weeks ago   97.2MB
alist        2.0       db320b123a98   2 weeks ago   97.2MB
alist        3.0       db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]# sh delimages.sh
Untagged: alist:1.0
Untagged: alist:2.0
Untagged: alist:3.0
Deleted: sha256:db320b123a98c682c9905e91e1b351cba83b20d2dfb2038fe711fd70439ff87b
Deleted: sha256:53238a0fc3f19b72e0fb93f722b9ea06289141b9c0ef2bb8fa9921003d8d9cdb
Deleted: sha256:8ccaa6a1536df5c8d42727eb5e130583d2c1aa321e89d2144a259df590677295
Deleted: sha256:0af7e5280bcb6f8e8035ba008cdfd961f75706433b18cae007035667a7774815
Deleted: sha256:eed8acd65df88e17a5f6def7ee4f851759dfeb3de5314dac10c53e6889ab71cb
Deleted: sha256:b4e4aa34d27f3cef2f721c39acb6aa23b8b17f1b26c92e39fc927011714c31e6
Deleted: sha256:30f8e4588c9e02cc64ca7c31900a63826b14b9f77786fc8a13f6a641da95266e
[root@Hlanan ~]#
[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@Hlanan ~]#

1.6.8 docker镜像的分层(历史版本)

利用history查询镜像的历史版本或者说叫镜像的分层

[root@Hlanan ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alist        latest    db320b123a98   2 weeks ago   97.2MB
[root@Hlanan ~]# docker history alist:latest
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
db320b123a98   2 weeks ago    CMD ["/entrypoint.sh"]                          0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    EXPOSE map[5244/tcp:{} 5245/tcp:{}]             0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    VOLUME [/opt/alist/data/]                       0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    ENV PUID=0 PGID=0 UMASK=022                     0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    RUN |2 TARGETPLATFORM=linux/amd64 INSTALL_FF…   180B      buildkit.dockerfile.v0
<missing>      2 weeks ago    COPY entrypoint.sh /entrypoint.sh # buildkit    180B      buildkit.dockerfile.v0
<missing>      2 weeks ago    COPY /build/linux/amd64/alist ./ # buildkit     78.9MB    buildkit.dockerfile.v0
<missing>      2 weeks ago    RUN |2 TARGETPLATFORM=linux/amd64 INSTALL_FF…   10.5MB    buildkit.dockerfile.v0
<missing>      2 weeks ago    WORKDIR /opt/alist/                             0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    LABEL MAINTAINER=i@nn.ci                        0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    ARG INSTALL_FFMPEG=false                        0B        buildkit.dockerfile.v0
<missing>      2 weeks ago    ARG TARGETPLATFORM=linux/amd64                  0B        buildkit.dockerfile.v0
<missing>      2 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>      2 months ago   /bin/sh -c #(nop) ADD file:fd7eb8b8156b429f8…   7.8MB
[root@Hlanan ~]#

1.7 容器管理

1.7.1 创建容器及查看日志

[root@Hlanan ~]# docker run -itd alist
ad040a45ec45f3e9ce11eae2ab1ae8961ca8864a4a72d13176c4bf6534a3207d
[root@Hlanan ~]#
[root@Hlanan ~]# docker ps
CONTAINER ID   IMAGE     COMMAND            CREATED         STATUS         PORTS           NAMES
ad040a45ec45   alist     "/entrypoint.sh"   3 seconds ago   Up 2 seconds   5244-5245/tcp   brave_wing
[root@Hlanan ~]# docker logs brave_wing
INFO[2024-10-08 09:01:57] reading config file: data/config.json
INFO[2024-10-08 09:01:57] config file not exists, creating default config file
INFO[2024-10-08 09:01:57] load config from env with prefix:
INFO[2024-10-08 09:01:57] init logrus...
INFO[2024-10-08 09:01:57] Successfully created the admin user and the initial password is: OxnXCsRQ
WARN[2024-10-08 09:01:57] init tool aria2 failed: failed get aria2 version: Post "http://localhost:6800/jsonrpc": dial tcp [::1]:6800: connect: connection refused
INFO[2024-10-08 09:01:57] init tool SimpleHttp success: ok
INFO[2024-10-08 09:01:57] init tool pikpak success: ok
WARN[2024-10-08 09:01:57] init tool qBittorrent failed: Post "http://localhost:8080/api/v2/auth/login": dial tcp [::1]:8080: connect: connection refused
INFO[2024-10-08 09:01:57] init tool 115 Cloud success: ok
INFO[2024-10-08 09:01:57] start HTTP server @ 0.0.0.0:5244
[root@Hlanan ~]#

1.7.2 查询容器

[root@Hlanan ~]# docker ps
CONTAINER ID   IMAGE     COMMAND            CREATED              STATUS              PORTS           NAMES
ad040a45ec45   alist     "/entrypoint.sh"   About a minute ago   Up About a minute   5244-5245/tcp   brave_wing
[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND            CREATED              STATUS                          PORTS           NAMES
ad040a45ec45   alist     "/entrypoint.sh"   About a minute ago   Up About a minute               5244-5245/tcp   brave_wing
e1e6d5d180c4   alist     "/entrypoint.sh"   About a minute ago   Exited (0) About a minute ago                   great_borg
[root@Hlanan ~]#

1.7.3 删除容器

[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND            CREATED         STATUS         PORTS           NAMES
ad040a45ec45   alist     "/entrypoint.sh"   3 minutes ago   Up 3 minutes   5244-5245/tcp   brave_wing
[root@Hlanan ~]# docker stop brave_wing
brave_wing
[root@Hlanan ~]# docker rm brave_wing
brave_wing
[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@Hlanan ~]#

1.7.4 为容器添加一个伪终端(-t)

[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@Hlanan ~]#
[root@Hlanan ~]#
[root@Hlanan ~]#
[root@Hlanan ~]# docker run -t alpine
Unable to find image 'alpine:latest' locally

latest: Pulling from library/alpine

43c4264eed91: Pull complete
Digest: sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d
Status: Downloaded newer image for alpine:latest
/ # ^[[53;5R
cd
cd

复制一个新的SSH连接

[root@Hlanan ~]# docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS          PORTS     NAMES
0e33a5ddeaad   alpine    "/bin/sh"   13 seconds ago   Up 11 seconds             goofy_lamarr
[root@Hlanan ~]#

此时停止该容器

[root@Hlanan ~]# docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
0e33a5ddeaad   alpine    "/bin/sh"   3 minutes ago   Up 3 minutes             goofy_lamarr
[root@Hlanan ~]# docker rm 0e33a5ddeaad
Error response from daemon: cannot remove container "/goofy_lamarr": container is running: stop the container before removing or force remove
[root@Hlanan ~]# docker stop 0e33a5ddeaad
0e33a5ddeaad
[root@Hlanan ~]#

回到第一个SSH连接,回车,就从容器退出了

[root@Hlanan ~]# docker run -t alpine
Unable to find image 'alpine:latest' locally

latest: Pulling from library/alpine

43c4264eed91: Pull complete
Digest: sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d
Status: Downloaded newer image for alpine:latest
/ # ^[[53;5R
cd
cd
ls
^C^C

/ # ^[[53;5R
^C^C

/ # ^[[53;5R

[root@Hlanan ~]# ;5R
-bash: syntax error near unexpected token `;'
[root@Hlanan ~]#

刚用-t创建的容器创建成功后里面卡住了

因为这个容器虽然有终端来承载bash命令,但是没有交互,所以无法运行指令。

1.7.5 为容器添加交互(-i)

[root@Hlanan ~]# docker run -ti alpine
/ # sh
/ # ll
sh: ll: not found
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # mkdir zhang
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var    zhang
/ # cd zhang/
/zhang #
/zhang #

在第二个ssh链接里面查看容器状态

[root@Hlanan ~]# docker ps
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
55d44565ab4e   alpine    "/bin/sh"   2 minutes ago   Up 2 minutes             sad_yonath
[root@Hlanan ~]#

在第一个ssh连接里面退出容器

[root@Hlanan ~]# docker run -ti alpine
/ # sh
/ # exit
[root@Hlanan ~]#

在第二个ssh链接里面查看容器状态

[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS                          PORTS     NAMES
55d44565ab4e   alpine    "/bin/sh"   4 minutes ago   Exited (0) About a minute ago             sad_yonath
[root@Hlanan ~]#

如果你每次退出容器,容器状态就变为exit的话,那么容器里面的APP就不运行

那怎么办才能让你即使exit退出容器,而容器还是up呢

1.7.6 为容器添加持续运行(--restart always)

docker run -ti --restart always alpine

[root@Hlanan ~]# docker run -ti --restart always alpine
/ #
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ #

在第二个ssh链接里面查看容器状态

[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED              STATUS              PORTS     NAMES
b3bdf510d3a7   alpine    "/bin/sh"   About a minute ago   Up About a minute             agitated_liskov
[root@Hlanan ~]#

在第一个ssh连接里面退出容器

[root@Hlanan ~]# docker run -ti --restart always alpine
/ #
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # exit
[root@Hlanan ~]#

在第二个ssh链接里面查看容器状态

[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS          PORTS     NAMES
b3bdf510d3a7   alpine    "/bin/sh"   2 minutes ago   Up 11 seconds             agitated_liskov
[root@Hlanan ~]#

exit退出了容器,再查看容器还是up的,容器里面的APP肯定还能工作

以上这些方式创建容器后,直接进入到容器里面,就可以执行相关命令了。

这时候,你又发现问题了。感觉不方便呀,创建容器后,它默认直接进入到容器里面了,这不是我想要的,单独创建好,我可以随时去连接容器。就是让容器在后台运行。

1.7.7 为容器添加后端运行(-d)

[root@Hlanan ~]# docker run -tid --restart always alpine
14f12fe8a1f35ad73e7bea67347d2ade6a8368840aa38947939a96373d0c666c
[root@Hlanan ~]#
[root@Hlanan ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS         PORTS     NAMES
14f12fe8a1f3   alpine    "/bin/sh"   4 seconds ago   Up 3 seconds             busy_babbage
[root@Hlanan ~]#