前言 :请注意Docker 镜像与Docker 容器的常用操作与使用时他们相关命令的区别,
如有不了解Docker原理与安装的请移步 Docker 的特性与安装使用
Docker 镜像常用操作
1. 列出镜像 使用 docker images 命令可列出本地可用镜像
上篇中我使用 docker run hello-world 检测docker是否正确安装,其实是为我们创建了一个hello-world镜像仓库
下面简单介绍一下上面5个字段的意义
- REPOSITORY : 表示本地镜像仓库的名称
- TAG : 表示镜像的标签,一般情况下带有具体的版本或别名,此处latest表示最新版本
- IMAGE ID : 表示镜像的标识符,称为"镜像ID" 具有唯一性
- CREATED : 镜像的创建时间,使用离现在的时间来表示
- SIZE : 表示镜像的字节大小
2. 拉取镜像 使用 docker pull centos 命令可在Docker Hub中拉取 CentOS镜像
3. 搜索镜像 使用 docker search centos 命令可在Docker Hub中搜索 "centos " 关键字的镜像仓库
这里也说下上面表格中的5个字段意思吧
- NAME : 镜像仓库的名称,不带 /符号的是官方发布的仓库,其它是用户公开的个人仓库,注意这是Docker Hub上的
- DESCRIPTION : 表示镜像仓库的描述
- STARS : 镜像仓库的收藏数,用户可在Docker Hub上对镜像仓库进行收藏
- OFFICIAL: 表示是否为官方仓库,官方仓库具有更高的安全性
- AUTOMATED : 是否自动构建镜像仓库,需要将自己的Docker Hub绑定到GitHub账号上,代码提交可自动构建镜像仓库
4 导出与导入镜像 使用docker save centos > centos.tar 命令导出 centos镜像为一个tar文件(镜像包),若不指定tar文件路径则默认在当前目录. 导出的镜像包可随时在另一台docker机器上导入, 导入命令 docker load < centos.tar . 发布生产环境上只需将镜像导入到docker机器上然后运行容器就能完成部署
Docker 容器的常用操作
1. 创建并启动容器
使用 docker run -i -t centos /bin/bash 命令运行CentOS镜像,从而创建并启动CentOS容器
以上命令比较复杂,既有选项又有参数,下面分析一下
- -i 选项: 表示启动容器后,打开标准收入设备,可使用键盘镜像输入
- -t 选项: 表示启动容器后,分配一个伪终端,将于服务器建立一个会话
- centos参数: 表示需要运行的镜像名称,格式为 centos:latest, 为latest版本可省略
- /bin/bash参数: 表示运行容器中的bash应用程序
注意: 该命令实际上首先从本地获取 CentOS 镜像,若本地没有此镜像则从Docker Hub拉取镜像并放入本地在创建并启动容器
执行以上命令后将启动容器并直接进入容器中,使用 exit 命令可退出容器
2. 列出容器 使用 docker ps 命令列出运行中的容器, docker ps -a 所有,-n n个最近创的容器,-s 增加size字段描述容器大小
注意当我们启动一个容器后需要在另一个终端去执行以上命令
同样也说下上面7个字段的具体意义
- CONTAINER ID : 容器ID,前面已有描述
- IMAGE : 镜像名称
- COMMAND : 表示启动容器时运行的命令,Docker要求在启动容器时需要运行一个命令
- CREATED : 容器的创建时间
- STATUS : 容器运行的状态, up表示运行中,exited表示已退出
- PORTS : 容器需要对外暴露的端口号
- NAMES : 容器名称,由Docker引擎自动生成,也可以在 docker run 命令中通过 --name 选项来指定
3. 进入容器 使用 docker attach 容器ID或容器名称 命令进入某运行中的容器,注意只能进入运行中的容器
4. 执行命令 使用以下命令向运行中的容器执行具体的命令(需指定容器ID或容器名称)
docker exec -i -t 71b558d77d47 ls -l 此处 ls -l 表示列出容器当前的目录结构
5. 停止容器 使用 docker stop 71b558d77d47
6. 终止容器 使用 docker kill 容器ID或容器名称 命令终止运行中的容器
7. 启动容器 使用 docker start 容器ID或容器名称 命令启动已停止的容器
8. 重启容器 使用 docker restart 容器ID或容器名称 命令重启运行中的容器
9. 删除容器 使用 docker rm 容器ID或容器名称 命令删除已停止的容器, 注意只能删除已停止的容器不能上运行中的.若使用 -f 选项则对容器发送SIGKILL信号,将强制删除运行中的容器, 使用 docker rm -f 'docker ps -a -q' 一次性删除所有容器
删除镜像 docker rmi -f 镜像名称或ID,注意该命令删除后无法恢复
10.导出与导入容器
使用以下命令导出容器为一个tar文件(容器包),
docker export 镜像名称或ID > centos.tar
若不指定导出的文件路径则默认在当前目录,导出的容器包可随时在另一台Docker机器上导入为镜像,命令如下:
docker import foo.tar huangyong/centeos:latest
注意: 之前用 docker load 命令(从镜像包中导入镜像)与现在使用的docker import 命令(从容器包中导入镜像) 都可以导入镜像,区别在于容器包 不包括任何历史记录,相当于容器的当前快照,而镜像包则 包扣所有的历史记录,因此镜像包的体积也比较大,大家可以根据实际情况选择合适的方式
Docker 命令汇总
Docker 客户端命令总共有 40多个,我们可以通过 dockerhelp 查看所有的命令及其描述
参考资料与容器运行的大致过程, 后面更新如何制作并使用Java镜像
Docker命令参考: https://www.runoob.com/docker/docker-command-manual.html
Linux命令参考: https://www.runoob.com/linux/linux-tutorial.html