docker version docker info docker --help // 可以看到可用的命令及解释
镜像命令
- 列出本机中的所有镜像
docker images [OPTIONS]
OPTIONS 说明:
-a 列出本地所有的镜像(含中间映射层)
-q 只显示镜像ID
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
这些参数可以使用--help查看,如 docker images --help
- 查找镜像
docker search 镜像名称
- 拉取镜像
docker pull 镜像名称[:TAG]
TAG没写,则默认拉取latest
- 删除镜像
删除镜像 docker rmi 镜像名称/镜像id
删除单个 docker rmi [OPTIONS] 镜像ID
删除多个 docker rmi [OPTIONS] 镜像名1:TAG 镜像名2:TAG
删除全部 docker rmi -f $(docker images -qa)
OPTIONS 说明:
-f Force removal of the image
--no-prune Do not delete untagged parents
- 创建镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求,或者需要修改镜像时,我们可以通过以下两种方式对镜像进行更改。
1、从已经创建的容器中更改镜像,并且提交这个镜像
docker commit -m=""提交的描述信息 -a="作者" 容器ID 要创建的目标镜像名:[标签名]
docker commit 提交副本使之成为一个新的镜像
2、使用 Dockerfile 指令来创建一个新的镜像
docker build 命令用于使用 Dockerfile 创建镜像。
docker build -t guiji/myCentos:v1 . // 使用当前目录的 Dockerfile 创建镜像,标签为 guiji/myCentos:v1
// 注意最后有个点,默认使用当前路径下的名为"Dockerfile"的文件进行构建
docker build github.com/creack/docker-firefox // 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像
docker build -f /opt/dockerTest/Dockerfile . // 通过 -f Dockerfile 文件的位置
-f :指定要使用的Dockerfile路径;
-t: 镜像的名字及标签;
- 镜像构建历史
docker history 镜像ID/镜像名 # 需要显示完整信息,加上--no-trunc=true
- 更新镜像
在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit 命令来退出这个容器。
通过命令 docker commit 来提交容器副本
- 推送镜像到仓库
docker push
阿里云开发者云平台
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories先创建命名空间,然后创建仓库名
docker login registry.cn-hangzhou.aliyuncs.com
从阿里云拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/mycentos:[镜像版本号]
推送镜像:// 阿里云容器控制台,基本信息页面会有介绍 (输入阿里云账户全名,密码是镜像仓库的密码,不是阿里云登录密码!)
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/命名空间/mycentos:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/命名空间/mycentos:[镜像版本号]
- 导出镜像
docker export
- 导入镜像
docker import
容器命令
- 查看容器
docker ps [OPTIONS] // 查看当前运行中的容器 docker ps -a // 查看所有容器
- 运行容器
docker run --name demo_nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
docker run -itd centos /bin/bash
docker run -d centos // 这样的话创建容器之后会立即关闭,docker ps -a进行查看,会发现容器已经退出。因为Docker容器后台运行,就必须有一个前台进程。
说明: --name 给启动的容器指定一个名称,不指定的话会随机生一个 -i 以交互模式运行容器,通常与-t同时使用 -t 为容器重新分配一个伪输入终端,通常与-i同时使用 -d 后台运行容器,并返回容器ID,也即启动守护式容器 -p 8080:80 (小写p)宿主机端口:Docker容器内端口
-P: (大写P)随机端口映射
/bin/bash: 放在镜像名后的是命令,这里我们希望有个交互式的shell。因此用的是 /bin/bash
-v 数据卷挂载 主机文件路径:容器内文件路径:ro (:ro 代表只读)
-e 环境变量 key=value 形式
- 进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach [OPTIONS] CONTAINER
docker exec [OPTIONS] CONTAINER // 推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
如 docker exec -it 6daa936f0564 /bin/bash
- 退出容器
exit // 容器停止退出;docker exec进入时,exit退出容器,容器不会停止
ctrl+P+Q // 容器不停止退出
- 查看容器日志
docker logs -f -t --tail 3 容器ID -t 是加入时间戳 -f 跟随最新的日志打印 --tail 数字显示最后多少条
- 查看容器内的进程
docker top 容器ID
docker stats #查看各容器cpu、内存占用率
- 查看容器内部细节
docker inspect 容器ID // 返回的是个json格式的信息
- 文件拷贝
docker cp 容器ID:容器内路径 目的主机路径
docker cp 宿主机文件路径 容器ID:容器内路径
- 停止容器
docker stop 容器ID或容器签名(names)
docker kill 容器ID或容器签名(names) // 强制停止容器
- 启动容器
docker start 容器ID或容器签名(names)
- 重启容器
docker restart 容器ID或容器签名(names)
- 删除容器
docker rm 容器ID或者容器签名(names)
docker rm -f $(docker ps -a -q) 删除全部容器
小总结: