参考https://www.runoob.com/docker/docker-images-command.html
一、三大概念
-
镜像(image):Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
镜像是一种文件结构。Dockerfile中的每条命令都会在文件系统中创建一个新的层次结构,文件系统在这些层次上构建起来,镜像就构建于这些联合的文件系统之上。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。 -
容器( Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
-
仓库:仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
总结的来说就是我们从仓库的镜像中实例一个个容器去运行使用,而不用考虑环境和迁移的问题。
二、 Docker 基本操作
查看类指令
- 查看docker系统信息
~$ docker info
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 2
Server Version: 18.09.5
Storage Driver: overlay2......
- 查看docke版本
~$ docker -v
Docker version 18.09.5, build e8ff056
- 查看历史镜像
语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
-f :显示满足条件的镜像;
~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 3 months ago 1.84kB
delron/elasticsearch-ik 2.4.6-1.0 095b6487fb77 12 months ago 689MB
- 查看容器
语法:docker ps [OPTIONS]
-a :显示所有的容器,包括未运行的。
-n :列出最近创建的n个容器。
-l :显示最近创建的容器。
~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c04e4bfa058e delron/elasticsearch-ik:2.4.6-1.0 "/docker-entrypoint.…" 2 hours ago Up 2 hours elasticsearch
- 查看容器的日志
语法:docker logs [OPTIONS] CONTAINER
-f : 跟踪日志输出
-t : 显示时间戳
--since :显示某个开始时间的所有日志
--tail :仅列出最新N条容器日志
~$ docker logs -f c04e
[2019-04-30 05:29:52,515][WARN ][bootstrap ] unable to install syscall filter: seccomp unavailable: your kernel is buggy and you should upgrade
[2019-04-30 05:29:52,830][INFO ][node ] [Bloodstorm] version[2.4.6], pid[1], build[5376dca/2017-07-18T12:17:44Z]......
- 参看Docker Hub内镜像
语法:docker search [OPTIONS] TERM
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。
仓库类
- 登陆
docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法: docker login [OPTIONS] [SERVER] docker loginout [OPTIONS] [SERVER]
-u :登陆的用户名
-p :登陆的密码
- 下载镜像到仓库
docker pull : 从镜像仓库中拉取或者更新指定镜像
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
- 上传本地镜像到远程仓库
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
语法:docker push [OPTIONS] NAME[:TAG]
--disable-content-trust :忽略镜像的校验,默认开启
- 从本地文件中导入镜像
docker load -i 文件名
容器生命周期管理
- 创建docker容器并运行
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
-m :设置容器使用内存最大值;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-v:目录映射,格式为主机目录:容器目录
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
- 创建容器,但不运行
用法同docker run
- 控制容器状态
docker start 容器名 :启动一个或多个已经被停止的容器
docker stop 容器名:停止一个运行中的容器
docker restart 容器名:重启容器
docker pause 容器名:暂停容器中所有的进程。
docker unpause 容器名:恢复容器中所有的进程。
- 移除运行的容器
docker kill :杀掉一个运行中的容器。
-s :向容器发送一个信号
- 删除容器
docker rm :删除一个或多个容器
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
- 在容器内执行命令
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
如:在容器 mynginx 中开启一个交互模式的终端:
runoob@runoob:~$ docker exec -i -t mynginx /bin/bash
root@b1a0703e41e7:/#