Docker基本命令

Docker帮助命令

1.  查看Docker版本

[root@centos ~]# docker version

2. 查看Docker的详细信息

[root@centos ~]# docker info

3. 查看帮助命令

[root@centos ~]# docker --help

Docker镜像命令

1. 列出本地主机上的镜像

docker images [OPTIONS]

各个选项说明
1. REPOSITORY: 表示镜像的仓库源
2. TAG    : 镜像的版本标签
3. IMAGE ID : 镜像ID
4. CREATED  :  镜像创建时间
5. SIZE   :  镜像大小

  OPTIONS说明:

  -a: 列表本地所有的镜像(含中间映像层)

  -q: 只显示镜像ID

  --digests: 显示镜像的摘要信息

  --no-trunc: 显示完整的镜像信息

同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用ubuntu,docker将默认使用ubuntu:latest镜像。

2. 在远程仓库中查找镜像

docker search [OPTIONS] 镜像名称  

# 目标网站: https://hub.docker.com

OPTIONS说明:
--no-trunc: 显示完整的镜像描述
-s: 列出收藏数不少于指定值的镜像
--automated: 只列出automated build类型的镜像

3. 从远程仓库中下载镜像

docker pull 镜像名字[:TAG]

docker pull nginx 等价于  docker pull nginx:latest

4. 删除镜像

删除单个: docker rmi 唯一镜像名字或镜像ID[:TAG]
删除多个: docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部: docker rmi if $(docker images -qa)

Docker容器命令

有镜像才能创建容器,这是根本前提!

1. 新建并启动容器

docker run [OPTIONS] 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: 显示最近n个创建的容器
-q: 静默模式,只显示容器编号
--no-trunc: 不截断输出

3. 退出容器

1. 容器停止退出
exit

2. 容器不停止退出
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 -a -q)
docker ps -a -q|xargs docker rm

9. 启动守护式容器

docker run -d 容器名

使用容器centos:latest以后台模式启动一个容器
docker run -d centos
问题: 然后docker ps -a 进行查看,会发现容器已经退出
很重要的要说明一点: Docker容器以后台运行,就必须要有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的

这个是docker的机制问题,比如web容器,以nginx为例,正常情况下,配置启动服务只需要启动响应的service即可。例如service nginx start
但是这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了
所以,最佳的解决方案是,将要运行的程序以前台进程的形式运行

10. 查看容器的日志

docker logs -f -t --tail 容器ID

-t: 加入时间戳
-f: 跟随最新的日志打印
--tail: 数字 显示最后多少条

11. 查看容器内运行的进程

docker top 容器ID

12. 查看容器内部的细节

docker inspect 容器ID

13. 进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell
# 重新进入
docker attach 容器ID

attach: 直接进入容器启动命令的终端,不会启动新的进程
exec: 是在容器中打开新的终端,并且可以启动新的进程

14. 从容器内拷贝文件到主机上

docker cp  容器ID: 容器内路径  目的路径

Docker commit命令

docker commit提交容器副本使之成为一个新的镜像

docker commit -m = "提交的描述信息" -a ="作者" 容器ID要创建的目标镜像名[:标签名]

案例演示:

1. 从Hub上下载tomcat镜像到本地并成功运行
docker run -it -p 8080:8080 tomcat

-p: 主机端口:docker容器端口
-P: 随机分配端口
-i: 交互
-t: 终端

2. 故意删除上一步镜像生产tomcat容器的文档

3. 也即当前tomcat运行实例是一个没有文档内容的容器,以它为模板commit一个没有doc的tomcat新镜像tomcat02
docker commit -a="新tomcat" -m="del docs tomcat" b9eb1bce5153 tomcat02

4. 启动我们的新镜像并和原来的像对比

 

原文地址:https://www.cnblogs.com/featherwit/p/12951918.html