Docker 学习笔记之使用docker镜像

in Linux with 0 comment

获取镜像

$ docker search NAME[:TAG] //在远端仓库使用search 命令进行搜索和过滤
$ docker pull NAME[:TAG]   //pull命令直接从Docker Hub 镜像源来下载镜像

对于Docker镜像来说, 如果不显式指定TAG, 则默认会选择latest标签,这会下载
仓库中最新版本的镜像

$ docker pull ubuntu: 18.04
18.04: Pulling from library/ubuntu
.....
$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
.....

查看镜像

使用images命令列出镜像

$ docker images  或者  docker image ls 命令可以列出本地主机已有镜像的基本信息

使用tag命令添加镜像标签

为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签。例如,添加一个新的myubuntu: latest镜像标签:

$ docker tag ubuntu:latest myubuntu:latest

这些myubuntu:latest镜像的ID跟ubunt:latest是完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag命令添加的标签实际上起到了类似链接的作用。

使用inspect命令查看详细信息

使用docker[image]inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等:

$ docker inspect ubuntu:latest

上面代码返回的是一个JSON 格式的消息, 如果我们只要其中一项内容时, 可以使用-f 来指定, 例如, 获取镜像的Architecture:

$ docker inspect -f {{" .Architecture"}} ubuntu
amd64

删除和清理镜像

$ docker rm 容器ID
$ docker rmi 镜像ID

-a, -all:删除所有无用镜像,不光是临时镜像

-filter filter:只清理符合给定过滤器的镜像

-f,-force:强制删除镜像,我不进行提示确认

命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间:

$ docker image prune -f
Total reclaimed space: 0B //本机没有遗留的文件层,所以释放空间大小0B

创建镜像

创建镜像的方法主要有三种:1、基于已有经的容器创建,2、基于本地模板的导入,3、基于Dockerfile创建

Docker 主要的子命令:commit,import,build

1、基于已有容器创建

该方法主要使用 docker [container] commit 命令

命令格式:docker [container] commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a, - -auther=“ ”:作者信息

-c, - -change=[]:提交的时候执行Dockerfile 指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBILD|USER|VOLUME|WORKDIR等

-m, - -message=“” :提交消息

-p, --pause=true:提交时暂停容器运行

演示:

$ docker container ls -a 或者 docker ps -a 或者 docker ps

image20200325170031904.png

查看当前多有的容器,复制一个想要操作的容器ID

$ docker container commit -m "Add a new file" -a "wayne" aed326ade2ff wayne_tom2:v1.02

值得注意的是:如果往后希望把自定义的镜像提交到DockerHub(自行了解,不做陈述),写法:

$ docker container commit -m "fzccms" -a "wayne" 41006ef56fbe waynesx/fzccms:v1.02

提交镜像: 执行docker container commit -m "fzccms" -a "wayne" 41006ef56fbe waynesx/fzccms:v1.02命令提交镜像到本地(这个跟git的其实是一样的,先提交镜像到本地,才能推送到你的远程镜像仓库,一定要注意提交的镜像名格式 帐号/名字:如 waynesx/fzccms,否则无法推送)
解释以下上面命令的信息:
-a “wayne”为创建镜像的作者名字 -m “fzccms”为提交信息 41006ef56fbe为容器id,waynesx/fzccms为镜像名,v1.02为tag

顺利的话会返回新创建镜像的ID信息,例如: sha256:963ca9aae161ae9a43f26b93db753c8621577d371128bccd81d3998393dd1434

查看镜像: $ docker image ls

image20200325170155239.png

2、基于本地模板导入

该方法主要使用docker [container] import命令

格式:docker [image] import [OPTIONS] file |URL|-[REPOSITORY[:TAG]]

要直接导人一个镜像,可以使用OpenVZ 提供的模板来创建,或者用其他已导出的镜像模板来创建。OPENVZ模板的下载地址为http: //openvz.org/Download/templates/precreated 。例如,下载了ubuntu-18.04 的模板压缩包,之后使用以下命令导人即可:

$ cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:18.04

然后查看新导人的镜像,已经在本地存在了:

$ docker images

*未做测试内容摘自:《Docker技术入门与实战》第三版

3、基于Dockerfile创建

Dockerfile下面笔记会记录详细教程,因涉及Dockerfile相关语法,本章只做简单实例:

基于debian:stretch-slim镜像安装Python3环境,构成一个新的python:3镜像:

FORM debian:stretch-slim
LABEL version=“1.0” maintainer=”docker user <[email protected]>“
RUN apt-get update && \
    apt-get install -y python3 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

创建镜像的过程可以使用docker [image] build 命令,编译成功后本地将多出一个python:3镜像

存出和载入镜像

导出镜像

docker [image] save 和 docker [image] load命令来存出和载入镜像,该命令支持-o 、- output string 参数, 导出镜像到指定的文件中。

例如:导出本地的myubuntu镜像为文件 myubuntu:v1.0.tar

$ docker save -o myubuntu_v1.0.tar myubuntu:v1.0

image20200326160157956.png

载入镜像

docker [image] load 将导出的tar文件在导入到本地镜像库,支持 -i,-input string 选项,从指定文件中读入镜像内容

例如:从文件myubuntu_v1.0.tar导入镜像到本地镜像列表

$ docker load -i myubuntu_v1.0.tar
或
$ docker load < myubuntu_v1.0.tar

image20200326161404229.png

载入成功后可以使用docker image ls 查看镜像,与原镜像一直,镜像ID一致

**这次已经操作服务器做了更换,只要把myubuntu_v1.0.tar传到根目录下即可。这样以后开发或者项目迁移就不需要因为配置环境而烦恼,直接docker run即可,非常方便

上传镜像

上传镜像主要是使用Docker的push命令。说白了就和git一样,先是上传至本地镜像,然后push

上传镜像之前是需要登录的,要登录前提是你要有dockerhub账号,跟GitHub类似,注册不做陈述,

docker login //登录

输入用户名

输入密码

…..

docker pull waynesx/fzccms:v1.02

image20200326173854529.png

本节主要介绍Docker 镜像的push 子命令。可以使用docker [image] push 命令上传镜像到仓库,默认上传到Docker Hub 官方仓库(需要登录) 。命令格式为docker [image]push NAME [:TAG] I [REGISTRY_HOST [ :REGISTRY_PORT] / ]NAME [:TAG ] 。
用户在Docker Hub 网站注册后可以上传自制的镜像。
例如,用户user 上传本地的test :latest 镜像,可以先添加新的标签user/test:latest , 然后用docker [image ] push 命令上传镜像:

$ docker tag test:latest user/test : latest
$ docker push user/test:latest
The push refers to a repository [docker.io/user/test]
Sending image list
Please login prior to push:
Username :
Password:
Email :

第一次上传时,会提示输入登录信息或进行注册,之后登录信息会记录到本地~ / . docker
目录下。

小结

以上主要介绍了Docker的重要的也是基本的一些命令操作,包括查看 (docker image ls /docker ps /docker ps -a),获取(docker pull NAME[:TAG]),搜索(docker search NAME[:TAG]),删除(docker rm 容器ID / docker rmi 镜像ID),创建(docker [container] commit),存出(docker [image] save),载入(docker [image] load),上传(docker push NAME [:TAG]),登录(docker login)等,也可以使用docker image help命令来查看Docker支持的镜像操作子命令

image20200326175334152.png