Linux系统历史衍生图:

搜索镜像

从docker官方镜像仓库搜索镜像

docker search [OPTIONS] TERM

OPTIONS:

–automated :只体现自动创制的镜像,默认值为fasle

–filter,-f :显示过滤后的摸索结果

–limit :突显的最大搜索结果,默许值为25

–no-trunc : 突显完整的镜像描述,默许值为fasle

–stars :列出收藏数不低于指定值的镜像,默许值为0

搜索ubuntu镜像

[root@docker ~]# docker search ubuntu
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                       Ubuntu is a Debian-based Linux operating s...   6198      [OK]       
rastasheep/ubuntu-sshd                       Dockerized SSH service, built on top of of...   90                   [OK]
ubuntu-upstart                               Upstart is an event-based replacement for ...   74        [OK]       
ubuntu-debootstrap                           debootstrap --variant=minbase --components...   30        [OK]       
torusware/speedus-ubuntu                     Always updated official Ubuntu docker imag...   28                   [OK]
nuagebec/ubuntu                              Simple always updated Ubuntu docker images...   22                   [OK]
nickistre/ubuntu-lamp                        LAMP server on Ubuntu                           20                   [OK]
solita/ubuntu-systemd                        Ubuntu + systemd                                8                    [OK]
nimmis/ubuntu                                This is a docker images different LTS vers...   7                    [OK]
darksheer/ubuntu                             Base Ubuntu Image -- Updated hourly             3                    [OK]
vcatechnology/ubuntu                         A Ubuntu image that is updated daily            1                    [OK]
webhippie/ubuntu                             Docker images for ubuntu                        1                    [OK]
jordi/ubuntu                                 Ubuntu Base Image                               1                    [OK]
admiringworm/ubuntu                          Base ubuntu images based on the official u...   1                    [OK]
konstruktoid/ubuntu                          Ubuntu base image                               0                    [OK]
forumi0721ubuntuaarch64/ubuntu-aarch64-dev   ubuntu-aarch64-dev                              0                    [OK]
labengine/ubuntu                             Images base ubuntu                              0                    [OK]
forumi0721ubuntuarmhf/ubuntu-armhf-dev       ubuntu-armhf-dev                                0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-armbian   ubuntu-x64-dev-armbian                          0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-android   ubuntu-x64-dev-android                          0                    [OK]
teamrock/ubuntu                              TeamRock's Ubuntu image configured with AW...   0                    [OK]
smartentry/ubuntu                            ubuntu with smartentry                          0                    [OK]
datenbetrieb/ubuntu                          custom flavor of the official ubuntu base ...   0                    [OK]
lynxtp/ubuntu                                https://github.com/lynxtp/docker-ubuntu         0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev           ubuntu-x64-dev                                  0                    [OK]

搜索busybox官方镜像。并且stars数不少于3的镜像

[root@docker ~]# docker search --filter "is-official=true" --filter "stars=3" busybox
NAME      DESCRIPTION           STARS     OFFICIAL   AUTOMATED
busybox   Busybox base image.   1044      [OK]       
  • 1.取得镜像
  • 2.列出镜像
  • 3.创办镜像
    • 3.1
      修改已有镜像
    • 3.2
      使用Dockerfile创造镜像

      • 创建Dickerfile文件
      • 应用build来成立镜像
      • 接纳新创设的镜像来启动容器
  • 4.移除镜像
  • 5.导入和导出
    • 5.1保存镜像到当地
    • 5.2导入本地文件到镜像
  • 6.其他
    • 6.1修改镜像标签
    • 6.2上传镜像

传送门:
Docker学习笔记(1)–Docker安装(Ubuntu
16.04)
Docker学习笔记(2)–使用Docker Hub
Mirror加快Docker官方镜像下载
Docker学习笔记(3)–什么是Docker镜像、容器和货栈?
Docker学习笔记(4)–镜像篇

 

镜像下载

