一文搞清楚 Docker 镜像、容器、仓库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: Docker 镜像、容器、仓库是 Docker 技术中的三个重要概念.....

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

1686633574842.jpg

1、什么是 Docker 镜像、容器、仓库

Docker 镜像、容器、仓库是 Docker 技术中的三个重要概念。

Docker 镜像是一个只读的模板,可以用来创建 Docker 容器。镜像可以包含操作系统、应用程序、依赖库、配置文件等。

Docker 容器是 Docker 镜像的一个运行实例,可以理解为一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。

Docker 仓库是用来存储和管理 Docker 镜像的地方,类似于代码仓库。Docker 官方提供了 Docker Hub 仓库,可以在其中存储和分享 Docker 镜像。用户也可以自建私有仓库来存储和管理自己的 Docker 镜像。

通过使用 Docker 镜像、容器、仓库,可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

2、镜像、容器、仓库之间的关系

48c7f8f982c54fd982543bae113b1b48.png

Docker 镜像、容器、仓库之间的关系如下:

  1. Docker 镜像是一个只读的模板,包含了操作系统、应用程序、依赖库、配置文件等,用来创建 Docker 容器。

  2. Docker 容器是 Docker 镜像的一个运行实例,可以理解为一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。

  3. Docker 仓库是用来存储和管理 Docker 镜像的地方,类似于代码仓库。Docker 镜像可以从仓库中拉取,也可以推送到仓库中进行存储和分享。Docker 官方提供了 Docker Hub 仓库,用户也可以自建私有仓库来存储和管理自己的 Docker 镜像。

综上所述,Docker 镜像是创建 Docker 容器的基础,Docker 容器是 Docker 镜像的运行实例,Docker 仓库是存储和管理 Docker 镜像的地方。通过使用 Docker 镜像、容器、仓库,可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

3、Docker 镜像

3.1、镜像列表

docker images

该命令将列出所有本地镜像的名称、标签、镜像 ID、创建时间和大小等信息。例如:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               4c108a37151f        3 weeks ago         130MB
nginx               latest              6f715f503b62        4 weeks ago         133MB
mysql               5.7                 4a3c9c5a0a3d        4 weeks ago         448MB

其中,REPOSITORY 列表示镜像的名称,TAG 列表示镜像的标签(通常是版本号),IMAGE ID 列表示镜像的唯一 ID,CREATED 列表示镜像的创建时间,SIZE 列表示镜像的大小。

3.2、查找镜像

要查找 Docker Hub 上的镜像,可以使用以下命令:

docker search <image-name>

搜索 MySQL 镜像可以使用以下命令:

docker search mysql
[root@ecs-32f7 ~]# docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14221     [OK]
mariadb                         MariaDB Server is a high performing open sou…   5432      [OK]
percona                         Percona Server is a fork of the MySQL relati…   614       [OK]
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   818       [OK]
bitnami/mysql                   Bitnami MySQL Docker Image                      89                   [OK]
circleci/mysql                  MySQL is a widely used, open-source relation…   29
bitnami/mysqld-exporter                                                         5
ubuntu/mysql                    MySQL open source fast, stable, multi-thread…   49
cimg/mysql                                                                      0
rapidfort/mysql                 RapidFort optimized, hardened image for MySQL   23
rapidfort/mysql8-ib             RapidFort optimized, hardened image for MySQ…   9
google/mysql                    MySQL server for Google Compute Engine          23                   [OK]
hashicorp/mysql-portworx-demo                                                   0
rapidfort/mysql-official        RapidFort optimized, hardened image for MySQ…   7
newrelic/mysql-plugin           New Relic Plugin for monitoring MySQL databa…   1                    [OK]
databack/mysql-backup           Back up mysql databases to... anywhere!         86
linuxserver/mysql               A Mysql container, brought to you by LinuxSe…   38
bitnamicharts/mysql                                                             0
mirantis/mysql                                                                  0
docksal/mysql                   MySQL service images for Docksal - https://d…   0
linuxserver/mysql-workbench                                                     50
vitess/mysqlctld                vitess/mysqlctld                                1                    [OK]
eclipse/mysql                   Mysql 5.7, curl, rsync                          0                    [OK]
drupalci/mysql-5.5              https://www.drupal.org/project/drupalci         3                    [OK]
drupalci/mysql-5.7              https://www.drupal.org/project/drupalci         0
[root@ecs-32f7 ~]#

