0.帮助命令
docker version # 显示 docker的版本信息docker info # 显示 docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令
帮助文档的地址: https://docs.docker.com/reference/
1.镜像命令
docker search
从Docker Hub查找镜像
语法
docker search [OPTIONS] TERM
OPTIONS说明:
- —automated :只列出 automated build类型的镜像;
- —no-trunc :显示完整的镜像描述;
- -s :列出收藏数不小于指定值的镜像。
实例
从Docker Hub查找所有镜像名包含mysql,并且收藏数大于3000的镜像
参数说明: NAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 OFFICIAL: 是否 docker 官方发布 stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。 AUTOMATED: 自动构建。
docker pull
从镜像仓库中拉取或者更新指定镜像
语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS说明:
- -a :拉取所有 tagged 镜像
- —disable-content-trust :忽略镜像的校验,默认开启
实例

[root@iZbp1g1c3fleilvpwl6240Z ~]# docker pull javaUsing default tag: latest # 如果不写tag, 默认就是latestlatest: Pulling from library/java5040bd298390: Pull complete # 分层下载, docker iamge的核心 联合文件系统fce5728aad85: Pull complete76610ec20bf5: Pull complete60170fec2151: Pull completee98f73de8f0d: Pull complete11f7af24ed9c: Pull complete49e2d6393f32: Pull completebb9cdec9c7f3: Pull completeDigest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d # 签名Status: Downloaded newer image for java:latestdocker.io/library/java:latest # 真实地址
docker images
查看所有本地主机上的镜像
语法
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS说明:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- —digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- —format :指定返回值的模板文件;
- —no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。

解释
REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的ID CREATED 镜像的创建时间 SIZE 镜像的大小
docker rmi
docker rmi : 删除本地一个或多少镜像。
语法
docker rmi [OPTIONS] IMAGE [IMAGE...]docker rmi -f 容器 id #删除指定的容器docker rmi -f 容器 id 容器 id 容器 id 容器id #删除多个容器docker rmi -f $(docker images-aq) #删除全部的容器
OPTIONS说明:
- -f :强制删除;
- —no-prune :不移除该镜像的过程镜像,默认移除;

docker push
将本地的镜像上传到镜像仓库,要先登陆dcoker login到镜像仓库
语法
docker push [OPTIONS] NAME[:TAG]
OPTIONS说明:
- —disable-content-trust :忽略镜像的校验,默认开启

docker save
docker save : 将指定镜像保存成 tar 归档文件。
语法
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
- -o :输出到的文件。

docker load
导入使用 docker save 命令导出的镜像
语法
docker load [OPTIONS]
OPTIONS 说明:
- —input , -i : 指定导入的文件,代替 STDIN。
- —quiet , -q : 精简输出信息。

2.容器命令
docker run
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 start/stop/restart
docker start :启动一个或多个已经被停止的容器 docker stop :停止一个运行中的容器 docker restart :重启容器

docker rm
docker rm :删除一个或多个容器。
OPTIONS说明:
- -f :通过 SIGKILL 信号强制删除一个运行中的容器。
- -l :移除容器间的网络连接,而非容器本身。
- -v :删除与容器关联的卷。
docker rm $(docker ps -a -q) # 删除所有已经停止的容器docker rm -f db01 db02 # 强制删除容器 db01、db02docker rm -l db # 移除容器 nginx01 对容器 db01 的连接,连接名 dbdocker rm -v nginx01 # 删除容器 nginx01, 并删除容器挂载的数据卷

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

输出详情介绍: CONTAINER ID: 容器 ID。 IMAGE: 使用的镜像。 COMMAND: 启动容器时运行的命令。 CREATED: 容器的创建时间。 STATUS: 容器状态。 状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。 NAMES: 自动分配的容器名称。 列出最近创建的5个容器信息。
退出容器
exit # 直接容器停止并退出 Ctrl + p + q # 容器不停止退出
docker logs
查看日志
docker logs -f -t —tail num 容器
1.编写一段shell脚本 docker run -d centos /bin/sh -c “while true; do echo yuanzi; sleep 1 ; done”
显示日志
-tf # 显示日志 —tail number # 要显示日志的数量

docker top
查看容器中的进程信息 
docker inspect
docker inspect : 获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS说明:
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- —type :为指定类型返回JSON
[root@iZbp1g1c3fleilvpwl6240Z ~]# docker inspect centos:latest[{"Id": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566","RepoTags": ["centos:latest"],"RepoDigests": ["centos@sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd"],"Parent": "","Comment": "","Created": "2020-08-10T18:19:49.837885498Z","Container": "3b04ecd9fb2d3f921f12d858edf5f3a6aa7c36c8e1e6f74bd32555fd4d7f7da2","ContainerConfig": {"Hostname": "3b04ecd9fb2d","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"/bin/bash\"]"],"ArgsEscaped": true,"Image": "sha256:69587a438b2c9b803db8ed4f6e6b5abce25a6b8ec2583a394807cf82bfd23693","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20200809","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS"}},"DockerVersion": "18.09.7","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],"ArgsEscaped": true,"Image": "sha256:69587a438b2c9b803db8ed4f6e6b5abce25a6b8ec2583a394807cf82bfd23693","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {"org.label-schema.build-date": "20200809","org.label-schema.license": "GPLv2","org.label-schema.name": "CentOS Base Image","org.label-schema.schema-version": "1.0","org.label-schema.vendor": "CentOS"}},"Architecture": "amd64","Os": "linux","Size": 215102299,"VirtualSize": 215102299,"GraphDriver": {"Data": {"MergedDir": "/var/lib/docker/overlay2/b279edc1cbf8437c5373fcba8705b334bc2e804bbac41ad75e7f06ab95bb7dbb/merged","UpperDir": "/var/lib/docker/overlay2/b279edc1cbf8437c5373fcba8705b334bc2e804bbac41ad75e7f06ab95bb7dbb/diff","WorkDir": "/var/lib/docker/overlay2/b279edc1cbf8437c5373fcba8705b334bc2e804bbac41ad75e7f06ab95bb7dbb/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:291f6e44771a7b4399b0c6fb40ab4fe0331ddf76eda11080f052b003d96c7726"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}]
进入容器
1.docker exec
在运行的容器中执行命令
语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
通过 exec 命令对指定的容器执行 bash:
2.docker attach
docker attach :连接到正在运行中的容器。
要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。
数据卷 volume
作用: 实现宿主机系统与容器之间的文件共享
数据卷使用:
a. 自定义数据卷目录
docker run -d -p 8080:8080 —name tomcat01 -v 宿主机目录(绝对路径):容器内目录 tomcat:8.0-jre8
docker run -d -p 8080:8080 —name tomcat01 -v /root/apps/:/usr/local/tomcat/webapps tomcat:8.0-jre8
b.自动数据卷目录
docker run -d -p 8080:8080 —name tomcat01 -v aa:/usr/local/tomcat/webapps tomcat:8.0-jre8
注意:
1.aa代表一个数据卷名字, 名称可以随便写,docker在不存在时自动创建这个数据卷同时自动映射宿主机中某个目录
2.同事在启动容器时会将aa对应容器中全部内容复制到aa映射目录中
3.将容器打包成新的镜像
docker commit -m “描述信息” -a “作者信息” (容器ID或者名称) 打包的镜像名称:标签
docker commit -m “deploy” test project -a “chenyn” 91ffc62 test-tomcat:1.0
4.将镜像备份出来docker save 镜像名称:Tag -o 文件名
docker save test-tomcat:1.0 -o test-tomcat-1.0.tar
docker load -i test-tomcat-1.0.tar
