共计 3446 个字符,预计需要花费 9 分钟才能阅读完成。
一. 帮助命令
-
docker version
: 查看 Docker 版本信息 -
docker info
: 查看 Docker 信息 -
docker --help
: 查看帮助信息
二. 登入命令
docker login [参数] [镜像仓库 URL]
- 参数
--username=xxx
: 指定阿里云用户名(我用的是阿里云) - passwd : 是创建仓库时的密码
- url : 仓库链接
三. 获取镜像
- 格式 :
docker pull [镜像仓库 URL]/[命名空间名称]/[仓库名称]:[镜像版本号]
- 示例 :
docker pull docker.io/library/busybox:latest
URL | docker.io |
---|---|
命名空间 | library |
仓库名称 | busybox |
版本号 | latest |
- 简化 :
docker pull busybox:latest
(.....)
三. 查看镜像信息
docker images [参数]
/docker images ls [参数]
列出本地主机上的镜像
- 选项说明
REPOSITORY | 仓库名字 |
---|---|
TAG | 版本号(latest: 表示最新版本) |
IMAGE ID | 镜像 ID |
CREATED | 镜像创建时间到现在 |
SIZE | 镜像文件的体积 |
🔰同一仓库源可以有多个 "TAG",代表这个仓库源的不同个版本,我们使用 " REPOSITORY:TAG" 来定义不同的镜像
🔰如果你不指定一个镜像的版本标签,例如你只使用 "ubuntu","docker" 将默认使用 "ubuntu:latest" 镜像
- 参数说明
-a
: 显示所有镜像, 包括临时镜像
-q
: 只显示镜像 ID
--digests
: 显示镜像再要信息
--no-trunc
: 显示完整的镜像信息
四. 为镜像打 TAG
- 格式 :
docker tag [原镜像仓库 url]/[原镜像命名空间]/[原镜像仓库名称]:[版本号] [新镜像仓库 url]/[新镜像命名空间]/[新镜像仓库名称]:[版本号]
- 示例 :
docker tag busybox:latest registry.cn-shanghai.aliyuncs.com/python16-shawn/busybox:v1
五推送镜像
- 格式 :
docker push [镜像仓库 URL]/[命名空间名称]/[仓库名称]:[版本号]
- 示例 :
docker push registry.cn-shanghai.aliyuncs.com/python16-shawn/busybox:v1
再看看我的阿里云镜像仓库
六. 获取镜像详细信息
- 格式 :
docker inspect [镜像 ID] / [镜像名称:版本号]
- 示例 :
docker inspect busybox:latest
-f
: 用 "golang" 语言模板语法获取镜像相关信息
七. 查看历史镜像
- 格式 :
docker history [镜像名字: 镜像版本号] / [镜像 ID]
- 示例 :
docker history dc3bacd8b5ea
八. 搜索镜像
- 格式 :
docker search [所搜索的镜像名称] [参数]
- 示例 :
docker search python
- 列表参数
NAME | 仓库名称 |
---|---|
DESCRIPTION | 描述 |
STARS | 收藏个数 |
OFFICIAL | 是否是官方镜像 |
AUTOMATED | 是否是自构建的镜像 |
- 命令行参数
-f
: 过滤 示例: docker search python -f stars=300
(收藏 300 的)
-s
: 列出搜藏不小于指定值的镜像 : 示例 : docker search python -s 300
--automated
: 只列出 automated build 类型的镜像
--limit
: 显示查询条数
九. 删除和清理镜像
-
格式 :
docker rmi [镜像名称:版本号] / [镜像 ID]
-
-f
: 强制删除
1. 删除单个示例
docker rmi -f bf756fb1ae65
2. 删除多个
docker rmi -f [镜像名 1:TAG] [镜像名 2:TAG]...
3. 删除全部
docker rmi -f $(docker images -qa)
4. 清理镜像
- 格式 :
docker image prune [参数]
- 参数 :
-a
(all) 清理所有没有被使用的镜像 -f
: 强制
十. 保存镜像
- 格式 :
docker commit [参数] [容器 ID] / [容器名称: 版本号]
- 参数:
-a | 指定作者 |
---|---|
-m | 简介 |
-p | 保存镜像时, 镜像暂停运行 |
十一. 运行一个容器
前提 : 有镜像才能创建容器, 可以先下载一个: docker pull nginx
- 格式 :
docker run [参数] [镜像名称 / 镜像 ID] [执行的命令(默认执行指定的命令)]
- 参数:
-d | 以守护进程的方式运行 |
---|---|
-p | 指定端口映射(格式:宿主主机端口: 容器向外暴露的端口) |
-P | 随机端口映射 |
--name | 指定容器的名称(同一台宿主主机上的 docker 名称不能重复) |
--rm | 当一个容器结束了它的生命周期,就立即删除 |
-v | 映射存储卷(可以映射文件及文件夹) |
-i | 打开标准输出(通常与 t 连用) |
-t | 创建一个伪终端 |
-e | 在容器内设置一个环境变量 |
- 示例
"-d","-p"
docker run -d -p 8899:80 nginx:1.19.2
"-P"
docker run -d -P nginx:1.19.2
"--name"
docker run -d --name nginx_name -P nginx:1.19.2
"--rm"
docker run -d --rm --name nginx_rm nginx:1.19.2
"-v"
docker run -d -v /root/test:/usr/share/nginx/html nginx:1.19.2
"-e"
docker run -d -e NGINX_NAME=nginx nginx:1.19.2
- 本地查看
- 浏览器查看
ps : docker 当中至少有一个应用程序运行在前台
十一. 容器相关命令
1. 列出当前所有正在运行的容器
docker ps
- 参数:
-a | 列出当前所有正在运行的容器 + 历史上运行过的 |
---|---|
-l | 显示最近创建的容器 |
-n | 显示最近 n 个创建的容器 |
-q | 静默模式,只显示容器 ID |
2. 退出容器
exit
: 容器停止退出Ctrl+P+Q
: 容器不停止退出
3. 启动容器
docker start [容器 ID / 容器名]
4. 重启容器
docker restart [容器 ID / 容器名]
5. 停止容器
docker stop [容器 ID / 容器名]
docker stop -f $(docker ps -qa)
(所有)
6. 强制停止容器
docker kill [容器 ID / 容器名]
7. 刪除已停止的容器
docker rm [容器 ID]
docker rm -f $(docker ps -qa)
十二. 导入、导出成镜像文件
1. 针对容器进行导出导入
export
: 将容器保存为镜像import
: 将 export 导出的包导入为镜像 -(可自定义镜像名字)- 格式 :
docker export [容器名或 ID] > [压缩包名称]
- 格式 :
docker import [压缩包名称] [自定义镜像名称]:[版本号]
ps : 通过 docker run -d -P nginx_song:v22 nginx -g 'daemon off;'
运行导入的 (由容器导出的镜像)
2. 针对镜像进行导出导入
save
: 保存镜像, (当使用镜像 ID 保存镜像,导入时没有镜像名称)load
: 导入镜像, 不能自定义名称, save 保存的更完整- 格式 :
docker save [镜像名或 ID] > [压缩包名称]
- 注意 : 如果使用 ID 导出, 导入时没有镜像名和标签, 只有 \<none>
- 打包多个格式 :
docker save -o [压缩包名称] [镜像名称或 ID ...]
- 格式 :
docker load < [压缩包名称]
十三. 进入容器(常用)
1.attach
- 格式 :
docker attach [容器名或 ID]
- 通过管道, 连接容器内 PID=1 的进程
- 至少有一个进程运行在前台
- 会随着退出而停止容器的运行, 并且无法交互输入
2.exec
(官方推荐使用)
- 格式 :
docker exec [参数] [容器名或 ID] [命令]
- 进入示例 :
docker exec -it 327ebc44385f sh
- 相当于在容器里面执行了一个命令
3.nsenter
- 创建一个管道, 链接容器上
- 配合
docker inspect
来使用 - 格式示例 :
nsenter --target $(docker inspect -f {{.State.Pid}} nginxv1 ) --mount --uts --ipc --net --pid
4.ssh
- 在容器里面安装一个 sshd 服务
十四. 复制
1. 从容器内复制文件到宿主机
- 格式 :
docker cp [容器 ID: 容器内文件路径] 宿主主机路径
2. 从宿主机复制文件到容器
- 格式 :
docker cp 宿主主机路径 [容器 ID:容器内文件路径]
十五. 查看容器日志
- 格式 :
docker logs [容器名称 / ID]
- 示例 :
dicker logs e5dcae424f57
正文完