docker 技巧
容器操作
快速停止,删除容器
docker ps -qa
docker stop $(docker ps -qa)
docker rm $(docker ps -qa)
docker rm -f $(docker ps -qa)镜像操作
快速删除悬虚镜像(none:none)
docker image prune删除没有被使用的镜像
docker image prune -adocker 基础操作
docker 查看
查看系统详细信息
docker info查看版本
docker version-f :指定返回值的模板文件
docker 镜像操作
查看镜像
docker search ubuntu
docker search -f stars=10 java
#从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-f <过滤条件>:列出收藏数不小于指定值的镜像。
拉取镜像
docker pull ubuntu:20.04
docker pull java
#从Docker Hub下载java最新版镜像
docker pull -a java
#从Docker Hub下载REPOSITORY为java的所有镜像-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
导出镜像为文件
docker save -o ubuntu_20_04.tar.gz ubuntu:20.04
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
#将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档删除镜像
docker rmi ubuntu:20.04
docker rmi <id>
docker rmi -f runoob/ubuntu:v4
#强制删除本地镜像 runoob/ubuntu:v4-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除
导入镜像
docker load -i ubuntu_20_04.tar.gz
docker load < ubuntu_20_04.tar.gz--input , -i : 指定导入的文件,代替 STDIN
--quiet , -q : 精简输出信息
登陆/登出仓库
docker login -u <用户名> -p <密码> [仓库地址]
docker logout镜像打标签
docker tag ubuntu:20.04 ubuntu:v1
docker tag ubuntu:15.10 runoob/ubuntu:v3
#将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像上传镜像
docker push ubuntu:v3
docker push myapache:v1
#上传本地镜像myapache:v1到镜像仓库中--disable-content-trust :忽略镜像的校验,默认开启
1. 登录阿里云Docker Registry
$ docker login --username=aliyun3030452364 registry.cn-hangzhou.aliyuncs.com用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/cncqtm/cloud:[镜像版本号]3. 将镜像推送到Registry
$ docker login --username=aliyun3030452364 registry.cn-hangzhou.aliyuncs.com$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/cncqtm/cloud:[镜像版本号]$ docker push registry.cn-hangzhou.aliyuncs.com/cncqtm/cloud:[镜像版本号]请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEregistry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
查看镜像创建历史
docker history
docker history runoob/ubuntu:v3
#查看本地镜像runoob/ubuntu:v3的创建历史使用Dockerfile创建镜像
docker build
docker build -t runoob/ubuntu:v1 .
#使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1
docker build github.com/creack/docker-firefox
#使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像
#也可以通过 -f Dockerfile 文件的位置:
docker build -f /path/to/a/Dockerfile .
#在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:
docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMDdocker 容器操作
创建容器
创建一个新的容器但不启动它
docker create ubuntu:20.04
docker create --name myrunoob nginx:latest
#使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob运行容器
docker run -it ubuntu:20.04
#常用参数:
#-i: 以交互模式运行容器,通常与 -t 同时使用;
#-P: 随机端口映射,容器内部端口**随机**映射到主机的端口(大P)
#-p: 指定端口映射,格式为:**主机(宿主)端口:容器端口**(小p)
#-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
#--name="nginx-lb": 为容器指定一个名称;
#--volume , -v: 绑定一个卷
docker run --name mynginx -d nginx:latest
#使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
docker run -P -d nginx:latest
#使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -p 80:80 -v /data:/data -d nginx:latest
#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
#绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上
#使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令:
docker run -it nginx:latest /bin/bash
root@b8573233d675:/# -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-d: 后台运行容器,并返回容器ID
-i: 以交互模式运行容器,通常与 -t 同时使用
-P: 随机端口映射,容器内部端口随机映射到主机的端口(大P)
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口(小p)
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name="nginx-lb": 为容器指定一个名称
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致
-h "mars": 指定容器的hostname
-e username="ritchie": 设置环境变量
--env-file=[]: 从指定文件读入环境变量
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行
-m :设置容器使用内存最大值
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
--link=[]: 添加链接到另一个容器
--expose=[]: 开放一个端口或一组端口
--volume , -v: 绑定一个卷
查看容器
docker ps -a-a :显示所有的容器,包括未运行的
-f :根据条件过滤显示的内容
--format :指定返回值的模板文件
-l :显示最近创建的容器
-n :列出最近创建的n个容器
--no-trunc :不截断输出
-q :静默模式,只显示容器编号
-s :显示总的文件大小
容器启停/重启
docker start <id>
#启动一个或多个已经被停止的容器
docker stop <id>
#停止一个运行中的容器
docker restart <id>
#重启容器进入容器
docker exec -it <id> bash-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开,(简单来说就是可以交互,否则不能交互)
-t :分配一个伪终端
删除容器
必须是停止状态的,除非给-f强制删除
docker rm <id>-f :通过 SIGKILL 信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :删除与容器关联的卷
杀死容器
杀掉一个运行中的容器,无法停止的时候用
docker kill <id>
docker kill -s KILL <id>
- -s :向容器发送一个信号
暂停启动容器进程
docker pause <id>
#暂停容器中所有的进程
docker unpause <id>
#恢复容器中所有的进程容器导出为镜像
docker export 517fda889b6b > ubuntu.tar.gz
docker export 517fda889b6b -o ubuntu.tar.gz-o :将输入内容写到文件
镜像导入为容器
docker import ubuntu.tar.gz ubuntu:v1
#注意如果是用启动的容器导出的包启动时需要跟上bash(命令终端)
#docker run -itd ubuntu:v1 bash获取容器/镜像的元数据
docker inspect ubuntu:20.04-f :指定返回值的模板文件
-s :显示总的文件大小
--type :为指定类型返回JSON
查看容器中运行的进程信息
docker top <id>连接到正在运行中的容器
docker attach <id>从服务器获取实时事件
docker events
docker events --since="1467302400"
#显示docker 2016年7月1日后的所有事件
docker events -f "image"="mysql:5.6" --since="1467302400"
#显示docker 镜像为mysql:5.6 2016年7月1日后的相关事件-f :根据条件过滤事件
--since :从指定的时间戳后显示所有事件
--until :流水时间显示到指定的时间为止
获取容器日志
docker logs <id>
docker logs 2d23e03ebd0f
docker logs --since="2016-07-01" --tail=10 mynginx
#查看容器mynginx从2016年7月1日后的最新10条日志-f : 跟踪日志输出(常用)
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志(常用)
阻塞运行直到容器停止,然后打印出它的退出代码
docker wait <id>列出指定的容器的端口映射
docker port <id>显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等
docker stats <id>
docker stats
#列出所有在运行的容器信息--all , -a :显示所有的容器,包括未运行的
--format :指定返回值的模板文件
--no-stream :展示当前状态就直接退出了,不再实时更新
--no-trunc :不截断输出
docker 常用命令
#info|version
docker info #显示docker的系统信息,包括镜像和容器的数量
docker version #显示docker的版本信息。
#帮助命令
docker 命令 --help #帮助命令
#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
#退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名 #后台启动命令
docker logs #查看日志
docker top 容器id #查看容器中进程信息ps
docker inspect 容器id #查看镜像的元数据
docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach # 进入容器正在执行的终端
docker cp 容器id:容器内路径 主机目的路径 #从容器内拷贝到主机上docker 命令大全
docker attach #连接到正在运行中的容器
docker build #使用 Dockerfile 创建镜像
docker builder #管理builds
docker builder prune #清除build缓存
docker checkpoint #管理checkpoints
docker checkpoint create #从正在运行的容器创建检查点
docker checkpoint ls #列出容器的检查点
docker checkpoint rm #删除指定的检查点
docker commit #从容器创建一个新的镜像
docker config #管理Docker配置
docker config create #创建配置文件
docker config inspect #查看配置文件信息
docker config ls #显示docker里已经保存得配置文件
docker config rm #删除配置文件
docker container #管理容器
docker container prune #删除所有已停止的容器
docker context #管理contexts
docker context create #创建一个上下文
docker context export #将上下文导出到tar或kubecconfig文件中
docker context import #从tar或zip文件导入上下文
docker context inspect #在一个或多个上下文上显示详细信息
docker context ls #列出上下文
docker context rm #删除一个或多个上下文
docker context update #更新
docker context use #设置当前docker的上下文
docker cp #用于容器与主机之间的数据拷贝
docker create #创建一个新的容器但不启动它
docker diff #检查容器里文件结构的更改
docker events #从服务器获取实时事件
docker exec #在运行的容器中执行命令
docker export #将文件系统作为一个tar归档文件导出到STDOUT
docker history #查看指定镜像的创建历史
docker image #管理镜像
docker image inspect #显示一个或多个镜像的元数据
docker image ls #列出本地镜像
docker image prune #删除没有使用的镜像
docker image rm #删除一个或多个镜像
docker images #列出本地镜像
docker import #从归档文件中创建镜像
docker info #显示 Docker 系统信息,包括镜像和容器数
docker inspect #获取容器/镜像的元数据
docker kill #杀掉一个运行中的容器
docker load #导入使用 docker save 命令导出的镜像
docker login #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logs #获取容器的日志
docker manifest #管理manifest(实验,不应用于生产环境)
docker manifest annotate #向本地镜像清单添加附加信息
docker manifest create #创建用于注释和推入注册表的本地清单列表
docker manifest inspect #显示镜像清单或清单列表
docker manifest push #将清单列表推入仓库
docker manifest rm #从本地存储中删除一个或多个清单列表
docker network #管理网络
docker network connect #将容器连接到网络
docker network create #创建一个网络
docker network disconnect #断开容器的网络
docker network inspect #显示一个或多个网络的元数据
docker network ls #列出网络
docker network prune #删除所有没有使用的网络
docker network rm #删除一个或多个网络
docker node #管理集群(swarm)节点
docker node demote #从群集(swarm)管理器中降级一个或多个节点
docker node inspect #显示一个或多个节点的元数据
docker node ls #列出群集(swarm)中的节点
docker node promote #将一个或多个节点推入到群集管理器中
docker node ps #列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm #从群集(swarm)删除一个或多个节点
docker node update #更新一个节点
docker pause #暂停容器中所有的进程
docker plugin #管理插件
docker plugin create #从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。
docker plugin disable #禁用插件
docker plugin enable #启用插件
docker plugin inspect #显示一个或多个插件的元数据
docker plugin install #安装一个插件
docker plugin ls #列出所有插件
docker plugin push #将插件推送到注册表
docker plugin rm #删除一个或多个插件
docker plugin set #更改插件的设置
docker plugin upgrade #升级现有插件
docker port #列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口
docker ps #列出容器
docker pull #从镜像仓库中拉取或者更新指定镜像
docker push #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker rename #重命名容器
docker restart #重启容器
docker rm #删除一个或多个容器
docker rmi #删除一个或多个镜像
docker run #创建一个新的容器并运行一个命令
docker save #将指定镜像保存成 tar 归档文件
docker search #从Docker Hub查找镜像
docker secret #管理Docker secrets
docker secret create #从文件或STDIN创建一个秘密作为内容
docker secret inspect #显示有关一个或多个秘密的详细信息
docker secret ls #列出秘密
docker secret rm #删除一个或多个秘密
docker service #管理服务
docker service create #创建一个服务
docker service inspect #查看服务的元数据
docker service logs #获取服务的日志
docker service ls #列出服务
docker service ps #列出一个或多个服务的任务
docker service rm #删除一个或多个服务
docker service rollback #将更改恢复到服务的配置
docker service scale #缩放一个或多个复制服务
docker service update #更新服务
docker stack #管理堆栈
docker stack deploy #部署新的堆栈或更新现有堆栈
docker stack ls #列出现有堆栈
docker stack ps #列出堆栈中的任务
docker stack rm #删除堆栈
docker stack services #列出堆栈中的服务
docker start #启动一个或多个已经被停止的容器
docker stats #显示容器的实时流资源使用统计信息
docker stop #停止一个运行中的容器
docker swarm #管理集群(Swarm)
docker swarm ca #查看或旋转当前群集CA证书。此命令必须针对管理器节点
docker swarm init #初始化一个群集(Swarm)
docker swarm join #加入群集作为节点和/或管理器
docker swarm join-token #管理加入令牌
docker swarm leave #离开群集(Swarm)
docker swarm unlock #解锁群集(Swarm)
docker swarm unlock-key #管理解锁钥匙
docker swarm update #更新群集(Swarm)
docker system #管理Docker
docker system df #显示docker磁盘使用情况
docker system events #从服务器获取实时事件
docker system info #显示系统范围的信息
docker system prune #删除未使用的数据
docker tag #标记本地镜像,将其归入某一仓库
docker top #查看容器中运行的进程信息,支持 ps 命令参数
docker trust #管理Docker镜像的信任
docker trust inspect #返回有关key和签名的低级信息
docker trust key #管理登入Docker镜像的keys
docker trust key generate #生成并加载签名密钥对
docker trust key load #加载私钥文件以进行签名
docker trust revoke #删除对镜像的认证
docker trust sign #镜像签名
docker trust signer #管理可以登录Docker镜像的实体
docker trust signer add #新增一个签名者
docker trust signer remove #删除一个签名者
docker unpause #恢复容器中所有的进程
docker update #更新一个或多个容器的配置
docker version #显示 Docker 版本信息
docker volume #管理volumes
docker volume create #创建一个卷
docker volume inspect #显示一个或多个卷的元数据
docker volume ls #列出卷
docker volume prune #删除所有未使用的卷
docker volume rm #删除一个或多个卷
docker wait #阻塞运行直到容器停止,然后打印出它的退出代码