Docker Image 镜像
镜像简介
- 容器的基石
- 层叠的制度文件系统
- 联合加载(union mount)
查看docker信息
docker info
查看镜像
docker images
获取镜像
镜像是docker运行容器的前提,通过命令docker pull命令可以从网络上下载镜像。命令格式为
docker pull name[:TAG]
如下载一个最新的ubuntu操作系统的镜像:
sudo docker pull ubuntu
也可以通过指定标签来下载特定版本的镜像
sudo docker pull ubuntu: 18.04
上面的两条命令实际都是相当于sudo docker pull registry.hub.docker.com/ubuntu:latest
也就是说,从docker的默认注册服务器registry.hub.docker.com中的ubuntu仓库中下载最新版本的镜像,
有默认的注册服务器,是不是就有其他更多的服务器啊?
对的,我们也可以指定从别的服务器下载,例如从DockerPool社区的镜像源dl.dockerpool.com下载最新的Ubuntu镜像。
sudo docker pull dl.dockrpool.com.com:5000/ubuntu
镜像下载后就可以使用了,例如,利用该镜像创建一个容器,在其中运行bash应用。
sudo docker run -t -i ubuntu /bin/bash
使用 socker images命令可以列出本地主机已有的镜像
sudo docker images
搜寻镜像
使用docker search,默认搜索Docker Hub官方仓库中的镜像,用法:socker search TERM
参数支持:
仅显示自动创建的镜像。
--automated=false
输出信息不截断
--no-trunc=false
制定仅显示评价为指定星级以上的镜像。
--s,--stars=0
例如,搜索mysql关键字镜像:
sudo docker search mysql
删除镜像
使用docker rmi 命令可以删除镜像,格式为 docker rmi IMAGE,(ps:IMAG可以为标签或者id)
- 使用镜像的标签删除镜像
例如,删除dl.dockerpool.com:5000/ubuntu:latest镜像
sudo docker rmi dl.dockerpool.com:5000/ubuntu
此时,若是ubuntu:latest有多个标签,本地的镜像不会收到影响,只会删除镜像的标签,如果只有一个标签,本地镜像就会被删除。
-
使用ID删除镜像
当使用docker rmi 命令后边跟ID时,会尝试先删除镜像所有的标签,然后删除镜像本身。(ps:当镜像创建的容器存在时,默认是无法删除镜像文件的,强行删除可以用 -f参数)
先利用ubuntu 镜像创建一个简单的容器,输出一句“hello!hiteamtech!”
# sudo docker run ubuntu echo "hello! hiteamtech!"
hello! hiteamtech!
删除所有的镜像
docker rmi $(docker images -q)
使用docker ps -a 可以看到本机存在的所有容器:
试图删除ubuntu镜像时,会提示有容器正在云信,无法删除
不建议使用-f强行删除镜像,会造成一下遗留问题。建议先删除依赖该镜像的所有容器,再删除镜像
创建镜像
创建镜像有三种方法:
- 基于已有镜像的容器创建
- 基于本地模块导入
- 基于Dockerfile创建
- 基于已有镜像的容器创建
使用命令docker commit 命令,其命令格式为docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]],主要选项包括:
-a,--author=""作者
-m,--message=""信息
-p,--pause=true提交时暂停容器运行
sudo docker commit -m “new ubuntu” -a “hiteamtech” 2a84310dc660 tes
此时查看信息。可看到新创建的镜像:
- 存出和存入镜像
使用docker save和docker load命令
- 上传镜像
使用docker push,默认上传到官方仓库(需要登录)
构建镜像
构建镜像有两种方法:
1. docker commit 通过容器构建镜像
举例如下:
先运行一个ubuntu容器
docker run -it -p 80 --name commit_test ubuntu /bin/bash
在ubuntu中安装nginx
2fa65dc318fd:/# apt-get update
2fa65dc318fd:/# apt-get install -y nginx
然后输入exit退出容器
使用commit提交镜像
docker commit -a 'Sourctanghc' -m 'nginx' commit_test sourctanghc/commit_test
-a指定作者,-m描述docker镜像信息
2. docker build 通过Dockerfile文件构建
- 创建Dockerfile
新建Dockerfile
vim Dockerfile
编辑Dockerfile
#First Docker of tanghc
FROM ubuntu:18.04#指定基于ubuntu:18.04基础镜像
MAINTAINER sourctanghc "1967483667@qq.com"#维护人信息
#需要运行的命令
RUN apt-get update
RUN apt-get install -y nginx
#暴露的端口
EXPOSE 80
在Dockerfile所在目录运行docker build命令
docker build -t='sourctanghc/df_test1' .
-
使用sudo docker build 命令
docker build -t=‘sourctanghc/df_test1’
通过docker images查看
第一个就是刚刚建立的镜像
运行此镜像:
docker run -d --name nginx_web4 -p 80 sourctanghc/df_test1 nginx -g "daemon off;"
docker ps查看容器
通过curl访问
小结
本文包含了Docker镜像一系列重要操作,包括获取、查看、搜索、删除,创建等。
镜像是使用docker的前提,也是最重要的资源。平时多积累定制的镜像文件,并发扬开源精神,分享高质量的镜像