学习内容总结来自B站UP主"遇见狂神说"的Docker教学视频: https://www.bilibili.com/video/BV1og4y1q7M4
Docker命令
1. 查看docker版本
docker version
显示客户端和服务端的各种版本信息
2. 查看docker信息
docker info
显示更加详细的docker信息, 比如容器和镜像的个数, 系统内核, 网络连接, CPU等等, 可以理解为虚拟机的系统信息
3. 查看帮助命令
# 查看docker总共有那些命令即命令简介 docker --help # 查看具体命令的可选参数等用法 docker 命令名称 --help
镜像命令(image)
1. 查看本地的所有镜像
docker images
可选参数为:
(root@Aliyun-Alex:~)# docker images --help Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images Options: -a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet Only show numeric IDs
2. 搜索docker hub上的镜像
docker search image_name
# 例如:
docker search mysql
使用过滤参数
如只想要stars大于3000的结果:
docker search mysql -f=stars=3000
3. 从docker hub下载镜像
# 下载最新版 docker pull mysql # 下载指定版本 docker pull mysql:5.7
4. 删除本地镜像
docker rmi -f 镜像名称或者ID # 如 docker rmi mysql docker rmi -f 镜像名称或者ID 镜像名称或者ID 镜像名称或者ID # 删除多个镜像用空格隔开 docker rmi -f $(docker images -q) # 将括号中搜索到的镜像全部删除
容器命令(container)
有了镜像才能创建容器, 可以理解为: 镜像就是类, 容器就是类的实例对象
这里我们先下载centos镜像: docker pull centos
1. 创建容器并启动
docker run [可选参数] image # 常用参数 --name="容器名称" 给容器命名, 如centos01, centos02等等 -d 后台方式运行容器 -it 使用交互方式运行, 进入容器终端 -p 指定容器的端口 -p 主机端口:容器端口 -p ip:主机端口:容器端口 -p 容器端口 容器端口 -P 随机指定端口
测试启动并进入centos容器
docker run -it centos
可以看到主机名称变成了一串数字(这串数字就是容器的ID), 路径也变成了根目录/, 这就是进入了centos容器
但是由于centos镜像只是留下了centos系统最基础的必需资源, 所以体积小, 但是功能可能不太完善, 一些命令也没有, 如vim, wget等
2. 退出容器
exit # 停止容器的运行
Ctrl+p+q # 不停止容器
docker attach # 容器ID, 进入运行中容器的终端
3. 查看正在运行的容器
docker ps docker ps -a # 查看所有容器, 包括已经停止运行了的容器
docker ps -n=? # 显示最近的n个容器
docker ps -q # 只显示容器编号
4. 删除容器
docker rm -f 容器名称或者ID # 如 docker rm mysql
docker rm -f 容器名称或者ID 容器名称或者ID 容器名称或者ID # 删除多个容器用空格隔开
docker rm -f $(docker ps -q) # 将括号中搜索到的容器全部删除
5. 启动和停止容器
docker start 容器id # 启动停止的容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止正在运行的容器 docker kill 容器id # 强制杀死正在运行的容器
6. 后台启动容器
docker run -d 镜像名
# 如 docker run -d centos
该命令会返回一个容器ID, 但是运行 docker ps 时发现该容器并不在运行, 而是刚启动就停止了
原因是因为docker容器后台运行时, 必须要有一个对应的前台进程, 若这里加上(-it)那么就会启动一个前台进程, 若没有前台进程那么docker的机制就会自动把这个容器停止, 可以理解为垃圾回收
7. 查看日志
docker log -tf 容器ID Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
8. 查看容器中的进程信息
docker top 容器ID
9. 查看容器的信息
docker inspect 容器ID
10. 进入正在运行的容器
# 方式一 docker exec -it 容器ID /bin/bash # 方式二 docker attach 容器ID
上述两者命令的区别是:
docker exec : 进入容器后开启一个新的终端
docker attach : 进入容器正在执行的终端, 不会开启新的终端
11. 从容器内拷贝文件到主机上
docker cp 容器ID:要拷贝的文件路径 本机目的路径
# 如: docker cp 16bd39b136a3:root/copy_test.py /home
12. 将容器打包成新的镜像
docker commit -a "作者信息" -m "提交备注信息" 容器ID 目标镜像名:[TAG]