docker常用命令的使用

183 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、帮助命令
1.查看版本:
docker version
2.查看docker信息:
docker info
3.查看docker命令帮助:
docker --help
二、操作镜像命令
1.列出本地主机上的镜像:
docker images [OPTIONS]

OPTIONS 选项说明(可组合使用):

  • -a:列出本地所有镜像(含中间映像层)
  • -q:只显示镜像ID
  • --digests:显示镜像的摘要信息
  • --no-trunc:显示完整的镜像信息 (完整的镜像ID)
2.根据镜像名搜寻镜像:
docker search [OPTIONS] 镜像名[:TAG](例:tomcat)
		搜索的地址是(可以直接在网站的search搜寻):https://hub.docker.com

OPTIONS 选项说明(可组合使用)

  • --no-trunc:显示完整的镜像描述
  • -s number:显示start不小于number的镜像
  • --automated:只列出自动编译类型的(automated build)镜像
3.下载镜像:
docker pull 镜像名[:TAG]
		* TAG 为镜像的版本(默认为last)
4.删除某个镜像:
docker rmi [OPTIONS] 镜像名字(或ID)[:TAG]
  • TAG 为镜像的版本(默认为last)
  • OPTIONS 选项说明(可组合使用)
  • -f:强制删除已经有容器实例对象的镜像
5.删除多个镜像:
docker rmi [OPTIONS] 镜像名1(或ID)[:TAG] 镜像名2(或ID)[:TAG]
  • TAG 为镜像的版本(默认为last)
  • OPTIONS 选项说明(可组合使用)
  • -f:强制删除已经有容器实例对象的镜像
6.删除本地全部镜像:
docker rmi -f $(docker images -aq)
7.镜像commit生成自己的镜像:
docker commit -m=“提交信息” -a=“作者” 容器ID 新的镜像名 [:TAG]
8.将镜像以tar格式保存到宿主机:
docker save -o /path/压缩包名 镜像名[:TAG](或者ID)
9.将镜像压缩包从宿主机加载到docker中:
docker load -i /path/压缩包名
docker load --input /path/压缩包名
三、操作容器命令

前提:先在本地下载了要使用的镜像,然后再容器实例化一个对象。

1.新建并启动容器:
docker run [OPTIONS] 镜像名称或ID(IMAGE) [COMMAND] [ARG...]

OPTIONS 选项说明(可组合使用)

  • --name="容器新名字":为容器指定一个名称
  • -d: 后台运行容器,返回容器ID,及启动守护式容器
  • -i:以交互式模式运行容器(启动交互式容器),通常与-t同时使用
  • -t:为容器重新分配一个伪输入终端,通常与-i同时使用
  • -P:随机端口映射
  • -p:指定端口映射,有以下四种格式:
    • ip:hostPort:containerPort
    • ip::containerPort
    • hostPort:containerPort
    • containerPort
2.列出当前所有正在运行的容器:
docker ps [OPTIONS]

OPTIONS 选项说明(可组合使用)

  • -a:列出当前所有正在运行的容器+历史上运行过的
  • -l:显示最近创建的容器
  • -n number:显示最近number个创建的容器
  • -q:静默模式,只显示容器编号
  • --no-trunc:不截断输出
3.退出容器:

两种退出方式

  • exit:容器停止退出
  • ctrl + P + Q:容器不停止退出
4.启动容器:
docker start 容器ID(或容器名称)
5.重启容器:
docker restart 容器ID(或容器名称)
6.停止容器:
docker stop 容器ID(或容器名称)
7.强制停止容器:
docker kill 容器ID(或容器名称)
8.删除已停止的容器:
docker rm 容器ID
  • 一次性删除多个容器:docker rm -f $(docker ps -aq)
  • 或者: docker ps -aq | xargs docker rm
9.启动一个守护容器:
docker run -d 容器名称(或者ID)
  • 启动后使用docker ps -a查看时,发现已经退出。
  • docker容器后台运行,必须有一个前台进程
  • 问题:docker容器运行非一直挂起的命令(如:top、tail),就会自动退出,这种源于docker的机制。
10.查看容器日志:
docker logs [OPTIONS] 容器名称(或ID)

OPTIONS 选项说明(可组合使用)

  • -t:加入时间戳
  • -f:跟随最新的日志打印
  • -tail number:显示最后number条日
11.查看容器内运行的进程:
docker top 容器名称(或ID)
12.查看容器内部细节:
docker inspect 容器名称(或ID)
13.进入正在运行的容器,并以命令行交互

直接进入命令终端,不启动新的进程:

docker attach 容器名称(或ID)
14、容器中打开新终端,启动新进程:
docker exec -it 容器名称(或者ID)  [bashShell]
  • 当选项只有-t时,后面可以直接使用bashShell命令,直接输出结果,并退出交互式。
15、容器中文件拷贝到主机上:
docker cp 容器名(或ID):容器内路径 目的主机路径
16、宿主机的文件拷贝到容器中:
docker cp 宿主机文件路径 容器名(或ID):拷贝到容器内的路径
四、问题实例讲解
1、问题描述

nginx正常配置启动服务只要启动响应的service即可,如开启:service nginx start,但是在docker中,这样做nginx为后台进程模式运行,导致docker前台没有运行的应用。这样容器启动后会立即退出。

2、解决的方法:

将你要运行的程序以前台进程的形式运行。