欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Docker

Docker

2025/4/24 15:54:19 来源:https://blog.csdn.net/Moon_Light0/article/details/147089570  浏览:    关键词:Docker

目录

一、Docker入门

1、三个基本概念

2、拉取HelloWorld镜像

二、Docker 仓库、镜像、容器详解

仓库,镜像,容器的关系

1、Docker镜像

1. 查看本地镜像列表

2.查找镜像

I.通过Docker Hub 进行查找

II.使用 docker search 命令来搜索镜像

3.拉取镜像

4.删除镜像

5.更新镜像

6.生成镜像

7.镜像标签

8.镜像导出与导入

I.镜像导出

II.镜像导入

总结:是否会覆盖?

2、容器

1.启动容器

交互式启动容器

后台运行容器

2.查看容器

3.停止与重启容器

停止

重启

4.进入容器

1. docker exec -it(推荐方式)

2. docker attach(不推荐常规使用)

5.容器导入导出

导出

导入

6.强制删除容器

7.清理已停止的容器

8.容器别名

9.容器错误日志

三、具体应用实例

1、拉取nginx镜像

2、后台运行容器,并映射端口

3、通过映射端口访问部署的应用

自定义映射端口

查看容器端口映射

1、通过docker ps 查看

2、通过docker port 查看

查看容器内部进程

获取docker 镜像、容器、卷等配置信息

与其它容器(DB容器)互联

1、容器与容器单独互联

1.创建一个新的数据库容器

2.创建应用容器并与数据库容器进行互联

2、通过创建bridge网络(推荐)

1.安装好docker后,运行如下命令创建bridge网络:docker network create testnet

2.查询到新创建的bridge testnet

3.运行容器连接到testnet网络

4.从一个容器ping另外一个容器

5.若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号> 


一、Docker入门

1、三个基本概念

  • 镜像(Image):Docker镜像(Image)里包含了已打包的应用程序及其所依赖的环境。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看作跟maven仓库作用一样,maven仓库保存项目依赖,这里仓库用来保存镜像。

2、拉取HelloWorld镜像

#拉取最新hello-world镜像
docker pull hello-world:latest#查看所有镜像
docker images

二、Docker 仓库、镜像、容器详解

仓库,镜像,容器的关系

1、Docker镜像

        当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

1. 查看本地镜像列表

docker images

REPOSITORY表示镜像的仓库源
TAG镜像版本(latest表示最新的)
IMAGE ID镜像ID
CREATED镜像创建时间
SIZE镜像大小

2.查找镜像

I.通过Docker Hub 进行查找

Explore Docker's Container Image Repository | Docker Hub

II.使用 docker search 命令来搜索镜像
docker search 镜像

我这里执行会超时,下方是网上找的成功案例

root@hcss-ecs-999c:/# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9132                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3233                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   676                                     [OK]
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   68
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   62
centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]
deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      35                                      [OK]
tutum/mysql                       Base docker image to run a MySQL database se…   34
schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   29                                      [OK]
prom/mysqld-exporter                                                              26                                      [OK]
linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   24
centos/mysql-56-centos7           MySQL 5.6 SQL database server                   19
circleci/mysql                    MySQL is a widely used, open-source relation…   18
mysql/mysql-router                MySQL Router provides transparent routing be…   14
arey/mysql-client                 Run a MySQL client from a docker container      13                                      [OK]
databack/mysql-backup             Back up mysql databases to... anywhere!         10
openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6
fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   5                                       [OK]
genschsa/mysql-employees          MySQL Employee Sample Database                  4                                       [OK]
devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   2
ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]
jelastic/mysql                    An image of the MySQL database server mainta…   1
monasca/mysql-init                A minimal decoupled init container for mysql    0
widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   0                                       [OK]
NAME镜像仓库源的名称
DESCRIPTION镜像的描述
OFFICIAL是否 docker 官方发布
STARS类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED自动构建

3.拉取镜像

docker pull 镜像
root@hcss-ecs-999c:/# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
cea172a6e83b: Pull complete 
fa811e9a869e: Pull complete 
47a2982daa21: Pull complete 
634d7076afe3: Pull complete 
aa8a3958f09f: Pull complete 
84e4e5ea3754: Pull complete 
2275c0ff11a0: Pull complete 
2792ea2d4e0e: Pull complete 
f488b2cd8494: Pull complete 
9451290759df: Pull complete 
Digest: sha256:7839322bd6c3174a699586c3ea36314c59b61b4ce01b4146951818b94aef5fd7
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
root@hcss-ecs-999c:/# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    4b2d796bebc2   2 days ago     859MB
hello-world   latest    74cc54e27dc4   2 months ago   10.1kB

4.删除镜像

