Docker镜像操作


在这里插入图片描述

镜像命令

1. 获取镜像

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

2. 列出镜像

# 1.显示顶层镜像
$ docker images 
# or
$ docker image ls

# 2.显示中间层镜像
$ docker images -a
# or
$ docker image ls -a

# 3.只显示镜像ID
$ docker image ls -q
5f515359c7f8
05a60462f8ba
fe9198c04d62
00285df0df87
329ed837d508
329ed837d508

3. 运行镜像

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

–name=“nginx-lb”: 为容器指定一个名称;

–volume , -v: 绑定一个卷

实例

  • 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
  • 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
  • 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
  • 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
  • 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/# 

4. 删除镜像

$ docker image rm [选项] <镜像1> [<镜像2> ...]
# or 
$ docker rmi <image1> [<image2>]

# 删除仓库名为redis的镜像
$ docker image rm $(docker image ls -q redis)
# 删除所有在 mongo:3.2 之前的镜像:
$ docker image rm $(docker image ls -q -f before=mongo:3.2)

5. 保存镜像

  • docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]: 从运行的容器中保存
# 1. 运行一个容器
# 	这条命令会用 nginx 镜像启动一个容器,命名为 webserver,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx 服务器。
$ docker run --name webserver -d -p 80:80 nginx

# 2. 进入容器,进行修改
$ docker exec -it webserver bash
root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@3729b97e8226:/# exit
exit

# 3. 执行 docker commit 命令将修改后的容器保存为新的镜像
$ docker commit \
    --author "Tao Wang <twang2218@gmail.com>" \
    --message "修改了默认网页" \
    webserver \
    nginx:v2
sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214

6. 镜像导出和导入/保存和载入

  • docker export; docker import 或者docker save; docker load
# 方式1
# 使用 docker export 命令根据容器 ID 将镜像导出成一个文件
$ docker export f299f501774c > hangger_server.tar
# 使用 docker import 命令则可将这个镜像文件导入进来
$ docker import - new_hangger_server < hangger_server.tar

# 方式2
# 使用 docker save 命令根据 ID 将镜像保存成一个文件
$ docker save 0fdf2b4c26d3 > hangge_server.tar
# 还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包
$ docker save -o images.tar postgres:9.6 mongo:3.4
# 使用 docker load 命令则可将这个镜像文件载入进来
$ docker load < hangge_server.tar
  • 注意:
    • docker export; docker importdocker save; docker load必须成对使用
    • docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
    • docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。

作者博客: https://chamferschen.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值