Docker (2) 常用基础命令

官方文档地址

通用命令

  • docker <COMMAND> --help:查看命令的使用描述、命令别名等内容。Command 为空时,可以查看所有支持的 docker 命令
  • docker info:docker 信息查询
  • docker version:docker 版本查询
  • docker stats:查看容器实例使用的宿主机资源

镜像

本地查询
  • docker images:列表(默认追加了 -a 参数 查询所有)
  • docker images -q:只查看镜像id
远端仓库查询
  • docker search <IMAGE_NAME>:根据名称查询
  • docker search <IMAGE_NAME>:<TAG>:根据名称 & 标签查询
拉取远端镜像
  • docker pull <IMAGE_NAME>:根据名称拉取(不写 tag 默认拉取 latest)
  • docker pull <IMAGE_NAME>:<TAG>:根据名称 & 标签拉取
删除本地镜像
  • docker image remove <IMAGE_ID_1> <IMAGE_ID_2> <IMAGE_ID_3>:根据镜像id删除,多个空格分隔。也可以用别名命令 docker rmi -f <IMAGE_ID_1> <IMAGE_ID_2> <IMAGE_ID_3>
  • docker image remove $(docker images -aq):删除所有本地镜像
提交镜像

docker commit <OPTIONS> <CONTAINER_ID> <IMAGE_NAME>:<TAG>
-m:提交内容描述
-a:作者

例子

docker commit -m "Add readme file" -a "cqq" 9c1833184716 my_tomcat8:1.0
镜像名称的理解

对于 image name ,准确说应该是 image repositry name。我们查看一下镜像列表:

$ docker images
REPOSITORY            TAG               IMAGE ID       CREATED         SIZE
docker-test           spring-boot-1.0   4a83d725d5e6   5 hours ago     661MB
redis                 latest            0ec8ab59a35f   7 days ago      117MB

第一列的名称已经说明了为 REPOSITRY。一个镜像由 REPOSITRY_NAME + TAG 组成,以来构成唯一性。仓库名就是应用名称,TAG 即版本号,比如:nginx:1.12.0centos:7 ,仓库下不同版本的应用镜像。

打 Tag

对镜像打一个标签,标签名为要推送的仓库名称。在后面的操作私服的文章中会使用到。

docker image tag <IMAGE_REPOSITRY>:<TAG> <ANOTHER_IMAGE_REPOSITRY>:<TAG>

例子

docker image tag docker-test:spring-boot-1.0 \
registry.cn-beijing.aliyuncs.com/priv-docker/docker-test:spring-boot-1.0

容器

创建容器

docker run <OPTIONS> <IMAGE_NAME>:<TAG> <COMMAND>:创建容器实例并运行,并在容器内执行指定命令

参数
--name <CONTAINER_NAME>:指定容器实例的名称
-t:分配一个伪 tty
-i:保持 STDIN 打开,即使没有连接会话。这样使得容器不会 run 后容器实例直接退出(一般会与 -tCOMMAND 为 Shell path 配合使用,达到启动后就通过 Shell 连接到容器实例的效果。因为 -i-t 的功能使得 Shell 程序是可以正常运行的,缺一不可)
-d:后台运行(detached 模式默认会分配一个 tty)
-p <HOST_PORT:CONTAINER_PORT>:指定使用的端口映射。前者为宿主机端口,后者为映射的容器端口(映射的容器端口不一定是容器内的中间件使用的端口)
-P:随机映射宿主机端口。那么为容器中的哪些端口进行随机映射呢?个人理解为 Dockerfile 中通过 EXPOSE 申请的端口。关于 Dockerfile 会在后面的文章详细说到。
--rm:用于测试,容器停止后就进行删除
-e:设置环境变量。可以启动容器实例后,进入容器实例并通过 env 命令查看设置的环境变量

进入容器

docker exec <OPTIONS> <CONTAINER_ID> <COMMAND>

参数

-t:分配一个伪 tty
-i:保持 STDIN 打开,一般会与 -tCOMMAND 为 Shell path 配合使用,达到通过 Shell 连接到容器实例的效果。因为 -i-t 的功能使得 Shell 程序是可以正常运行的,缺一不可

常用命令
  • docker ps
    -a:查询所有的容器实例(默认只查询运行中的容器实例)
    -q:只查询容器实例的id
  • docker rm <CONTAINER_ID>:删除容器实例
    -f:强制删除,即使容器实例正在运行
  • docker start <CONTAINER_ID>:启动容器实例
  • docker restart <CONTAINER_ID>:重启容器实例
  • docker stop <CONTAINER_ID>:停止容器实例(留给容器实例一段时间进行 stop)
  • docker kill <CONTAINER_ID>:强杀容器实例(直接杀死容器实例进程)
  • docker top <CONTAINER_ID>:查询容器实例中的进程信息
  • docker inspect <CONTAINER_ID>:查询容器实例的元数据
  • docker logs <CONTAINER_ID>:查询容器实例的运行日志
    -t:格式化时间戳
    -f:持续输出,同 tail -f
    --tail / -n:查看尾部 n 行
  • docker cp <CONTAINER_ID>:<CONTAINER_PATH> <HOST_PATH>:copy 容器实例内指定目录下的文件到宿主机的指定目录

数据卷

挂载容器内的文件、文件夹到宿主机。(个人理解,容器内的文件只是一个链接,同时指向了宿主机的指定文件、文件夹)

参数

docker run -v <CONTAINER_PATH>:<PERMISSION>:匿名挂载
docker run -v <VOLUME_NAME>:<CONTAINER_PATH>:<PERMISSION>:具名挂载
docker run -v <HOST_PATH>:<CONTAINER_PATH>:<PERMISSION>:路径挂载

匿名、具名挂载会将容器内的映射文件、文件夹默认保存在宿主机 /var/lib/docker/volumes/ 目录下。

在末尾追加 ro(readonly)rw(readwrite) 表示挂载文件的操作权限。ro 表示只能在宿主机中修改,不能在容器内修改。

例子

# 路径挂载
docker run -d --name my_nginx -p 80:80 -v C:\Users\18140\Desktop\nginx\nginx.conf:/etc/nginx/nginx.conf:ro nginx:1.12.0
多容器共享数据卷

多个容器共享同份 volume

参数

docker run --volume-from <CONTAINER_NAME>

例子

docker run -d -it --name my_centos -v C:\Users\18140\Desktop\volume\v1:/volume/v1 -v C:\Users\18140\Desktop\volume\v2:/volume/v2 centos

docker run -d -it --name my_centos_2 --volumes-from my_centos centos

此时,my_centosmy_centos_2 会将容器内的 /volume/v1/volume/v2 同时挂载到宿主机的指定目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值