Docker 常用命令总结

前言

本文介绍 Docker 常用的一些命令,Docker 常用配置可参考Docker 实用配置技巧

Docker 管理

查看服务端和客户端版本

docker version

查看服务端和客户端配置和参数信息

docker info

镜像操作

Docker 镜像可以看作一个模板。

查看本地镜像列表

docker images

使用 -q 参数仅获取镜像 ID,可以通过管道传递给其他后续命令。

-f 参数可以筛选镜像。

# 查找无标签的镜像,如构建失败时的中间镜像
docker images --filter "dangling=true"
# 根据镜像标签进行筛选
docker images --filter "label=version=1.0"
# 根据镜像名称筛选
docker images --filter "reference=mysql:*"

before 和 since 提供了时间筛选,后面接镜像名称,用于筛选在这个镜像之前创建的镜像或这个镜像之后创建的镜像。

docker images --filter "before=ubuntu:18.04"

--format 参数可以控制输出格式,使用 Go 语言的模版语法,支持如下的占位符:

  • .ID:镜像 ID
  • .Repository:镜像名
  • .Tag:镜像版本
  • .Digest:镜像摘要
  • .CreatedAt:镜像创建时间
  • .Size:镜像大小
# 仅输出镜像名称和版本
docker images --format "{{.Repository}}:{{.Tag}}"

删除镜像

删除指定镜像。

# 可指定镜像名:版本或镜像 ID
docker rmi mysql:8

删除所有无标签的镜像。

docker image prune

构建镜像

docker build -t myimage:1.0 .

其中,-t 参数用于指定镜像名称和版本,最后的点代表当前路径,会查找当前路径下的 Dockerfile 文件。如果需要指定其他文件名,使用 -f 参数。

导入导出

# 将镜像导出到文件
docker save -o centos.tar centos:7
# 从文件或标准输入导入镜像
docker load -i centos.tar

添加标签

tag 命令给镜像添加一个新的名称和版本。

docker tag centos:7 mycentos:7.9

容器操作

Docker 容器可以看作镜像的一个运行实例。

启动容器

run 是最重要的启动容器的命令。

docker run --name mysql -d mysql:8

其中 --name 用于指定容器名称,不指定则随机生成。-d 表示后台运行并打印容器 ID,否则在当前进程前台执行。镜像名称后面可以接要传递的命令或参数。

-t-i 可以进入容器的控制台,执行一些命令,--rm 在退出后直接删除容器。

docker run --rm -ti centos:7 bash

查看本地容器

docker ps

也支持 -q-f--format 参数。

# 筛选名称
docker ps --filter "name=mysql"
# 筛选状态 running,created, exited 等
docker ps --filter "status=exited"
# 筛选标签
docker ps --filter "label=com.example.app=web"
# 筛选端口
docker ps --filter "expose=9000"

--format 支持下面的占位符:

  • .ID:容器ID
  • .Image:镜像ID
  • .Command:执行的命令
  • .CreatedAt:容器创建时间
  • .RunningFor:运行时长
  • .Ports:暴露的端口
  • .Status:容器状态
  • .Names:容器名称
  • .Label:容器的标签
  • .Mounts:容器挂载的卷
  • .Networks:容器的网络名称
  • .Repository:镜像名称
  • .Size:镜像大小
  • .Tag:镜像标签
  • .CreatedAt:创建图像的时间
docker ps --format "{{.ID}}\t{{.Names}}"

删除容器

删除指定的容器。

# 可指定容器名或容器 ID
docker rm mysql

删除所有停止的容器。

docker container prune

文件复制

docker cp 命令可以将容器内的文件复制到宿主机中,或者反过来。

docker cp mysql:/var/lib/mysql/test.txt /home/user/test.txt

容器状态变更

# 停止容器
docker stop mysql
# 启动容器
docker start mysql
# 重启容器
docker restart mysql

在容器中执行命令

exec 在运行的容器中执行命令。可使用 -ti 参数进入容器的控制台。

docker exec -ti mysql bash

获取容器信息

# 获取容器的详细信息
docker inspect mysql
# 获取容器暴露的端口
docker port mysql
# 获取容器的进程
docker top mysql

查看容器日志

docker logs mysql

可以用 -tail <行数> 获取最后的几行, -f 参数可以持续获取日志,类似 tail -f

查看容器的文件变更

查看容器的文件变更信息。

docker diff mysql

创建镜像

commit 命令可将容器当前的状态创建为镜像,类似于 git commit。

docker commit -m "message" mysql mysql1:1.0

导入导出

# 将容器的文件导出到文件
docker export -o out.tar mysql
# 导入文件创建镜像
docker import out.tar mysql1:1.0

远程仓库操作

登陆

私有仓库如果需要登陆可以使用 login 命令。

docker login -u username hub.mydocker.com

如果不想每次都登陆,可以配置自动登陆令牌,参考Docker 实用配置技巧

搜索镜像

搜索 Docker 镜像仓库。

docker search mysql

拉取/推送镜像

# 拉取镜像
docker pull mysql:8
# 将本地的镜像推送到仓库
docker push hub.mydocker.com/my/image:1.0
  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值