Docker的镜像和容器管理 - Go语言中文社区

Docker的镜像和容器管理


一、镜像管理

Docker镜像是一个Docker的可执行文件,其中包含了运行应用程序所需要的代码、依赖库、环境变量、配置文件等等。

(1)搜索镜像

$ docker search [镜像名称]

例如:搜索nginx镜像。

$ docker search nginx

界面输入如下:

zhongliwen@zhongliwen-virtual-machine:~$ docker search nginx
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                             Official build of Nginx.                        11466               [OK]
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   1602                                    [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   715                                     [OK]
bitnami/nginx                     Bitnami nginx Docker Image                      66                                      [OK]
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   62
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   45                                      [OK]
nginx/nginx-ingress               NGINX Ingress Controller for Kubernetes         20
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   16                                      [OK]
arm64v8/nginx                     Official build of Nginx.                        16
nginxdemos/hello                  NGINX webserver that serves a simple page co…   14                                      [OK]
blacklabelops/nginx               Dockerized Nginx Reverse Proxy Server.          12                                      [OK]
crunchgeek/nginx-pagespeed        Nginx with PageSpeed + GEO IP + VTS + more_s…   12
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   10
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   9
webdevops/nginx                   Nginx container                                 8                                       [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   5                                       [OK]
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  5
1science/nginx                    Nginx Docker images that include Consul Temp…   4                                       [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter                       4
mailu/nginx                       Mailu nginx frontend                            3                                       [OK]
pebbletech/nginx-proxy            nginx-proxy sets up a container running ngin…   2                                       [OK]
travix/nginx                      NGinx reverse proxy                             2                                       [OK]
centos/nginx-110-centos7          Platform for running nginx 1.10 or building …   0
wodby/nginx                       Generic nginx                                   0                                       [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          0                                       [OK]

可以看到与nginx相关的镜像都会被查询出来。其中第1列代表镜像名称;第2列代表镜像的描述;第3列代表下载次数;第4列代表是否官方镜像;第5列代表是否自动运行。

(2)从远程仓库中获取镜像

$ docker pull [镜像名称]

例如:获取nginx镜像。

$ docker pull nginx

执行命令后,镜像文件就会保存在/var/lib/docker目录下。
在这里插入图片描述
可以通过/lib/var/docker/image/overlay2/repositories.json文件查看相关的镜像信息。

(3)查看镜像

$ docker images 
$ docker images [镜像名称]
$ docker image ls [镜像名称]

第1行查看所有镜像;第2、3行查看指定镜像。
在这里插入图片描述
其中,第1列代表镜像名称;第2列代表镜像版本标签;第3列代表镜像ID;第4列代表镜像的创建时间;第5列代表镜像的大小。

(4)重命名

$ docker tag [老镜像名称]:[老镜像版本] [新镜像名称]:[新镜像版本]

例如:目前本地仓库有一个nginx镜像。现在我们要把它的名称改为“nginx-zhong”,版本改为“v1.0”。
在这里插入图片描述
执行命令:

$ docker tag nginx:latest nginx-zhong:v1.0

执行完成后,执行docker images命令查看所有镜像,界面如下图所示:
在这里插入图片描述

(5)删除镜像

$ docker rmi [命令参数] [镜像ID]
$ docker rmi [命令参数] [镜像名称]:[镜像版本]

例如:删除上面创建的nginx-zhong镜像。

$ docker rmi -f nginx-zhong

其中,参数-f代表强制删除。

如果要删除所有镜像,可以执行以下命令:

$ docker rmi -f $(docker images -q)

(6)镜像导入
镜像导入就是把已经下载好的镜像保存在本地。

$ docker save [命令参数] [导出镜像名称] [本地镜像名称]

例如:导出nginx-zhong镜像。

$ docker save -o nginx.tar nginx-zhong

其中,参数-o指定导出的文件名和路径。

(7)镜像导出
镜像导出就是把本地镜像导入到本地镜像库中。

$ docker load < [本地镜像文件]

例如:把本地的nginx.tar导入到本地镜像库中。

$ docker load < nginx.tar

(8)查看镜像的历史

$ docker history [镜像名称]:[版本号]
$ docker history [镜像ID]

例如:查看nginx镜像的历史。

$ docker history nginx

运行效果如下图所示:
在这里插入图片描述
其中,第1列表示编号;第2列表示创建时间,第3列表示基于哪些命令创建;第4列表示镜像大小;第5列表示评论信息。

(9)查看镜像的详细信息

$ docker inspect [命令参数] [镜像名称]:[版本号]
$ docker inspect [命令参数] [镜像ID]

例如:查看nginx镜像的详情。

$ docker inspect nginx

(10)根据模版创建镜像
第一步:登录网站。
https://download.openvz.org/template/precreated/

第二步:找到一个镜像模版下载。下载完成后,把压缩文件拷贝到指定位置。
第三步:执行命令。

$ cat 模版文件.tar | docker import - [镜像名称]

例如:把ubuntu-16.04-x86_64.tar.gz模版文件导入到镜像中,镜像名称为ubuntu-zhong。

$ cat ubuntu-16.04-x86_64.tar.gz | docker import - ubuntu-zhong

二、容器管理

(1)查看容器

docker ps [-a]

其中,参数-a表示查看所有启动过的容器。如果没有指定该参数,那么只能够查询已启动的容器。

运行效果如下图所示:
在这里插入图片描述
其中,第1列是容器ID;第2列表示该容器是基于哪个镜像创建的;第3列表示运行镜像使用了哪些命令;第4列表示容器创建时间;第5列表示容器的启动状态;第6列表示该容器占用的端口号;第7列是容器名称,如果启动容器时候没有指定名称,系统就会为该容器自动指定一个随机的名称。

(2)创建待启动容器

$ docker create [参数命令] 依赖镜像 [容器命令] [命令参数]

例如:创建一个nginx容器,并指定名称为ngix-1。

$ docker create -it --name nginx-1 nginx ls -a

创建成功后,系统回显刚创建的容器ID。
在这里插入图片描述

(3)启动容器
方式一:启动刚创建的容器。

$ docker start [容器名称]或[容器ID]

例如:启动nginx-1容器。

$ docker start -a nginx-1

其中,如果指定了参数a,那么启动容器后就会直接进入容器的Shell控制台。

方式二:创建新容器并启动。

$ docker run [命令参数] [镜像名称]  [容器命令] [命令参数]

例如:使用镜像nginx创建并启动一个新的容器,并指定名称为nginx-2。

$ docker run --rm --name nginx-2 nginx /bin/echo "hello nginx"

其中,如果指定了-rm参数,那么当容器退出运行后,系统自动删除该容器。

方式三:以守护进程方式启动容器。

$ docker run -d [镜像名称]

例如:使用nginx镜像以后台进程方式启动一个新容器。

 $ docker run -d nginx

启动成功后,可以通过docker ps命令查看到该容器的状态。

(4)容器的暂停和取消暂停

$ docker pause [容器名称] 或 [容器ID]
$ docker unpause [容器名称] 或 [容器ID] 

(5)重启容器

$ docker restart [容器名称] 或 [容器ID]

例如:

$ docker restart -t 20 nginx-3

其中,参数-t指定多少秒之后启动容器,默认为10s。

(6)关闭容器

$ docker stop [容器名称] 或 [容器ID]

例如:

$ docker stop nginx-3

(7)终止容器

$ docker kill [容器名称] 或 [容器ID]

(8)删除容器

$ docker rm  [容器名称] 或 [容器ID]

如果要删除一个正在运行的容器,那么需要在rm后面加上-f参数。

删除所有容器:

$ docker rm -f $(docker ps -a -q)

参数q用于获取容器的ID。

(9)进入容器的shell

方式一:创建并进入容器。

$ docker run --name [容器名称] -it [镜像名称] [执行命令]

例如:

$docker run -it --name ngnix-4 nginx /bin/bash

运行效果:
在这里插入图片描述
其中,参数-i表示让容器的标准输入保持打开;-t表示让docker分配一个伪终端,并绑定到容器的标准输入。如果要退出容器的Shell,可以输入exit或Ctrl + D退出。

方式二:启动并进入容器。

$ docker start -a [容器名称] 或 [容器ID]

方式三:进入一个运行中的容器。

$ docker exec -it [容器ID] /bin/bash

值得注意的是,该命令只能够进入一个运行中的容器,否则会提示错误。
在这里插入图片描述

(10)基于容器创建镜像

$ docker commit -m '评论' -a '作者' [容器ID] [新镜像名称]:[版本号]

例如:基于容器nignx-5创建一个新的镜像,该镜像的名称为“nginx-test”。

$ docker commit -m 'make image nginx-zhong' -a 'Mr Zhong' nginx-5 nginx-test:v1.0

创建成功后,可以通过docker images命令查看已经创建的镜像。
在这里插入图片描述
(11)查看容器的运行日志

$ docker logs [容器名称] 或 [容器ID]

(12)查看容器的详细信息

$ docker inspect [容器名称] 或 [容器ID]

(13)查看容器占用的端口

$ docker port [容器名称] 或 [容器ID]

(14)重命名

$ docker rename [容器名称] 或 [容器ID] [新名称]
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhongliwen1981/article/details/90614012
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