文章目录
官方帮助文档地址
一些复杂命令,推荐直接去看官方文档,讲的特别详细
https://docs.docker.com/reference/
帮助命令
# 显式docker的版本信息
docker version
# 显式docker系统信息,包括镜像和容器的数量
docker info
# 查看对应命令的帮助文档
docker [命令] --help
# 查看容器占用资源的情况,cpu 内存,IO,network等
docker stats
镜像(仓库)命令
# 默认显式,所有拉去到本地的顶级镜像
docker images
# 只显示本地顶级镜像的ID
docker images -q
# 根据镜像(仓库)的名称从网络中央仓库(docker hub)上查询
docker search [mirrors_name]
# 根据镜像名称,从网络仓库拉取镜像(默认下载最新版的)
docker pull [mirror_name]
# 拉取指定版本的镜像,tag就是版本号(注意,必须是hub上支持存在的版本号,才能拉取下来)
docker pull [mirror_name:tag] 例如:docker pull mysql:5.7.34
# 删除本地指定的镜像,可以根据镜像ID或者镜像名称
docker rmi -f [image ID|respositoy]
# 删除多个容器,根据ID,以空格分隔
docker rmi -f images1_ID images2_ID
# 删除本地所有的镜像,$()是把里面的命令当做参数使用
docker rmi -f $(docker images -aq)
tag命令
作用:
- 给本地镜像打一个标记(tag),可将其归入某一仓库,有点像 Git 里面给不同时段写的代码打不同的 tag 一样
语法:
docker tag source_image[:tag] target_image[:tag]
例子:
实际使用场景
- 当镜像配置到一定程度时,想打个 tag 进行记录当前版本,可以打个 V1
- 再次更新镜像时,又可以打个 V2
- 当是最新版本待上传时,可以不打默认就是 latest 最新
- 这样不仅能保存最新版本的镜像,也能保存历史版本的镜像,方便新版本镜像出问题时进行版本回溯
(build)创建镜像
docker build
:通过build
命令加载Dockerfile文件创建自己的自定义镜像
# -f docker默认加载名为Dockerfile的文件,如果名称不是Dockerfile需要使用-f指定文件名称
# -t 设置镜像的名称
# . 代表从当前目录下加载Dockerfile文件,必不可少的
docker build [-f dockerfile_name] -t image_name[:tag] .
commit
docker commit
:根据容器的更改创建新映像
# -a, --author 为新提交的镜像署名 name<email> 例如:liuhao<123456@qq.com>
# -c, --change 添加附属Dockerfile命令,多个使用空格隔开
# -m, --message 设置提交镜像的相关信息
# -p, --pause 停止容器的运行,在创建新容器时,默认true
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker push
docker push
:向docker hub上推送自己的镜像,当然也可以向自己的阿里云私有镜像仓库推送(推送之前,先要登录你的docker账户)
docker push name[:tag]
save (保存镜像到本地)
# -o 指定保存的路径
docker save -o path image [image]
load(从本地文件加载镜像)
# -i 从 tar 存档文件中读取镜像
docker load -i file_path
容器命令
注意:有了镜像之后才可以创建容器
运行容器
docker run [option] image
,运行容器命令,这个指令有很多作用详情可以参考官方文档
docker run [option] image [command]
# options[参数说明]
--name="name" 给容器设置名字,一般我们从同一份镜像启动多个容器,所以就要设置名字区分
-d 指定容器以后台方式运行
-it 使用交互方式运行,进入容器查看内容,-i: 交互式操作。-t: 终端。
-p 指定容器的端口,设置端口映射,例如: -p 80:8080将容器的8080端口映射到外部主机的80端口上
-P 随机指定端口
-m 设置容器可使用的内存上限
案例:在docker里面启动一个centos虚拟机
docker run -it centos /bin/bash
其中,-it
代表以交互的方式,在终端上运行,/bin/bash
则是附带的命令,启动centos的bash程序
2. docker exec [options] image
:这个指令也可以启动容器,而且启动容器后,使用exit
从容器中退出,容器依然会保持运行
启动容器
docker start [容器ID]
:启动容器,根据容器ID启动容器docker restart [容器ID]
:重启容器,根据容器ID
停止容器
docker stop [容器ID]
:通过容器ID,停止正在运行的容器docker kill [容器ID]
:根据容器ID,强制杀掉正在运行的容器’
查看容器的元数据信息
docker inspect [容器的名称/ID]
查看日志,根据对应容器的名称或ID
docker [option] logs [container_name]
可选参数:
--detial
:显示提供给日志的额外详细信息-f, --follow
:跟踪日志输出--since [string]
:显式特定时间戳之后的日志输出-n, --tail [string]
:显式最新的日志,指定显式多少行-t, --timestamps
:显式时间戳--until string
:显式特定时间戳之前的日志
查看容器里面的进程信息
docker top [容器名称/ID]
查看运行中的容器
# 查看所有运行中的容器
docker ps
# 查看所有运行过的容器
docker ps -a
# 显式最近创建的容器,-n=2代表显式的数量
docker ps -l [-n=2]
# 只显示容器的编号
docker ps -q
# 筛选显式的容器,详情可以看官网示例
docker ps -f [params]
进入正在运行的容器
-
docker exec -it [容器ID] [command]
:根据正在运行的容器ID,进入容器,-it
代表以交互的模式进入(推荐使用) -
docker attach [容器ID]
:根据指定ID进入容器内,(这个会进入到容器正在执行的终端,而且退出时,容器会自动停止)例:使用
docker exec
进入mysql的终端,然后从mysql容器退出,mysql容器依然在运行
从容器中拷贝文件(文件夹)
# src_path:就是docker容器内部要拷贝的目标路径
# dest_path:就是外部存放拷贝文件的路径
docker cp [options] 容器名称/id:src_path dest_path
拷贝文件(文件夹)到容器内部
docker cp [option] src_path 容器名/id:dest_path
退出容器
exit
:退出容器,在容器里面输入exit就可以退出容器,容器也会停止运行
演示使用docker exec
命令后再退出容器,容器会继续保持运行
Ctrl+P+Q
:以快捷键的方式退出容器,容器也会保持运行
删除容器
# 根据容器的ID删除容器,加-f代表强制(force)删除
docker rm -f [容器ID]
# 删除所有的容器
docker rm -f $(docker ps -q)