3.3、拉取镜像

拉取 Docker 镜像可以使用以下命令:

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

其中, <镜像名称> 是要拉取的 Docker 镜像的名称, <标签> 是要拉取的 Docker 镜像的版本号或标签。例如,要拉取官方的 Nginx 镜像,可以使用以下命令:

docker pull nginx:latest

该命令将从 Docker Hub 上拉取最新版本的 Nginx 镜像,并将其保存到本地。如果要拉取指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。拉取完成后,可以使用 docker images 命令查看本地已有的 Docker 镜像列表。

[root@ecs-32f7 ~]# docker pull nginx:latest
latest: Pulling from library/nginx
f03b40093957: Pull complete
eed12bbd6494: Pull complete
fa7eb8c8eee8: Pull complete
7ff3b2b12318: Pull complete
0f67c7de5f2c: Pull complete
831f51541d38: Pull complete
Digest: sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@ecs-32f7 ~]#

3.4、删除镜像

删除 Docker 镜像可以使用以下命令:

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

其中, <镜像名称> 是要删除的 Docker 镜像的名称, <标签> 是要删除的 Docker 镜像的版本号或标签。例如,要删除本地的 Nginx 镜像,可以使用以下命令:

docker rmi nginx:latest

该命令将删除本地最新版本的 Nginx 镜像。如果要删除指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。注意,如果该镜像正在被使用,则无法删除。可以使用 docker ps 命令查看当前正在运行的 Docker 容器列表,如果某个容器正在使用该镜像,则需要先停止该容器,再删除镜像。

[root@ecs-32f7 ~]# docker rmi nginx:latest
Untagged: nginx:latest
Untagged: nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Deleted: sha256:f9c14fe76d502861ba0939bc3189e642c02e257f06f4c0214b1f8ca329326cda
Deleted: sha256:419f8948c50c723f2a5ac74428af3d804b5d0079d6df8f7f827663cf10cbc366
Deleted: sha256:1030aac4f1a8096ed58d3d4a2df55dd1b1b27d919ad156d97ad1f68081d0051a
Deleted: sha256:7d90b49d96c3036539ef144ecc27c01de03902d8ea166a0f7b77d11d3779c4bd
Deleted: sha256:551acb210764654af31b6cd51adaa74edc9a202587c3395fe0e9f95a2e097f8b
Deleted: sha256:3c530958db4c75c6fb409f339367aaf9a1e163c84718c035d4b09bebc83f43e7
Deleted: sha256:8cbe4b54fa88d8fc0198ea0cc3a5432aea41573e6a0ee26eca8c79f9fbfa40e3
[root@ecs-32f7 ~]#

3.5、更新镜像

更新 Docker 镜像可以使用以下命令:

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

其中, <镜像名称> 是要更新的 Docker 镜像的名称, <标签> 是要更新的 Docker 镜像的版本号或标签。例如,要更新本地的 Nginx 镜像,可以使用以下命令:

docker pull nginx:latest

该命令将会从 Docker Hub 中下载最新版本的 Nginx 镜像,并覆盖本地的同名镜像。如果要更新指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。注意,如果本地已经有了最新版本的镜像,则不需要执行该命令。

3.6、生成镜像

生成 Docker 镜像的步骤如下:

  1. 编写 Dockerfile:Dockerfile 是用于构建 Docker 镜像的脚本文件,其中包含了构建镜像所需的指令和配置信息。

  2. 构建 Docker 镜像:使用 docker build 命令根据 Dockerfile 构建 Docker 镜像。构建过程中会执行 Dockerfile 中的指令,并生成一个新的 Docker 镜像。

  3. 上传 Docker 镜像:使用 docker push 命令将生成的 Docker 镜像上传到 Docker 镜像仓库中。如果没有自己的 Docker 镜像仓库,可以使用 Docker 官方提供的 Docker Hub 镜像仓库。

下面是一个简单的 Dockerfile 示例,以 ubuntu 系统为例:

FROM ubuntu:18.04
 # 安装必要的软件包
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
 # 设置工作目录
WORKDIR /app
 # 复制应用程序文件到镜像中
