docker的镜像操作

Union文件系统是Docker镜像的基础。

UnionFS(联合文件系统):Union文件系统是一种分层,轻量级并且高性能的文件系统。它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同的目录挂载到同一个虚拟文件系统下。

最上层是可写层。

1:下载镜像:格式 docker [image] pull [仓库地址]/NAME:TAG

ubuntu@ubuntu:~$ docker pull registry.hub.docker.com/ubuntu:18.04      #下载ubuntu镜像,标签为18.04
ubuntu@ubuntu:~$ docker pull centos:7.2.1511 #下载一个centos镜像

2:查看本地仓库的镜像

ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 12 days ago 64.2MB
ubuntu latest 775349758637 12 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
#latest标签的版本是不稳定的,会随着版本更新而变化,建议使用稳定带标签的版本
#查看子命令:man docker-images

3:使用镜像创建一个容器

ubuntu@ubuntu:~$ docker run  -ti 775349758637  /bin/bash
root@e6cce6710d88:/# ubuntu@ubuntu:~$ docker run -it ubuntu:18.04 bash
root@fc41542c62b5:/#

4;使用tag命令为本地镜像添加别名

ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu latest 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
ubuntu@ubuntu:~$ docker tag ubuntu:18.04 myubuntu:18.04 # 添加别名
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu latest 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB #别名IMAGE ID是一样的,指向同一个镜像

5:使用inspect命令查看详细信息docker [image] inspect 镜像