从镜像仓库下载镜像,不点名仓库的地址将默许从Docker Hub官方仓库下载镜像

不指定镜像的tag将下载默许latest镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

从docker官方镜像仓库下载nginx镜像

[root@docker yum.repos.d]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e6e142a99202: Pull complete 
8c317a037432: Pull complete 
af2ddac66ed0: Pull complete 
Digest: sha256:72c7191585e9b79cde433c89955547685db00f3a8595a750339549f6acef7702
Status: Downloaded newer image for nginx:latest

从指定的镜像仓库192.168.0.180/pan 下载镜像

[root@docker ~]# docker pull 192.168.0.180/pan/pod
Using default tag: latest
latest: Pulling from pan/pod
5a865e48f2fd: Pull complete 
a778b52f148e: Pull complete 
8d6f83433b16: Pull complete 
Digest: sha256:a542e98ed123fbba93b820b896d5f563f003bf07b59d5943b591a10f16ce1211
Status: Downloaded newer image for 192.168.0.180/pan/pod:latest

1.获取镜像

docker pull

# 从官方获取ubuntu仓库标记为12.04的镜像
docker pull alpine:3.2

# 从第三方registry.hub.docker.com获取ubuntu仓库标记为12.04的镜像
docker pull registry.hub.docker.com/alpine:3.2

运行docker run -t -i alpine:3.2 /bin/bash开行镜像

基本概念

Docker镜像可以用来创设Docker容器,为一个只读的模版。

Docker运行容器前要求地面存在对应的镜像,如若镜像不在本地,Docker会从镜像仓库下载。

docker的镜像实际上由一层一层的文件系统组成,那种层级的文件系统被号称UnionFS。在Docker镜像的最尾部是bootfs。这一层与咱们优秀的Linux/Unix系统是同等的,包罗boot加载器和水源。当boot加载达成之后所有基础就都在内存中了,此时内存的使用权已由bootfs转交给基础,此时系统也会卸载bootfs。Docker在bootfs之上的一层是rootfs(根文件系统)。rootfs就是各个不相同的操作系统发行版,比如Ubuntu,Centos等等。

鉴于 Docker 使用一个联合文件系统,Docker
进度认为凡事文件系统是以读写格局挂载的。
可是享有的变动都发出顶层的可写层,而下层的固有的只读镜像文件并未变化。由于镜像不可写,所以镜像是无状态的。

docker镜像的层级结构图:

澳门金沙国际 1

ubuntu镜像:

下载碰到的难题:

若是个人仓库未开启https连接,docker默许使用https连接镜像仓库将促成力不从心下载镜像,编辑文件/etc/docker/daemon.json将民用仓库添加为可信赖任仓库,没有该文件可手动成立

vi /etc/docker/daemon.json
{
  "insecure-registries" : ["192.168.0.180"]
}

没完没了创新,从入门到舍弃。只要docker版本太低,此方法无用,则编辑/etc/sysconfig/docker文件,添加可看重任仓库

vi  /etc/sysconfig/docker
INSECURE_REGISTRY='--insecure-registry 192.168.0.180'

2.列出镜像

docker images,其中ID相同则表示同意镜像

收获镜像

Arch镜像:

镜像操作

3.创设镜像

从Docker Hub仓库获取

当前 Docker 官方维护了一个国有仓库 Docker Hub,其中已经席卷了跨越 15,000
的镜像。一大半必要,都足以透过在 Docker Hub
中一直下载镜像来兑现。可以采取 docker pull
命令来从仓库获取所必要的镜像。

譬如从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像:

sudo docker pull ubuntu:12.04S

突发性官方仓库注册服务器下载较慢,可以从其余仓库下载,如下所述。

CentOS镜像:

翻看本地镜像

[root@docker ~]# docker images 
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
nginx                   latest              c246cd3dd41d        9 days ago          107MB
192.168.0.180/pan/pod   latest              be92a7c78132        6 weeks ago         205MB