COPY . /app
 # 安装 Python 依赖包
RUN pip3 install --no-cache-dir -r requirements.txt
 # 暴露应用程序端口
EXPOSE 8000
 # 设置启动命令
CMD ["python3", "app.py"]

以上 Dockerfile 文件用于构建一个 Python Web 应用程序的 Docker 镜像。在构建完成后,可以使用 docker push 命令将镜像上传到 Docker 镜像仓库中。

3.7、镜像标签

Docker 镜像标签是用来标识 Docker 镜像版本的一种方式,可以让用户更方便地管理和使用 Docker 镜像。Docker 镜像标签由两部分组成,用冒号分隔,例如: ubuntu:18.04 。其中, ubuntu 表示镜像仓库名称, 18.04 表示镜像标签。

Docker 镜像标签可以是任意字符串,但建议使用语义化的版本号或者日期作为标签,以便于管理和使用。例如, v1.0.0latest20210720 等都可以作为 Docker 镜像标签。

使用 Docker 镜像标签,可以方便地管理和使用不同版本的 Docker 镜像。例如,可以使用 docker pull ubuntu:20.04 命令拉取 Ubuntu 20.04 版本的 Docker 镜像,也可以使用 docker pull ubuntu:18.04 命令拉取 Ubuntu 18.04 版本的 Docker 镜像。

docker tag 命令用于为 Docker 镜像打标签,其语法格式如下:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

其中, SOURCE_IMAGE 表示要打标签的 Docker 镜像, TARGET_IMAGE 表示要打的标签后的目标镜像。

例如,要为本地的 ubuntu:20.04 镜像打上 my-ubuntu:latest 的标签,可以使用以下命令:

docker tag ubuntu:20.04 my-ubuntu:latest

执行该命令后,本地的 ubuntu:20.04 镜像就会被打上 my-ubuntu:latest 的标签,可以使用 docker images 命令查看。

4、Docker 容器

4.1、容器启动

启动容器的命令是 docker start ,其语法格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, CONTAINER 表示要启动的容器名称或 ID,可以同时启动多个容器。 OPTIONS 包括以下常用选项:

  • -a ,表示将容器的标准输入、标准输出和标准错误输出连接到当前终端。
  • -i ,表示以交互模式启动容器。
  • -d ,表示以守护进程模式启动容器。
  • --attach ,等同于 -a 选项。
  • --interactive ,等同于 -i 选项。

例如,要启动名称为 my-nginx 的 Nginx 容器,可以使用以下命令:

docker start my-nginx

如果要以交互模式启动该容器,可以使用以下命令:

docker start -ai my-nginx

如果要以守护进程模式启动该容器,可以使用以下命令:

docker start -d my-nginx

4.2、容器查看

查看容器的命令是 docker ps ,其语法格式如下:

docker ps [OPTIONS]

其中, OPTIONS 包括以下常用选项:

  • -a ,表示查看所有容器,包括已经停止的容器。
  • -q ,表示只显示容器的 ID。
  • -n ,表示显示最近创建的 n 个容器。
  • -s ,表示显示容器所占用的磁盘空间大小。
  • --format ,表示指定输出格式。
    例如,要查看当前正在运行的容器,可以使用以下命令:
docker ps

如果要查看所有容器,包括已经停止的容器,可以使用以下命令:

docker ps -a

如果只想显示容器的 ID,可以使用以下命令:

docker ps -q

如果只想显示最近创建的 5 个容器,可以使用以下命令:

docker ps -n 5

如果想显示容器所占用的磁盘空间大小,可以使用以下命令:

docker ps -s

如果想指定输出格式,可以使用以下命令:

docker ps --format "{
   {.ID}}\t{
   {.Names}}\t{
   {.Status}}"

上述命令将输出容器的 ID、名称和状态信息。

4.3、容器停止和重启

要停止容器,可以使用 docker stop 命令。其语法格式如下:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

  • -t ,表示停止容器的等待时间,单位为秒,默认为 10 秒。
    例如,要停止 ID 为 123456 的容器,可以使用以下命令:
docker stop 123456