ubuntu@ubuntu:~$ docker inspect ubuntu:18.04
[
{
"Id": "sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c",
"RepoTags": [
"myubuntu:18.04",
"ubuntu:18.04",
"ubuntu:latest"
],
"RepoDigests": [
"ubuntu@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
],
"Parent": "",
"Comment": "",
"Created": "2019-10-31T22:20:37.714423666Z",
"Container": "4df7a03525342ee760076ade1c80bbdd041f236654f624ca581ada54310a1574",
"ContainerConfig": {
"Hostname": "4df7a0352534",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
...
-f:查看某一个特定字段的内容
ubuntu@ubuntu:~$ docker inspect -f {{".Id"}} ubuntu:18.04
sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c
ubuntu@ubuntu:~$ docker inspect -f='{{ .NetworkSettings.Networks.bridge.IPAddress }}' 92c
172.17.0.2
ubuntu@ubuntu:~$ docker inspect --format {{".NetworkSettings.Networks.bridge.IPAddress"}} 92c #不要有空格
172.17.0.2
#注意格式-f{{.xxxx}}

6:使用history查看镜像历史

ubuntu@ubuntu:~$ docker history --no-trunc  ubuntu:18.04

7:搜寻镜像

查看帮助文档 man docker-search
ubuntu@ubuntu:~$ docker search --filter=stars=3 nginx

8.删除镜像docker rmi IMAGe[IMAGE...]

1:删除自定义标签myubuntu镜像
ubuntu@ubuntu:~$ docker rmi myubuntu:18.04
Untagged: myubuntu:18.04
#同一镜像拥有多个标签,只删除指定的标签 2:查看本机所有存在的容器
ubuntu@ubuntu:~$ docker ps ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc41542c62b5 775349758637 "bash" 3 hours ago Up 3 hours sleepy_roentgen CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc41542c62b5 775349758637 "bash" 3 hours ago Up 3 hours sleepy_roentgen 3:无法删除正在运行的镜像
ubuntu@ubuntu:~$ docker rmi ubuntu:latest
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - container fc41542c62b5 is using its referenced image 775349758637 4:-f参数强制删除正在运行的容器(不推荐使用)
ubuntu@ubuntu:~$ docker rmi -f ubuntu:latest
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d

9:清理docker运行产生的临时镜像文件

ubuntu@ubuntu:~$ docker image prune -f    #强制删除遗留的临时镜像文件层
Total reclaimed space: 0B
# -a:删除所有无用的镜像

10:创建镜像

方法1:基于已有容器创建

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

-a :作者信息

-c:提交时执行的Dockerfile文件,包括CMD|ENV|LABEL等等

-m:提交的信息,评论解释

-P:提交时候暂停容器运行

案例:

1:启动一个镜像,并在里面创建一个文件
ubuntu@ubuntu:~$ docker run -it ubuntu:18.04 /bin/bash
root@f20664a41969:/# pwd
/
root@f20664a41969:/# touch test.txt
root@f20664a41969:/# exit
exit #记住容器ID:f20664a41969 2:提交一个新的镜像
ubuntu@ubuntu:~$ docker commit -m "Add a new file test.txt" -a "author_007" f20664a41969 test:0.1
sha256:55f6618d9cdf8c56a1d80b0f0926341da231613a4e7646f47b0b7ab47c5eb21f   #新的镜像id 3:查看当前镜像
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 55f6618d9cdf About a minute ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB 4:运行镜像test:0.1查看是否有test文件
ubuntu@ubuntu:~$ docker run -it test:0.1 /bin/bash
root@acfd9348cffe:/# ls
bin dev home lib64 mnt proc run srv test.txt usr
boot etc lib media opt root sbin sys tmp var

方法2:基于本地模板导入

方法3:基于Dockerfile创建

11:存出和载入镜像

1:导出镜像到本地文件
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 55f6618d9cdf 10 minutes ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
ubuntu@ubuntu:~$ docker save -o ubuntu_18.04.tar ubuntu:18.04  #导出镜像
ubuntu@ubuntu:~$ ls
apt-transport-https linux-image-extra-5.3.0-19-generic snap
ca-certificates Music Templates
curl new_ubuntu.txt ubuntu_18.04.tar 2:将导出的tar文件再导入本地镜像库 ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB ubuntu@ubuntu:~$ docker load -i ubuntu_18.04.tar   #导入镜像
Loaded image: ubuntu:18.04
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB

03docker镜像的更多相关文章

  1. bayaim——听课笔记_01.Docker基础应用 10课.txt

    ===========2019年8月5日18:39:06====================10.20.100.21rootbayaim ==========01-Docker介绍======== ...

  2. 03-docker入门-创建 docker 镜像

    方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...

  3. 03--Docker 容器和镜像常用命令

    一.帮助命令 docker version docker info docker --help =====================镜像命令=========================== ...

  4. NuGet镜像上线试运行

    为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...

  5. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  6. Android SDK 在线更新镜像服务器资源

    本文转自:http://blog.kuoruan.com/24.html.感谢原作者. 什么是Android SDK SDK:(software development kit)软件开发工具包.被软件 ...

  7. Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]

    1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...

  8. Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷

    今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...

  9. 如何用Dockerfile创建镜像

    本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5181222.html 创建镜像的目的 首先说DockerHub或其它一些镜像仓库已经提供了够多的镜像,有 ...

随机推荐

  1. scarpy crawl 爬取微信小程序文章

    import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider ...

  2. Nginx-HTTP之ngx_http_top_body_filter

    1. ngx_http_top_body_filter 该链表用于构造响应消息的响应正文. 大致有以下模块在该链表中插入了自己的函数: ngx_http_range_filter_module: ng ...

  3. react-hook设定定时器的方法

    const useInterval = (callback, delay) => { const savedCallback = useRef(); // 保存新回调 useEffect(() ...

  4. ant-pro使用Form表单验证上传图片出现的问题

    1.复现:用antd的Form表单验证上传图片必填项时出现问题:复现过程,先提交,提示图片需要上传,上传成功后,依旧提示:图片未上传 2.表单验证原理:先理解一下antd的Form表单验证的表层原理, ...

  5. Java特殊数据结构-TreeSet

    资料来源 TreeSet初步入门总结 https://www.cnblogs.com/yzssoft/p/7127894.html TreeSet自然排序与比较器排序精讲 https://blog.c ...

  6. 适用于hips ui的iPhoneX及以上适配方案

    版本信息: hips ui: 0.1.43 须知: 随着hips ui的迭代,可能会解决适配问题,所以下面的方案是有时效性的. 如果你项目上很紧急,可以直接看第三部分解决方案,复制粘贴代码即可. 一. ...

  7. [CDH] New project for ML pipeline

    启动后台服务: [CDH] Cloudera's Distribution including Apache Hadoop 这里只介绍一些基本的流程,具体操作还是需要实践代码. 一.开发环境配置 JD ...

  8. 扩展:Zero Copy

  9. Java日志体系(八)最佳实践

    java常用日志框架关系 Log4j 2与Log4j 1发生了很大的变化,Log4j 2不兼容Log4j 1. Logback必须配合Slf4j使用.由于Logback和Slf4j是同一个作者,其兼容 ...

  10. cmake编译排除文件夹

    在CMakeLists.txt中,要对某些子文件夹全部进行编译则使用 add_subdirectory(examples) 那如果在examples文件夹中建立了某个目录如examples/venv, ...