# docker version //查看docker版本号
# docker info //查看docker的系统信息,包含镜像和容器的数量
# docker 命令 --help //帮助命令
# docker images //显示所有本地主机上的镜像
# docker images -a //显示所有镜像
# docker images -q //只显示镜像id

# docker search 镜像名 //搜索镜像
# docker search mysql //搜索mysql镜像
# docker search mysql -filter=STARS=2000 //搜索mysql收藏大于2000的镜像

# docker pull 镜像名 //下载最新版本镜像
# docker pull 镜像名:版本号 //指定版本下载
注意:有的镜像不能直接删除,因为有通过他创建的容器,要先删除容器。
# docker rmi 镜像id或镜像仓库名 //删除指定镜像
# docker rmi 镜像id或镜像仓库名 $(docker images -aq) //删除全部镜像
注意:必须在你的 Dockerfile 文件目录下执行该命令,不在的话就加 -f
# docker build [可选参数] //下载最新版本镜像
| 可选参数 | 功能 |
|---|---|
| -f | 指定Dockerfile文件路径 |
| -t | 指定构建的镜像名和tag ,例:# docker build -t 镜像名:tag |
//根据容器导出镜像,相对来说文件较小,不能多个镜像合成一个文件
docker export 容器id或容器名字 > image.tar
//根据镜像导出镜像,相对文件较大
docker save 镜像id或镜像名字 > image.tar
//多个镜像导出成一个文件
docker save -o image.tar 镜像1 镜像2
//镜像导入,可以对镜像重命名
docker import 自定义镜像名字 < image.tar
镜像导入,不能重命名
docker load < image.tar
docker export 的应用场景: 主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
docker save 的应用场景: 如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。
前提:有镜像才可以创建容器(同时也要注意命令的顺序 - -name尽量在最后)
# docker run [可选参数] 镜像名 //创建并启动容器
# docker run -it 镜像名 /bin/bash //启动并进入容器
| 可选参数 | 作用 |
|---|---|
| - -name | 自定义容器名字 例:- -name 定义的容器名字 |
| -d | 以后台方式启动 |
| -it | 使用交互方式启动,进入容器查看内容 |
| -p | 指定容器端口,例:-p 8090:8080(8090是对外端口,8080是容器端口) |
| -P | 随机端口 |
| -v | 挂载目录,双向绑定。 docker容器内的卷,没有指定主机目录情况下都在 /var/lib/docker/volume/xxx/-data 指定路径挂载:-v 主机目录 容器目录 (例如:/var/log/:/var/log/) 匿名挂载:-v 容器目录 具名挂载:-v 自定卷名:容器卷 |
| - -mac-address=自定义的mac地址 | 指定mac地址启动 |
# docker volume ls //查看所有的挂载卷(匿名挂载是一串乱码,而具名挂载是你自定义的名字)
# docker run -d -P --name nginx001 -v /etc/nginx nginx //匿名挂载

默认是rw(可读可写)
# docker run -d -P --name nginx001 -v ikun:/etc/nginx:ro nginx //具名挂载(ro只针对容器,只可读)
# docker run -d -P --name nginx001 -v ikun:/etc/nginx:rw nginx //具名挂载(rw在容器内既可读又可写)

# docker volume inspect 卷名 //查看这个卷

# docker ps //显示正在运行的容器
# docker ps -a //显示全部的容器
# docker ps -q //只显示容器id
# exit //容器停止并退出
ctrl + p + q //退出容器并不停止
# docker rm 容器id //删除指定容器,不能删除正在运行的容器
# docker rm -f 容器id //强制删除包含正在运行的容器
# docker rm $(docker ps -aq) //删除全部容器
# docker start 容器id //启动容器
# docker restart 容器id //重启容器
# docker stop 容器id //停止当前正在运行的容器
# docker kill 容器id //强制停止当前容器
# docker cp 容器id或容器名称:容器路径 宿主机路径 //将容器的文件复制到宿主机
# docker cp 宿主机路径 容器id或容器名称:容器路径 //将宿主机的文件复制到容器
# docker logs 容器id //查看容器日志
# docker top 容器id //查看容器进程信息
# docker inspect 镜像id //查看容器的元数据
# docker exec -it 容器id /bin/bash //进入正在运行的容器(开启一个新的终端)
# docker attach 容器id //进入正在运行的容器(不开启一个新的终端)
https://www.runoob.com/docker/docker-build-command.html
- FROM //基础镜像
- MAINTAINER //镜像的维护者 姓名 + 邮箱
- RUN //镜像构建时执行的命令
- ADD //将宿主机的文件拷贝进镜像
- WORKDIR //设置当前工作目录
- VOLUME //设置挂载目录(可以将容器目录挂载到主机上,实现同步)
- EXPOSE //指定对外端口
- CMD //指定这个容器启动的时候要运行的命令(只有最后一个会生效,可被替代)
- ENTRYPOINT //指定这个容器启动的时候要运行的命令(可以追加)
- COPY //将我们的文件拷贝到镜像中
- ENV //构建的时候设置环境变量
构建镜像的时候使用 CMD 指令


构建镜像的时候使用 ENTRYPPOINT 指令


相信你们从上面的图片就能看出差别了。