一、镜像管理
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] [新名称]