3.1 修改已有镜像

  • 利用run启动镜像
  • 修改内部内容
  • exit退出
  • docker commit -m “备注” -a “Jasper Xu sorex@163.com
    jasperxu/alpine:v2
    运行docker run -t -i jasperxu/alpine:v2 /bin/bash启动镜像

从Docker Hub Mirror获取

在《Docker学习笔记(2)–使用Docker Hub
Mirror加快Docker官方镜像下载》介绍了怎么通过DaoCloud提供Docker
Hub Mirror服务拓展镜像的增速下载。

比如说使用ocker Hub Mirror服务下载一个 CentOS 操作系统的镜像:

dao pull centos

镜像的拉取进度如下图所示:

澳门金沙国际 2

Fedora镜像:

导出本地镜像

镜像下载到本地后存放在分层文件系统中,实用docker
save命令可以将其导入到一个一般性文书中

[root@docker ~]# docker save -o /root/nginx-img.tar nginx
[root@docker ~]# file /root/nginx-img.tar
/root/nginx-img.tar: POSIX tar archive
[root@docker ~]# ll -h /root/nginx-img.tar
-rw------- 1 root root 107M Jul  2 23:59 /root/nginx-img.tar

3.2 使用Dockerfile创设镜像

当地镜像

使用docker images来得本地已有镜像。

ymhou@ubuntu:~$ sudo docker images
[sudo] ymhou 的密码: 
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
aspnet-equip2                           latest              7db79b00dfc6        13 hours ago        1.352 GB
aspnet-equip                            latest              c43889d0c994        13 hours ago        828.2 MB
aspnet-hello-web                        latest              0caea7860935        13 hours ago        1.228 GB
ubuntu                                  14.04               c8ceaee85d23        5 days ago          188 MB
hello-world                             latest              c54a2cc56cbb        3 weeks ago         1.848 kB
microsoft/aspnet                        latest              137814287352        5 weeks ago         815.2 MB
daocloud.io/daocloud/daocloud-toolset   latest              1ab33797d8a1        3 months ago        150.2 MB
training/webapp                         latest              694deee4f65f        14 months ago       348.8 MB
training/postgres                       latest              ed8be1ec6753        2 years ago         364.6 MB

里面包含了如下信息:仓库,标记,ID,创立时间,大小。

其中镜像的 ID 唯一标识了镜像;
TAG 音信用来标记来自同一个仓房的不等镜像。例如 ubuntu
仓库中有五个镜像,通过 TAG 音信来区分发行版本,例如
10.04、12.04、12.10、13.04、14.04 等。

Debian镜像:

导入本地镜像

将导出的镜像文件导入到本地镜像库

[root@docker ~]# docker load --input nginx-img.tar 
54522c622682: Loading layer [==================================================>]  58.44MB/58.44MB
1c3fae42c500: Loading layer [==================================================>]   52.7MB/52.7MB
87823f21b793: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest

创建Dickerfile文件

上边就是一个Dockerfile文件示例

# This is a commit
FROM alpine:3.2
MAINTAINER Jasper Xu <sorex@163.com>

RUN apk update &&      apk add socat &&        rm -r /var/cache/

注:详情见02

搜索镜像

Docker的表征之一是人人成立了各样各个的docker镜像。而且这个镜像已经被上传到了Docker
Hub。大家可以从Docker
Hub网站来搜索镜像;同样的,此前大家提到的DaoCloud也提供了镜像搜索服务。

澳门金沙国际 3

Docker Hub

澳门金沙国际 4

DaoCloud

我们也得以动用docker search一声令下来搜索镜像:

sudo docker search [server/]registry[:tag]

当未指定server时,默许从官方仓库注册服务器搜索,当未指定tag时,默许为latest版本镜像。比如寻找mysql

