【云原生】一看就会的Docker镜像管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【云原生】一看就会的Docker镜像管理

Docker image镜像管理

docker images 是docker的三大组件之一。 docker把下载的 images 存储到docker主机上,如果一个 image 不 在主机上,docker会从一个镜像仓库下载,默认的仓库是 DOCKER HUB 公共仓库。 接下来将介绍更多关于 docker images 的内容,包括: • 使用和管理本地主机上的 images • 创建一个基础的 images • 上传 images 到 docker hub (公共images仓库) • 列出本地主机上已经存在的 images

1.显示出当前本机上的images

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   21 months ago   13.3kB
信息:
repository:来自于那个仓库
tag:镜像的版本 latest为最新版
image id:镜像ID
size:镜像大小
选项:
-a:显示所有的镜像
-f:根据指定格式输出
-q:只显示出镜像的ID

2.获取下载一个镜像

当我们需要使用这个镜像时,就可以直接启动了,无需来进行下载,在进行创建启动

[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   21 months ago   13.3kB
centos        latest    5d0da3dc9764   21 months ago   231MB

3.查找images

docker的一个特点是很多人因为各种不同的用途创建了各种不同的images,它们都被上传到了docker hub共有仓库上,我们们可以在docker hub的网站上来查找它们。使用docker search命令。

[root@localhost ~]# docker search mysql
NAME                            DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14242     [OK]
mariadb                         MariaDB Server is a high performing open sou…   5443      [OK]
percona                         Percona Server is a fork of the MySQL relati…   615       [OK]
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   825       [OK]
bitnami/mysql                   Bitnami MySQL Docker Image                       90                   [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…   51
信息
name:镜像的名字
description:镜像的描述信息
stars:星数(该image的欢迎程度)
official:是否是官方创建

4.查看镜像的详细信息

查看信息,完整的ID号, repotags当前镜像的版本,镜像的大小等信息信息,或者使用docker images --no-trunc

[root@localhost ~]# docker inspect centos
[
    {
        "Id": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "RepoTags": [
            "centos:latest"
        ],
        "RepoDigests": [
            "centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-09-15T18:20:05.184694267Z",
        "Container": "9bf8a9e2ddff4c0d76a587c40239679f29c863a967f23abf7a5babb6c2121bf1",
        "ContainerConfig": {
            "Hostname": "9bf8a9e2ddff",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/bin/bash\"]"
            ],
            "Image": "sha256:f5b050f177fd426be8fe998a8ecf3fb1858d7e26dff4080b29a327d1bd5ba422",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "sha256:f5b050f177fd426be8fe998a8ecf3fb1858d7e26dff4080b29a327d1bd5ba422",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 231219825,
        "VirtualSize": 231219825,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/892d8942ea7d54cab5feb69ad45adfd509b48e8fc0684adc7b0b0df8ed54cfb2/merged",
                "UpperDir": "/var/lib/docker/overlay2/892d8942ea7d54cab5feb69ad45adfd509b48e8fc0684adc7b0b0df8ed54cfb2/diff",
                "WorkDir": "/var/lib/docker/overlay2/892d8942ea7d54cab5feb69ad45adfd509b48e8fc0684adc7b0b0df8ed54cfb2/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
或者
[root@localhost ~]# docker images --no-trunc
REPOSITORY    TAG       IMAGE ID                                                                  CREATED         SIZE
hello-world   latest    sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412   21 months ago   13.3kB
centos        latest    sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6   21 months ago   231MB

5.创建我们自己的image

有的时候别人的镜像不一定适合我们,这个时候就需要我们自定义的来创建镜像,来进行创建使用

1.创建一个容器,安装一个httpd服务
[root@localhost ~]# docker run -it centos /bin/bash
[root@cda2197c7f3b /]# yum -y install nginx
2.退出将当前容器做为镜像
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                            PORTS     NAMES
cda2197c7f3b   centos    "/bin/bash"   13 minutes ago   Exited (130) About a minute ago             nice_williams
74ad543dbd55   centos    "/bin/bash"   13 minutes ago   Exited (0) 13 minutes ago                   sharp_cohen
[root@localhost ~]# docker commit -m "add httpd" -a 'test' cda2197c7f3b centos8:httpd
sha256:8ccee778a96a46b0a815f24844df5a6fd5eb7c164a11f9cce2077b1a6bf647bf
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centos8       httpd     8ccee778a96a   7 seconds ago   280MB
hello-world   latest    feb5d9fea6a5   21 months ago   13.3kB
centos        latest    5d0da3dc9764   21 months ago   231MB
3.使用当前创建的镜像进行创建容器
[root@localhost ~]# docker run -it centos8:httpd
[root@7b703e1a038a /]# rpm -q httpd
httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
4.创建镜像命令
[root@localhost ~]# docker commit --help
Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Aliases:
  docker container commit, docker commit
Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message
  -p, --pause            Pause container during commit (default true)
格式:
docker commit [选项] 容器名称或者ID [镜像名字:[标签]]
选项:
-a:作者,联系方式
-c:创建的镜像应用dockerfile指令
-m:描述信息
-p:在创建镜像时,自动停止容器,默认为true

6.上传到个人仓库docker hub中

1.将要打包的镜像进行更改为仓库的用户名和仓库名称
[root@localhost ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED             SIZE
conquerbug/test   v1        8ccee778a96a   About an hour ago   280MB
centos8           httpd     8ccee778a96a   About an hour ago   280MB
hello-world       latest    feb5d9fea6a5   21 months ago       13.3kB
centos            latest    5d0da3dc9764   21 months ago       231MB
[root@localhost ~]# docker tag 8ccee778a96a conquerbug/test:v1
2.进行登录docker hub账号并上传
[root@localhost ~]# docker login
Login with your Docker ID 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.
Username: conquerbug
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
Login Succeeded
[root@localhost ~]# docker push conquerbug/test:v1
The push refers to repository [docker.io/conquerbug/test]
6ef790a7eff0: Pushing [==================================================>]  48.89MB
74ddd0ec08fa: Pushing [==================================================>]  238.6MB

7.存出镜像和载入镜像

1.将两个镜像进行打包
[root@localhost ~]# docker save -o centos-hello.tar hello-world centos
2.删除这两个镜像
[root@localhost ~]# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
[root@localhost ~]# docker rmi centos
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
3.重新载入镜像
[root@localhost ~]# docker load --input centos-hello.tar
e07ee1baac5f: Loading layer [==================================================>]  14.85kB/14.85kB
Loaded image: hello-world:latest
74ddd0ec08fa: Loading layer [==================================================>]  238.6MB/238.6MB
Loaded image: centos:latest
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   21 months ago   13.3kB
centos        latest    5d0da3dc9764   21 months ago   231MB

8.删除镜像和容器

1.删除镜像
[root@localhost ~]# docker rmi hello-world
Untagged: hello-world:latest
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a
2.删除容器
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS                     PORTS     NAMES
7b703e1a038a   centos8:httpd   "/bin/bash"   2 hours ago   Exited (0) 2 hours ago               mystifying_pare
cda2197c7f3b   centos          "/bin/bash"   2 hours ago   Exited (130) 2 hours ago             nice_williams
74ad543dbd55   centos          "/bin/bash"   2 hours ago   Exited (0) 2 hours ago               sharp_cohen
[root@localhost ~]# docker rm -f 7b703e1a038a cda2197c7f3b 74ad543dbd55
7b703e1a038a
cda2197c7f3b
74ad543dbd55
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

三,Docker Container容器管理

1.创建容器

1.前台运行创建

注意:下面是创建容器并进入容器,当exit退出容器后,容器就不在运行,需要使用-d选项,后台运行

[root@localhost ~]# docker run -i -t centos:7 /bin/bash
[root@4af91bbbc860 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 03:19 pts/0    00:00:00 /bin/bash
root         15      1  0 03:19 pts/0    00:00:00 ps -ef
[root@4af91bbbc860 /]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                     PORTS     NAMES
4af91bbbc860   centos:7   "/bin/bash"   7 minutes ago   Exited (0) 8 seconds ago             naughty_meitner
选项:
-name:指定容器名称,默认是随机名字
-i:创建一个交互式容器
-t:为容器分配一个伪终端,绑定到容器的标准输入上
-d:后台运行容器
2.后台运行创建
[root@localhost ~]# docker run -itd --name centos7-1 centos:7 /bin/bash
08b6e56e54f2d645601cd71020a922c7b5f916725401b7408e358a782a965284
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS                          PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   2 seconds ago   Up 2 seconds                              centos7-1
4af91bbbc860   centos:7   "/bin/bash"   8 minutes ago   Exited (0) About a minute ago       naughty_meitner
选项:
-name:指定容器名称,默认是随机名字
-i:创建一个交互式容器
-t:为容器分配一个伪终端,绑定到容器的标准输入上
-d:后台运行容器

2.查看容器

[root@localhost ~]# docker ps --help
Usage:  docker ps [OPTIONS]
List containers
Aliases:
  docker container ls, docker container list, docker container ps, docker ps
Options:
  -a, --all             Show all containers (default shows just running)  #查看所有容器 默认之查看在运行的容器
  -f, --filter filter   Filter output based on conditions provided
      --format string   Format output using a custom template:
                        'table':            Print output in table format
                        with column headers (default)
                        'table TEMPLATE':   Print output in table format
                        using the given Go template
                        'json':             Print in JSON format
                        'TEMPLATE':         Print output using the given Go
                        template.
                        Refer to https://docs.docker.com/go/formatting/ for
                        more information about formatting output with templates
  -n, --last int        Show n last created containers (includes all      #查看多少行容器
                        states) (default -1)
  -l, --latest          Show the latest created container (includes all states)   #查看最近创建的容器
      --no-trunc        Don't truncate output   #显示完整ID号
  -q, --quiet           Only display container IDs    #只显示ID号
  -s, --size            Display total file sizes  #显示容器大小
1.查看所有的容器
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                      PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   27 minutes ago   Up 27 minutes                         centos7-1
4af91bbbc860   centos:7   "/bin/bash"   35 minutes ago   Exited (0) 28 minutes ago             naughty_meitner
2.查看容器的ID

注:可以用于删除容器时,过滤

[root@localhost ~]# docker ps -q
08b6e56e54f2

3.管理容器

1.开启容器
[root@localhost ~]# docker start 4af91bbbc860
4af91bbbc860
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   30 minutes ago   Up 30 minutes             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   38 minutes ago   Up 1 second               naughty_meitner
2.关闭容器
[root@localhost ~]# docker stop 08b6e56e54f2
08b6e56e54f2
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                        PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   30 minutes ago   Exited (137) 10 seconds ago             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   39 minutes ago   Up 53 seconds                           naughty_meitner
3.强制关闭容器
[root@localhost ~]# docker kill 4af91bbbc860
4af91bbbc860
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                        PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   31 minutes ago   Exited (137) 51 seconds ago             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   39 minutes ago   Exited (137) 1 second ago               naughty_meitner
4.重启容器
[root@localhost ~]# docker restart 4af91bbbc860
4af91bbbc860
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                            PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   32 minutes ago   Exited (137) About a minute ago             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   40 minutes ago   Up 7 seconds                                naughty_meitner

4.查看容器信息

1.查看所有信息
[root@localhost ~]# docker inspect 4af91bbbc860
2.查看容器IP
[root@localhost ~]# docker inspect -f '{{.NetworkSettings.IPAddress}}' 4af91bbbc860
172.17.0.2
3.查看PID
[root@localhost ~]# docker inspect -f '{{.State.Pid}}' 4af91bbbc860
72633

5.进入容器

注意:进入当前的伪终端,如果exit退出之后,当前的容器也会随之关闭,因为当前只存在一个终端。

1.进入当前的伪终端中
[root@localhost ~]# docker attach 4af91bbbc860
[root@4af91bbbc860 /]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                             PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   42 minutes ago   Exited (137) 11 minutes ag     o             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   50 minutes ago   Exited (0) 5 seconds ago                     naughty_meitner
2.创建一个新的伪终端并进入
[root@localhost ~]# docker exec -it 4af91bbbc860 /bin/bash
[root@4af91bbbc860 /]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                        PORTS     NAMES
08b6e56e54f2   centos:7   "/bin/bash"   43 minutes ago   Exited (137) 13 minutes ago             centos7-1
4af91bbbc860   centos:7   "/bin/bash"   51 minutes ago   Up 28 seconds                           naughty_meitner

6.导出\导入容器

1.导出容器

将当前容器导出到本地

[root@localhost ~]# docker export 4af91bbbc860 > centos7.tar
[root@localhost ~]# ls
anaconda-ks.cfg  centos7.tar  original-ks.cfg
2.导入容器

将当前容器导入为竟镜像,然后再基于这个镜像创建容器

[root@localhost ~]# cat centos7.tar | docker import - centos7:test
sha256:d0373e6a70dc1413fa992d11c40b9260fe742db22196429835d33b9cc3eb2135
[root@localhost ~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED          SIZE
centos7   

7.删除容器

1.删除单个容器
[root@localhost ~]# docker rm -f 4af91bbbc860
选项:
-f:强制删除
2.删除多个容器
[root@localhost ~]# docker rm -f 4af91bbbc860  08b6e56e54f2
3.删除全部容器
[root@localhost ~]# docker rm -f  $(docker ps -aq)
2.导入容器

将当前容器导入为竟镜像,然后再基于这个镜像创建容器

[root@localhost ~]# cat centos7.tar | docker import - centos7:test
sha256:d0373e6a70dc1413fa992d11c40b9260fe742db22196429835d33b9cc3eb2135
[root@localhost ~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED          SIZE
centos7   

7.删除容器

1.删除单个容器
[root@localhost ~]# docker rm -f 4af91bbbc860
选项:
-f:强制删除
2.删除多个容器
[root@localhost ~]# docker rm -f 4af91bbbc860  08b6e56e54f2
3.删除全部容器
[root@localhost ~]# docker rm -f  $(docker ps -aq)
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
115 2
|
2月前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
15小时前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
43 28
|
1月前
|
Docker 容器
将本地的应用程序打包成Docker镜像
将本地的应用程序打包成Docker镜像
|
19天前
|
NoSQL PHP MongoDB
docker push推送自己搭建的镜像
本文详细介绍了如何搭建和复盘两个Web安全挑战环境:人力资源管理系统和邮件管理系统。首先,通过Docker搭建MongoDB和PHP环境,模拟人力资源管理系统的漏洞,包括nosql注入和文件写入等。接着,复盘了如何利用这些漏洞获取flag。邮件管理系统部分,通过目录遍历、文件恢复和字符串比较等技术,逐步绕过验证并最终获取flag。文章提供了详细的步骤和代码示例,适合安全研究人员学习和实践。
44 3
docker push推送自己搭建的镜像
|
23天前
|
Docker 容器
|
1月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
59 9
|
1月前
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
51 4
|
2月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。