要重启已经停止的容器,可以使用 docker start 命令。其语法格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

  • -i ,表示启动容器并进入交互模式。
  • -a ,表示启动容器并附加到容器的标准输入、输出和错误输出。
  • -d ,表示以后台模式启动容器。
  • -p ,表示将容器的端口映射到主机的端口。
  • -v ,表示将主机的目录或文件挂载到容器中。
    例如,要重新启动 ID 为 123456 的容器,可以使用以下命令:
docker start 123456

如果想以交互模式启动容器,可以使用以下命令:

docker start -i 123456

如果想以后台模式启动容器,可以使用以下命令:

docker start -d 123456

如果想将容器的端口映射到主机的端口,可以使用以下命令:

docker start -p 80:80 123456

上述命令将容器的 80 端口映射到主机的 80 端口。
如果想将主机的目录或文件挂载到容器中,可以使用以下命令:

docker start -v /host/path:/container/path 123456

上述命令将主机的 /host/path 目录或文件挂载到容器的 /container/path 目录中。

4.4、后台模式和进入

后台模式是指在容器中运行应用程序时,不占用当前终端窗口,而是在后台运行。这样可以让终端窗口继续执行其他命令,而不会被占用。

在 Docker 中,要在后台模式下运行容器,可以使用 -d 参数。例如,运行一个名为 myapp 的容器,并在后台模式下运行,可以使用以下命令:

docker run -d myapp

进入容器是指在已经运行的容器中打开一个新的终端窗口,以便在容器中执行命令。在 Docker 中,可以使用 docker exec 命令进入容器。例如,进入名为 myapp 的容器,可以使用以下命令:

docker exec -it myapp /bin/bash

其中, -it 参数表示进入交互模式,并打开一个新的终端窗口。 /bin/bash 表示进入容器后执行的命令,这里是打开一个新的 Bash 终端。在进入容器后,可以在容器中执行各种命令,如查看文件、修改配置文件等。

4.5、容器导入和导出

Docker 容器导入和导出是指将容器及其文件系统导出为一个压缩文件,或将一个压缩文件导入为 Docker 容器的过程。
容器导出可以用于备份容器或迁移容器到其他机器上。容器导入可以用于创建一个新的容器,或者将容器恢复到之前的状态。
容器导出可以使用 docker export 命令。例如,将名为 mycontainer 的容器导出为一个 tar 文件,可以使用以下命令:

docker export mycontainer > mycontainer.tar

容器导入可以使用 docker import 命令。例如,将名为 mycontainer.tar 的 tar 文件导入为一个名为 myimage 的 Docker 镜像,可以使用以下命令:

docker import mycontainer.tar myimage

导入后,可以使用 docker run 命令创建一个新的容器,例如:

docker run -it myimage /bin/bash

这将创建一个新的容器,并进入容器的交互式终端。

4.6、强制停止容器

可以使用 docker stop 命令来停止容器。例如,停止名为 mycontainer 的容器,可以使用以下命令:

docker stop mycontainer

如果容器无法正常停止,可以使用 docker kill 命令来强制停止容器。例如,强制停止名为 mycontainer 的容器,可以使用以下命令:

docker kill mycontainer

注意,使用 docker kill 命令会直接终止容器进程,可能会导致数据丢失或其他问题,应该尽量避免使用。

4.7、清理停止的容器

可以使用 docker container prune 命令来清理停止的容器。这个命令会删除所有已经停止的容器,释放占用的系统资源。例如,可以使用以下命令清理停止的容器:

docker container prune

在执行命令之前,可以使用 docker container ls -a 命令来列出所有容器,确认哪些容器已经停止。执行 docker container prune 命令后,所有已经停止的容器都会被删除,无法恢复,请谨慎使用。

4.8、容器别名及操作

在 Docker 中,可以为容器设置别名,方便对容器进行操作。以下是设置容器别名及常用操作的命令:

  1. 为容器设置别名
docker rename [容器ID或容器名] [新别名]
  1. 启动容器
docker start [容器ID或容器名]
  1. 停止容器
docker stop [容器ID或容器名]
  1. 重启容器
docker restart [容器ID或容器名]
  1. 进入容器
docker exec -it [容器ID或容器名] /bin/bash
  1. 查看容器日志
docker logs [容器ID或容器名]
  1. 删除容器
docker rm [容器ID或容器名]

通过为容器设置别名,可以方便地对容器进行操作,避免了频繁输入容器ID或容器名的麻烦。