ymhou@ubuntu:~$ sudo docker search mysql
[sudo] ymhou 的密码: 
NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                      MySQL is a widely used, open-source relati...   2748      [OK]       
mysql/mysql-server         Optimized MySQL Server Docker images. Crea...   177                  [OK]
centurylink/mysql          Image containing mysql. Optimized to be li...   46                   [OK]
sameersbn/mysql                                                            36                   [OK]
appcontainers/mysql        Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql           MySQL Server based on Ubuntu 14.04              6                    [OK]
alterway/mysql             Docker Mysql                                    2                    [OK]
drupaldocker/mysql         MySQL for Drupal                                2                    [OK]
azukiapp/mysql             Docker image to run MySQL by Azuki - http:...   2                    [OK]
yfix/mysql                 Yfix docker built mysql                         2                    [OK]
...

大家看看了回来了汪洋的mysql镜像。我们看出列表中有镜像名称、描述、Stars(衡量镜像的风行水平-如若用户喜爱那个镜像他就会点击stars)和官方活动构建镜像状态。

 

澳门金沙国际 ,上传镜像到私有镜像仓库

  1. 登录镜像仓库

[root@docker ~]# docker login 192.168.0.180
Username: admin
Password: 
Login Succeeded
  1. 将镜像打一个新的号子

[root@docker ~]# docker tag c246cd3dd41d 192.168.0.180/pan/test
[root@docker ~]# docker images 
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
192.168.0.180/pan/test   latest              c246cd3dd41d        9 days ago          107MB
nginx                    latest              c246cd3dd41d        9 days ago          107MB
192.168.0.180/pan/pod    latest              be92a7c78132        6 weeks ago         205MB
  1. 上传镜像到192.168.0.180私有镜像仓库

[root@docker ~]# docker push 192.168.0.180/pan/test
The push refers to a repository [192.168.0.180/pan/test]
87823f21b793: Pushed 
1c3fae42c500: Pushed 
54522c622682: Pushed 
latest: digest: sha256:72c7191585e9b79cde433c89955547685db00f3a8595a750339549f6acef7702 size: 948

至于私有镜像仓库的创制后面小说会介绍。

动用build来创建镜像

docker build -t jasperxu/alpine:v3 .

  • -t 仓库名称
    jasperxu/alpine,jasperxu/alpine:v3,帮衬多个docker build -t jasperxu/alpine:v3 -t jasperxu/aaa .
  • . Dockerfile文件所在路径(当前目录),若是在上一流目录可接纳./alpine

创造镜像

一经在官方服务器上没有和谐索要的镜像,我们得以友善创制一个新的镜像。创造镜像有三种艺术。

剔除镜像

去除本地镜像库中的镜像

[root@docker ~]# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:72c7191585e9b79cde433c89955547685db00f3a8595a750339549f6acef7702
Deleted: sha256:c246cd3dd41d35f9deda43609cdeaa9aaf04d3658f9c5e38aad25c4ea5efee10
Deleted: sha256:faff6e89a68845db6912629dd8b5647545f9198c5e312327a853508f25398c4d
Deleted: sha256:17634c028290a76bf93f15b178f7534cca4a38aede119fa760e319019a7bf9c7
Deleted: sha256:54522c622682789028c72c5ba0b081d42a962b406cbc1eb35f3175c646ebf4dc

借使镜像创造了容器,将无法删除该镜像,删除容器后在剔除该镜像

利用新创设的镜像来启动容器

docker run -t -i jasperxu/alpine:v3 /bin/bash

修改已有镜像

第一利用已有镜像创设容器,然后在容器里面达成大家须要的操作,最终将新的容器使用dockercommit交给到当地镜像库。

sudo docker commit -m "commit information" -a "user information" Container_ID Image:Tag

其中,-m 来指定提交的辨证音信,跟我们采纳的版本控制工具一样;-a
可以指定更新的用户音讯;之后是用来创制镜像的器皿的
ID;最终指定目的镜像的堆栈名和 tag 信息。成立成功后会重回这一个镜像的 ID
音讯。

例如:

sudo docker commit -m "add new file" -a "ymhou" 0b2616b0e5a8 mysql-db:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c

