Docker-04-Docker镜像的操作及常用命令

一、启动镜像

1)启动镜像

说明: 因启动命令参数过多,同时各种镜像启动时可以增加额外的参数,本次以启动mysql5.6为例
命令格式

docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号

参数释义

-p   本机端口和容器启动端口映射(指定端口映射)
-P   随机端口映射
-d   后台运行
-i   以交互模式运行容器
-t   为容器重新分配一个伪输入终端
--name  容器名称
-e  镜像启动参数 
-net:网络模式

示例

例1:docker run -p 3306:3306 -d --name mysql01 -e MYSQL_ROOT_PASSWORD=admin mysql:5.6
例2:docker run -i -t --name mycentos
例3:docker run -d mycentos

2)启动一个或多个已经被停止的容器

docker start redis
docker stop redis

3)重启容器

docker restart redis

参考官方文档 https://hub.docker.com/_/mysql)

二、常用命令

1)镜像操作相关命令

备注:对于镜像的操作可使用镜像名、镜像长ID和短ID

命令含义示例
docker search 镜像名称搜索镜像docker search java
docker pull java:8从仓库中下载镜像,若要指定版本,则要在冒号后指定docker pull java:8
docker pull -a java下载仓库所有java镜像
docker images列出已经下载的镜像
docker rmi java删除本地镜像
docker rmi -f java强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis tomcat nginx多个镜像删除,不同镜像间以空格间隔
docker rmi -f $(docker images -q)删除本地全部镜像
docker build构建镜像
docker rundocker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号
docker run -p 本机映射端口:镜像映射端口 -d —ImageId 启动镜像Id -e 镜像启动参数 镜像名称:镜像版本号
参数释义:
-p 本机端口和容器启动端口映射
-d 后台运行
--name 容器名称
-e 镜像启动参数
docker commit**docker commit 😗*从容器创建一个新的镜像。

3)容器操作相关命令

命令含义示例
docker ps查看当前启动的镜像docker ps
docker stop 镜像实例ID停止镜像docker stop fe754db626db
docker ps -a查看所有镜像(包括未启动的)docker ps -a
docker start 镜像实例ID当镜像实例已经存在时,重新启动镜像docker start fe754db626db
docker start 镜像名称当镜像实例已经存在时,重新启动镜像docker start mysql01
docker rm 镜像实例ID删除镜像实例(删除已停止的容器)docker rm fe754db626db
docker rm -f 容器id删除正在运行的容器
docker kill 容器id强制停止容器
docker inspect 容器id查看容器的所有信息
docker container logs 容器id查看容器日志
docker top 容器id查看容器里的进程
docker exec -it 容器id /bin/bash进入容器
exit退出容器
sudo docker ps -a -q查看所有容器ID
sudo docker stop $(sudo docker ps -a -q)stop停止所有容器
sudo docker rm $(sudo docker ps -a -q)remove删除所有容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)一次性停止删除容器

三、导入导出操作命令介绍

save

  • 命令

    docker save [options] images [images...]
    

    这里写图片描述

  • 示例

    docker save -o nginx.tar nginx:latest
    或
    docker save > nginx.tar nginx:latest
    

    其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

load

  • 命令

    docker load [options]
    

    这里写图片描述

  • 示例

    docker load -i nginx.tar
    或
    docker load < nginx.tar
    

    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

export

  • 命令

    docker export [options] container
    

    这里写图片描述

  • 示例

    docker export -o nginx-test.tar nginx-test
    

    其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)

import

  • 命令

    docker import [options] file|URL|- [REPOSITORY[:TAG]]
    

    这里写图片描述

  • 示例

    docker import nginx-test.tar nginx:imp
    或
    cat nginx-test.tar | docker import - nginx:imp
    

差异

  • export命令导出的tar文件略小于save命令导出的
    这里写图片描述
  • export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
  • 基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
    这里写图片描述

建议

可以依据具体使用场景来选择命令

  • 若是只想备份images,使用save、load即可
  • 若是在启动容器后,容器内容有变化,需要备份,则使用export、import

三、容器进程

  • 格式
docker top [OPTIONS] CONTAINER [ps OPTIONS]
  • 列出redis容器中运行进程
  docker top redis
  • 查看所有运行容器的进程信息
  for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

四、容器日志

  • 查看redis容器日志,默认参数
  docker logs rabbitmq
  • 查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;–tail 仅列出最新N条容器日志;
  docker logs -f -t --tail=20 redis
  • 查看容器redis从2019年05月21日后的最新10条日志。
  docker logs --since="2019-05-21" --tail=10 redis

五、容器与主机间的数据拷贝

从容器里面拷文件到宿主机

公式: docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

  • 将rabbitmq容器中的文件copy至本地路径()
  • docker cp rabbitmq:/[container_path] [local_path]

从宿主机拷文件到容器里面

**公式:**docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

  • 将主机文件copy至rabbitmq容器
    docker cp [local_path] rabbitmq:/[container_path]/
  • 将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
    docker cp [local_path] rabbitmq:/[container_path]

六、构建镜像

1)基于dockerfile构建

docker build -f /docker/dockerfile/mycentos -t mycentos:1.1

2)基于已有镜像构建镜像

docker commit的语法规则及可选项介绍

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Options:
  -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")#作者信息
  -c, --change list      Apply Dockerfile instruction to the created image
  -m, --message string   Commit message #说明信息
  -p, --pause            Pause container during commit (default true) #生成过程中停止容器的运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值