docker rmi 镜像名/镜像ID
root@hcss-ecs-999c:/# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:7e1a4e2d11e2ac7a8c3f768d4166c2defeb09d2a750b010412b6ea13de1efb19
Deleted: sha256:74cc54e27dc41bb10dc4b2226072d469509f2f22f1a3ce74f4a59661a1d44602
Deleted: sha256:63a41026379f4391a306242eb0b9f26dc3550d863b7fdbb97d899f6eb89efe72

5.更新镜像

当我们在以下场景时:

  1. 你在容器中修改了配置或安装了新软件

  2. 想将当前容器状态保存为一个新镜像

  3. 以后可以直接用这个新镜像创建相同的环境

首先,运行容器

root@hcss-ecs-999c:/# docker run -it hello-world

其次,生成新的镜像副本,以此达到更新镜像

root@hcss-ecs-999c:/# docker commit -m="update test" -a="mobai" 0c859190ac7b mobai/hello-world:v1.0.1
sha256:d54b0c303fe83d39a538460485ead0ab4d017396ec8355cf7188383a2355a8d4root@hcss-ecs-999c:/# docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
mobai/hello-world   v1.0.1    d54b0c303fe8   16 seconds ago   10.1kB
mysql               latest    4b2d796bebc2   2 days ago       859MB
hello-world         latest    74cc54e27dc4   2 months ago     10.1kB
docker commit将容器的当前状态保存为一个新的镜像
-m="update test"添加提交信息(类似 git commit -m),说明这次更新的内容
-a="mobai"指定镜像的作者(author)
0c859190ac7b容器的 ID(也可以是容器名称)
mobai/hello-world:v1.0.1新镜像的仓库名(mobai/hello-world)和标签(v1.0.1)

6.生成镜像

创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

然后使用docker build生成镜像

docker build -t [镜像名]:[标签] [Dockerfile路径]

例如:

 docker build -t mobai/hello-world:v2.0.1 .
-t 指定要创建的目标镜像名
. Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

7.镜像标签

置镜像的Tag,类似于Git中tag?我们可以使用 docker tag 命令,为镜像添加一个新的标签

root@hcss-ecs-999c:/# docker tag mobai/hello-world:v1.0.1 mobai/hello-world:v1.0.2root@hcss-ecs-999c:/# docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
mobai/hello-world   v1.0.1    d54b0c303fe8   22 minutes ago   10.1kB
mobai/hello-world   v1.0.2    d54b0c303fe8   22 minutes ago   10.1kB
mysql               latest    4b2d796bebc2   2 days ago       859MB
hello-world         latest    74cc54e27dc4   2 months ago     10.1kB

注意:

  • docker tag 原镜像名称:TAG  镜像源名:新的标签名(TAG)。
  • 使用 docker images 命令可以看到,ID为d54b0c303fe8的镜像多一个v1.0.2标签。

8.镜像导出与导入

I.镜像导出
docker save > 镜像.tar 镜像ID
root@hcss-ecs-999c:/# ll-rw-r--r--   1 root root 877983232 Apr 17 16:45 mysql-latest.tar
II.镜像导入

  其中-i或者<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息    

docker load < 镜像.tar
root@hcss-ecs-999c:/# docker load < mysql-latest.tar 
Loaded image ID: sha256:4b2d796bebc27d70aca324403b4f16bca96eba549b39633c9ba55f2bc37bf85eroot@hcss-ecs-999c:/# docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
mobai/hello-world   v1.0.1    d54b0c303fe8   33 minutes ago   10.1kB
mobai/hello-world   v1.0.2    d54b0c303fe8   33 minutes ago   10.1kB
mysql               latest    4b2d796bebc2   2 days ago       859MB
hello-world         latest    74cc54e27dc4   2 months ago     10.1kB

             在 Docker 中,如果导入的镜像与已有镜像具有相同的镜像 ID,它们实际上是同一个镜像,Docker 不会重复存储,但会根据标签(tag)的情况进行不同的处理。

    总结:是否会覆盖?

    场景结果
    相同镜像 ID,不同标签新增标签,不覆盖原有镜像
    相同镜像 ID 和标签覆盖标签引用,但镜像数据不变(因为 ID 相同)
    docker load 相同镜像跳过导入,仅新增标签(如有)
    docker pull 相同镜像 ID跳过下载,提示已是最新

    可以根据场景来选择导入导出

    • 若是只想备份images,使用save、load即可
    • 若是在启动容器后,容器内容有变化,需要备份,则使用export、import

    2、容器

    1.启动容器

    交互式启动容器
    docker run -it  镜像
    -it可以连写的,表示 -i -t
    -t在新容器内指定一个伪终端或终端
    -i允许你对容器内的标准输入 (STDIN) 进行交互
    root@hcss-ecs-999c:/# docker run -it  hello-worldHello from Docker!
    This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docke

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    热搜词