4.移除镜像

docker rmi xxxxxxxxxxxx
docker rmi jasperxu/alpine
docker rmi jasperxu/alpine:v3

移除镜像前须求移除器重于该镜像的享有容器使用docker rm

利用Dockerfile创设镜像

首先生成一个成立镜像的Dockerfile文件,包涵部分哪些创设镜像的一声令下,然后运行docker build一声令下成立镜像。
比如下边的Dockerfile文件:

ymhou@ubuntu:~/equip$ vim Dockerfile 

From microsoft/aspnet

COPY . /app
WORKDIR /app
RUN ["dnu","restore"]

EXPOSE 5004
ENTRYPOINT ["dnx","-p","project.json","web"]

编辑成功 Dockerfile 后得以运用 docker build 来生成镜像。

sudo docker build -t="aspnet-mvc:v2" .

其中 -t 标记来添加 tag,指定新的镜像的用户音信。 “.” 是 Dockerfile
所在的门路(当前目录),也足以替换为一个实际的 Dockerfile 的门道。

5.导入和导出

从当地文件系统导入

假诺为从容器生成的镜像则运用docker import导入,假诺为从镜像导出的镜像,则接纳docker load导入。

5.1保存镜像到地面

docker save jasperxu/alpine:v3 > alpine.tar

导出和载入镜像

5.2导入本地文件到镜像

docker load < alpine.tar

导出镜像

一旦要导出镜像到地头文件,能够运用 docker save 命令。

sudo docker save -o ubuntu14.04.tar ubuntu:14.04

6.其他

载入镜像

可以动用 docker load 从导出的当地文件中再导入到本地镜像库,例如:

sudo docker load --input ubuntu14.04.tar

sudo docker load < ubuntu14.04.tar

6.1修改镜像标签

docker tag xxxxxxxxxxxx jasperxu/alpine:devel

去除本地镜像

使用docker rmi指令删除本地镜像。

ymhou@ubuntu:~/equip$ sudo docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
aspnet-equip2                           latest              7db79b00dfc6        17 hours ago        1.352 GB
aspnet-equip                            latest              c43889d0c994        18 hours ago        828.2 MB
aspnet-hello-web                        latest              0caea7860935        18 hours ago        1.228 GB
ubuntu                                  14.04               c8ceaee85d23        5 days ago          188 MB
hello-world                             latest              c54a2cc56cbb        3 weeks ago         1.848 kB
microsoft/aspnet                        latest              137814287352        5 weeks ago         815.2 MB
daocloud.io/daocloud/daocloud-toolset   latest              1ab33797d8a1        3 months ago        150.2 MB
training/webapp                         latest              694deee4f65f        14 months ago       348.8 MB
training/postgres                       latest              ed8be1ec6753        2 years ago         364.6 MB
ymhou@ubuntu:~/equip$ sudo docker rmi aspnet-equip
Untagged: aspnet-equip:latest
Deleted: sha256:c43889d0c994d425a6cc4ec5333186c4aa771a7b82325a698254b95edc4ea1fa
Deleted: sha256:aee0abb3d94c523b30df01cbb4465b49d63cf2159696d6383bb2d079d6aa10e7
Deleted: sha256:411d2ea3ecbc324a13d1c72b6103e20a996d99954b15eb91b3130623323794d2
Deleted: sha256:d06161776c4b435c672fed1ee6ac54013781d253ba58581cb2cf4263aa4ca311
Deleted: sha256:5b601853e6b6ca283954848d460cecb1b385269dea98c19e59193e256e4124c9
Deleted: sha256:9409ca5cff2757904d32b3a887e171bc8ad2a0d537996d4f4da50adc491e20d4
Deleted: sha256:aa488445dd361a59d30361bd5849fc4b61763dd577436066945f67b74d5823cf

6.2上传镜像

docker push jasperxu/alpine

Reference

https://yeasy.gitbooks.io/docker\_practice/content/index.html

相关文章