4.9、容器错误日志

在 Docker 中,可以通过查看容器的错误日志来定位和解决容器运行中的问题。以下是查看容器错误日志的命令:

docker logs [容器ID或容器名]

该命令会输出容器的标准输出和标准错误信息。如果容器运行中出现了错误,可以通过查看错误日志来定位问题所在。可以使用以下命令来查看容器最近的错误日志:

docker logs --tail [行数] [容器ID或容器名]

其中, --tail 参数用于指定要查看的日志行数。例如,要查看容器最近的 10 行错误日志,可以使用以下命令:

docker logs --tail 10 [容器ID或容器名]

通过查看容器错误日志,可以快速定位和解决容器运行中的问题,提高容器的稳定性和可靠性。

5、Docker 仓库

5.1、公有仓库

公有仓库是指可以供用户免费使用的 Docker 镜像仓库,用户可以在其中存储和分享自己的 Docker 镜像。Docker 官方提供了 Docker Hub 公有仓库,其中包含了大量的 Docker 镜像,用户可以通过搜索和下载这些镜像来快速部署和运行应用程序。除了 Docker Hub,还有一些其他的公有仓库,如 Google Container Registry、AWS Elastic Container Registry 等。用户也可以自己搭建私有仓库,用于存储和管理自己的 Docker 镜像。使用公有仓库可以方便地获取和分享 Docker 镜像,提高了应用程序的可移植性和可伸缩性。

1.Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:阿里云的加速器
https://help.aliyun.com/document_detail/60750.html

2.网易加速器:http://hub-mirror.c.163.com

3.Docker官方中国加速器:https://registry.docker-cn.com

4.ustc 的镜像:https://docker.mirrors.ustc.edu.cn

5.2、私有仓库

私有仓库是指用户自己搭建的 Docker 镜像仓库,用于存储和管理自己的 Docker 镜像。相比于公有仓库,私有仓库更加安全和可控,用户可以完全掌控自己的镜像,避免了因为公有仓库的镜像被篡改或者存在漏洞而导致的安全问题。私有仓库可以部署在本地服务器或者云服务器上,用户可以根据自己的需求进行扩容和优化。Docker 官方也提供了 Docker Registry 作为私有仓库的解决方案,用户可以在其中搭建自己的私有仓库。使用私有仓库可以提高应用程序的安全性和可控性,适用于一些对安全性要求比较高的企业或者组织。
1. 安装 Docker Registry

Docker Registry 是 Docker 官方提供的镜像仓库,可以用来搭建私有仓库。可以通过以下命令来拉取 Docker Registry 镜像:

docker pull registry

2. 运行 Docker Registry 容器

可以通过以下命令来运行 Docker Registry 容器:

docker run -d -p 5000:5000 --name registry registry

其中, -p 5000:5000 表示将容器内部的 5000 端口映射到主机的 5000 端口, --name registry 表示指定容器的名称为 registry。

3. 配置 Docker 客户端

在使用私有仓库时,需要在 Docker 客户端中配置私有仓库的地址。可以通过以下命令来配置:

echo '{"insecure-registries":["<私有仓库地址>:<端口号>"]}' > /etc/docker/daemon.json

其中, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。配置完成后,需要重启 Docker 服务:

systemctl restart docker

4. 推送和拉取镜像

在配置完成后,就可以使用 docker push 命令来推送镜像到私有仓库,使用 docker pull 命令来从私有仓库拉取镜像了。例如:

docker tag <镜像名称> <私有仓库地址>:<端口号>/<镜像名称>
docker push <私有仓库地址>:<端口号>/<镜像名称>
docker pull <私有仓库地址>:<端口号>/<镜像名称>

其中, <镜像名称> 表示要推送或拉取的镜像名称, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。

1686494501743.jpg

💕💕 本文由激流创作,原创不易,感谢支持
💕💕喜欢的话记得点赞收藏啊

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
19天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
164 77
|
27天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
27天前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
11天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
36 3
docker push推送自己搭建的镜像
|
5天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
24 4
|
15天前
|
Docker 容器
|
20天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
66 3
|
27天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
54 9
|
5天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
48 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
11天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
35 3
实战~如何组织一个多容器项目docker-compose