帮助命令

查看docker版本:docker version
显示 Docker 系统信息:docker info
查看命令帮助:docker —help

镜像命令

docker search

docker search [OPTIONS] TERM,从Docker Hub仓库查找镜像。
OPTIONS说明:
—automated :只列出 automated build类型的镜像;
—no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。
例:docker search nginx

docker pull

从镜像仓库中拉取或者更新指定镜像
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
-a :拉取所有 tagged 镜像
—disable-content-trust :忽略镜像的校验,默认开启
不写tag默认拉取:latest 镜像
例:docker pull nginx

docker images

image.png
列出本地镜像
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

docker rmi

删除本地一个或多少镜像。
语法:docker rmi [OPTIONS] IMAGE [IMAGE…]
OPTIONS说明:
-f :强制删除;
—no-prune :不移除该镜像的过程镜像,默认移除;

容器命令

docker ps

列出容器
语法:docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
—format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
—no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

列出所有在运行的容器信息:
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND … PORTS NAMES
09b93464c2f7 nginx:latest “nginx -g ‘daemon off” … 80/tcp, 443/tcp myrunoob
96f7f14e99ab mysql:5.6 “docker-entrypoint.sh” … 0.0.0.0:3306->3306/tcp mymysql
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。

docker run

创建一个新的容器并运行一个命令
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
—name=”nginx-lb”: 为容器指定一个名称;
—dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
—dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=”ritchie”: 设置环境变量;
—env-file=[]: 从指定文件读入环境变量;
—cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
—net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
—link=[]: 添加链接到另一个容器;
—expose=[]: 开放一个端口或一组端口;
—volume , -v: 绑定一个卷

例:docker run —name mynginx -d nginx:latest

后台容器操作

新建centos容器docker run -it centos, 会处于伪终端状态,可以用以下方式退出:
exit,容器停止退出
ctrl+P+Q,容器不停止退出
#使用镜像centos:latest以后台模式启动一个容器
docker run -d centos

问题:然后docker ps -a 进行查看, 会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如
service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
解决:
docker run -d centos /bin/sh -c “while true;do echo hello zzyy;sleep 2;done”
image.png

容器映射

使用 -p 时指定端口映射。
例:docker -d -p 8888:8080 tomcat
访问localhost:8888

容器状态

docker start 容器ID或者容器名:启动一个或多个已经被停止的容器
docker stop 容器ID或者容器名:停止一个运行中的容器
docker restart 容器ID或者容器名:重启容器
docker kill 容器ID或者容器名:强制杀掉一个运行中的容器。

docker rm

删除一个或多个容器。
语法:docker rm [OPTIONS] CONTAINER [CONTAINER…]
OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
实例强制删除容器 db01、db02:
docker rm -f db01 db02

docker logs

获取容器的日志
语法:docker logs [OPTIONS] 容器ID或名称
OPTIONS说明:
-f : 跟踪日志输出
—since :显示某个开始时间的所有日志
-t : 显示时间戳
—tail :仅列出最新N条容器日志
例:docker logs -f mynginx

docker top

查看容器中运行的进程信息,支持 ps 命令参数。
语法:docker top [OPTIONS] CONTAINER [ps OPTIONS]
容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。

docker inspect

获取容器/镜像的元数据。
语法:docker inspect [OPTIONS] NAME|ID [NAME|ID…]
OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
—type :为指定类型返回JSON。
例:docker inspect mysql:5.6

docker exec

在运行的容器中执行命令,是在容器中打开新的终端,并且可以启动新的进程
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
在容器 mynginx 中开启一个交互模式的终端:
runoob@runoob:~$ docker exec -i -t mynginx /bin/bash
root@b1a0703e41e7:/#

docker attach

连接到正在运行中的容器。直接进入容器启动命令的终端,不会启动新的进程
语法:docker attach [OPTIONS] CONTAINER

docker cp

用于容器与主机之间的数据拷贝。
语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS说明:
-L :保持源目标中的链接

实例
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/

docker commit

从容器创建一个新的镜像。
语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
实例
将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
runoob@runoob:~$ docker commit -a “runoob.com” -m “my apache” a404c6c174a2 mymysql:v1