Docker 创建image

images 是containers的基础。每次使用docker run 命令都要指定image。

列出本地images


 

[email protected]:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
zane0306/docker-whale   latest              d09756981eeb        30 hours ago        275.1 MB
ubuntu                  latest              104bec311bcd        11 days ago         129 MB
hello-world             latest              c54a2cc56cbb        5 months ago        1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago       247 MB
training/webapp         latest              6fae60ef3446        19 months ago       348.8 MB

 

寻找获取新image


寻找一下centos images。

[email protected]:~$ docker search centos
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                 The official build of CentOS.                   2949      [OK]
jdeathe/centos-ssh                     CentOS-6 6.8 x86_64 / CentOS-7 7.3.1611 x8...   51                   [OK]
nimmis/java-centos                     This is docker images of CentOS 7 with dif...   20                   [OK]
torusware/speedus-centos               Always updated official CentOS docker imag...   8                    [OK]
egyptianbman/docker-centos-nginx-php   A simple and highly configurable docker co...   6                    [OK]
nathonfowlie/centos-jre                Latest CentOS image with the JRE pre-insta...   5                    [OK]
centos/mariadb55-centos7                                                               3                    [OK]

docker pull 下载image

[email protected]:~$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos

45a2e645736c: Pull complete
Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
Status: Downloaded newer image for centos:latest

启动一个容器

[email protected]:~$ docker run  -t -i  centos /bin/bash
[[email protected] /]# ls
anaconda-post.log  dev  home  lib64       media  opt   root  sbin  sys  usr
bin                etc  lib   lost+found  mnt    proc  run   srv   tmp  var

training/sinatra下载

[email protected]:~$  docker pull training/sinatra
Using default tag: latest
latest: Pulling from training/sinatra

a3ed95caeb02: Pull complete
6e71c809542e: Pull complete
d196a7609355: Pull complete
08f6dff5acea: Pull complete
ce65532003d0: Pull complete
54bcaa4d1a10: Pull complete
8572ad96f6e1: Pull complete
Digest: sha256:03fc0cd265cbc28723e4efd446f9f2f37b4790cf9cc12f1b9203c79fb86b6772
Status: Downloaded newer image for training/sinatra:latest

创建自己的images


 

虽然training/sinatra ,image已经非常好了,但是可能我们要增加一些功能。

更新和创建images的两种方法

  • 更新容器,并提交更改结果到image
  • 使用Dockerfile 指定说明来创建一个image

更新和提交image

创建容器用来更新

[email protected]:~$ docker run -t -i training/sinatra /bin/bash
[email protected]:/#

查看正在运行的容器

[email protected]:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b9d598059fa9        training/sinatra    "/bin/bash"         45 seconds ago      Up 44 seconds                           desperate_bose

在运行的容器中让我们先升级 Ruby

[email protected]:/# apt-get install -y ruby2.0-dev ruby2.0
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
.......
.......

再来安装json

[email protected]:/# gem2.0 install json
Fetching: json-2.0.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed json-2.0.2
Parsing documentation for json-2.0.2
unable to convert "\xD0" from ASCII-8BIT to UTF-8 for lib/json/ext/generator.so, skipping
unable to convert "\xD0" from ASCII-8BIT to UTF-8 for lib/json/ext/parser.so, skipping
Installing ri documentation for json-2.0.2
1 gem installed

完成更新之后,退出容器使用exit 命令。

[email protected]:/# exit
exit
[email protected]-V:~$

提交

docker commit命令提交

-m : 说明更改

-a  :  更改作者

b9d598059fa9:更改的容器ID

sinatra:v2       :提交到sinatra image ,v2是tag;

[email protected]:~$ docker commit -m "Added json gem" -a "zane" b9d598059fa9 sinatra:v2
sha256:7902e96eb0144d64577348c02ff8accf939e5469c01df9a0911044122205b8c7

[email protected]-V:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED              SIZE
sinatra                 v2                  7902e96eb014        About a minute ago   471.2 MB
zane0306/docker-whale   latest              d09756981eeb        30 hours ago         275.1 MB
centos                  latest              67591570dd29        11 days ago          191.8 MB
ubuntu                  latest              104bec311bcd        11 days ago          129 MB
hello-world             latest              c54a2cc56cbb        5 months ago         1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago        247 MB
training/webapp         latest              6fae60ef3446        19 months ago        348.8 MB
training/sinatra        latest              49d952a36c58        2 years ago          447 MB

可以看到commit 之后,在本地出现了我们本地image

使用Dockerfile创建image

docker build 命令 读取Dockerfile 来创建image

创建目录以及Dockerfile

[email protected]:~$ mkdir sinatra
[email protected]-V:~$ cd sinatra/
[email protected]-V:~/sinatra$ touch Dockerfile

Dockerfile内容

# This is a comment
FROM ubuntu:14.04
MAINTAINER zane [email protected]
RUN apt-get update && apt-get install -y ruby ruby-dev
RUN gem install sinatra
  • #: 注释
  • FROM
    • 以哪个image为基础
  • maintainer
    • 作者
  • RUN
    • 在基础image上做一些实质性操作

docker build 创建image

[email protected]:~/sinatra$ docker build -t zane/sinatra:v1 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu:14.04
14.04: Pulling from library/ubuntu

16da43b30d89: Pulling fs layer
1840843dafed: Pulling fs layer
91246eb75b7d: Pulling fs layer
7faa681b41d7: Waiting
97b84c64d426: Waiting

-t 参数给image名称 zane/sinatra,以及标签 v1

不要忘记 . 命令,它告诉docker build 在本目录寻找调用Dockerfile。

[email protected]:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED              SIZE
zane/sinatra            v1                  c0e79450b1a1        About a minute ago   322.4 MB
sinatra                 v2                  7902e96eb014        21 minutes ago       471.2 MB
zane0306/docker-whale   latest              d09756981eeb        31 hours ago         275.1 MB
centos                  latest              67591570dd29        11 days ago          191.8 MB
ubuntu                  latest              104bec311bcd        11 days ago          129 MB
ubuntu                  14.04               3f755ca42730        11 days ago          188 MB
hello-world             latest              c54a2cc56cbb        5 months ago         1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago        247 MB
training/webapp         latest              6fae60ef3446        19 months ago        348.8 MB
training/sinatra        latest              49d952a36c58        2 years ago          447 MB

设置image的标签


 

[email protected]:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
sinatra                 v2                  7902e96eb014        18 minutes ago      471.2 MB
zane0306/docker-whale   latest              d09756981eeb        31 hours ago        275.1 MB
centos                  latest              67591570dd29        11 days ago         191.8 MB
ubuntu                  latest              104bec311bcd        11 days ago         129 MB
ubuntu                  14.04               3f755ca42730        11 days ago         188 MB
hello-world             latest              c54a2cc56cbb        5 months ago        1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago       247 MB
training/webapp         latest              6fae60ef3446        19 months ago       348.8 MB
training/sinatra        latest              49d952a36c58        2 years ago         447 MB

给sinatra增加一个tag vv

[email protected]:~$ docker tag 7902e96eb014 sinatra:vv

[email protected]-V:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE B
sinatra                 v2                  7902e96eb014        19 minutes ago      471.2 MB
sinatra                 vv                  7902e96eb014        19 minutes ago      471.2 MB
zane0306/docker-whale   latest              d09756981eeb        31 hours ago        275.1 MB
centos                  latest              67591570dd29        11 days ago         191.8 MB
ubuntu                  latest              104bec311bcd        11 days ago         129 MB
ubuntu                  14.04               3f755ca42730        11 days ago         188 MB
hello-world             latest              c54a2cc56cbb        5 months ago        1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago       247 MB
training/webapp         latest              6fae60ef3446        19 months ago       348.8 MB
training/sinatra        latest              49d952a36c58        2 years ago         447 MB

当然也可以给指定不同的repository名称,以及tag名;

[email protected]:~$ docker tag 7902e96eb014 zane-sinatra:vv
[email protected]-V:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED              SIZE
sinatra                 v2                  7902e96eb014        21 minutes ago       471.2 MB
sinatra                 vv                  7902e96eb014        21 minutes ago       471.2 MB
zane-sinatra            vv                  7902e96eb014        21 minutes ago       471.2 MB
zane0306/docker-whale   latest              d09756981eeb        31 hours ago         275.1 MB
centos                  latest              67591570dd29        11 days ago          191.8 MB
ubuntu                  latest              104bec311bcd        11 days ago          129 MB
ubuntu                  14.04               3f755ca42730        11 days ago          188 MB
hello-world             latest              c54a2cc56cbb        5 months ago         1.848 kB
docker/whalesay         latest              6b362a9f73eb        19 months ago        247 MB
training/webapp         latest              6fae60ef3446        19 months ago        348.8 MB
training/sinatra        latest              49d952a36c58        2 years ago          447 MB

 

image摘要

$ docker images --digests | head REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE ouruser/sinatra latest sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 5db5f8471261 11 hours ago 446.7 MB
 

可以用来指定要拉下来的是哪个版本

 

push image 到 Docker Hub

[email protected]:~$ docker push zane/sinatra
The push refers to a repository [docker.io/zane/sinatra]
e9170f93385d: Preparing
d375b10aba64: Preparing
4fcb79d431cc: Preparing
4375cecd293e: Preparing
738d3f35b582: Preparing
53edc9780c07: Waiting
bc224b1b676d: Waiting
unauthorized: authentication required

 

删除本地image

[email protected]:~$ docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-[email protected]:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Deleted: sha256:c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc
Deleted: sha256:a02596fdd012f22b03af6ad7d11fa590c57507558357b079c3e8cebceb4262d7

总结


  1. 寻找获取新image

    • docker search centos
  2. 从docker hub 上pull下来
    • docker pull centos
  3. 启动一个容器
    • docker run  -t -i  centos /bin/bash
  4. 创建image两种方式
      • 更新容器,并提交更改结果到image

        • a.运行容器
        • b.安装新软件如:ruby,python,json
        • c.提交
          • docker commit -m "Added json gem" -a "zane" b9d598059fa9 sinatra:v2
          • -m :说明,-a:作者,
          • 将容器b9d598059fa9的更改提交到sinatra 镜像的V2标签
      • 使用Dockerfile,创建新image
        • 编写dockerfile
        • 运行build 命令
  5. 给image增加标签
    • docker tag 7902e96eb014 sinatra:vv
时间: 2024-09-27 23:30:33

Docker 创建image的相关文章

Docker创建MySQL集装箱

原文链接:Docker创建MySQL集装箱 这样做的目的是创建一个MySQL的image,出来的容器里自己主动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个文件夹并在文件夹下创建一个Dockerfile,文件内容例如以下 FROM centos:centos6 MAINTAINER Fanbin Kong "[email protected]" RUN yum install -y mysql-server mysql RUN /etc/init.d/mysqld star

Docker创建MySQL容器

原文链接:Docker创建MySQL容器 本文目的是创建一个MySQL的image,并且在新创建出来的容器里自动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6 MAINTAINER Fanbin Kong "[email protected]" RUN yum install -y mysql-server mysql RUN /etc/init.d/mysqld start &

基于docker创建ansible以及管理容器节点

基于docker创建ansible以及管理容器节点 场景:在学习条件有限情况下,如果通过一台VM来完成docker和ansible的学习 解决:先创建自定义镜像-->构建多个ansible容器. 当然此法适用于其他类似场景. VM环境: OS:centos7 Docker version 1.12.3, build 6b644ec docker-compose version 1.8.1, build 878cff1 关键点: Dockerfile 编写优化 Docker-compose.yml

docker 创建实例

docker创建mysql实例要注意表名大小写和端口号映射的问题.下面是使用文件挂载解决表名大小写问题. docker run --name mysql-1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /Users/admin/mysql/conf.d:/etc/mysql/conf.d -d mysql:5.6 原文地址:https://www.cnblogs.com/rayallenbj/p/8763091.html

docker 创建私有镜像仓库

docker 创建私有镜像仓库1创建配置文件 {"insecure-registries":["192.168.1.10:5000"] //本地仓库地址}2.重启动docker服务systemctl restart docker3.启动私有仓库docker run -d -p 5000:5000 registry:latest4.上传镜像到私有仓库给镜像打标签后上传 docker tag nginx:latest 192.168.1.10:5000/nginx:la

docker 创建容器的时候的坑

其实这个题目的话,对于我后面陈述的问题发生的本身并没有太多的联系,但是因为是在docker创建容器的操作之内发生的,所以记录以下 因为网上有些文章有些作者喜欢使用git的命令窗体,说实在的,公司里面用过linux,mac,以至于也习惯了它们的一些操作命令,但是windows的话还是稍微有那么一丢丢的不同的,所以为了适应,我也在我的电脑上选择了使用git的命令窗体来做操作,刚开始的时候任何命令都没有任何问题 但是就在我使用命令创建容器的时候,问题出现了,这里我使用两个例子,一个是postgres,

docker 创建容器时指定容器ip

Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定. 在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的. 我们可以创建自己的bridge网络 : mynet,创建容器的时候指定网络为mynet并指定ip即可. 查看网络模式 docker network ls 创建一个新的bridge网络 docker network create --driver bridge --subnet=172.18.12.0/16 --gatewa

Docker 创建容器 查看容器状态

Docker 创建容器 1.拉取镜像 默认是 docker.io 仓最新镜像 docker pull tomcat 2.运行一个服务容器 docker run -d -p 0.0.0.0:18080:8080 --name tomcat-web1 tomcat -d:让容器在后台运行. -P:将容器内部使用的网络端口映射到我们使用的主机上 -p:指定端口 --name: 给容器命名 tomcat-web1最后一个 tomcat 是使用的镜像 3.创建启动 一个 centos 系统容器: dock

使用docker创建静态网站应用-多种方式

原文:使用docker创建静态网站应用-多种方式 能承载静态网站的服务器有很多,本文使用,nginx.apache.tomcat服务器演示docker静态网站应用设置 一,创建docker文件, 不同服务器的docker文件不一样,下面分别创建nginx.apache.tomcat三个服务器的docker文件,其实主要就是区别于FROM标签于项目文件目录 目录结构褥子: 1,nginx 的 docker文件 FROM nginx COPY ./www /usr/share/nginx/html/

物理机centos6上使用docker创建centos7容器并在容器中使用KVM搭建win10系统

环境都通过前面几篇随笔摸索中搭建好了,以下就是简单的将docker创建centos7容器并配置好win10系统的过程记录一下.  1.创建win10容器 docker run -d --name win10 -p 5900:5900 -p 5901:5901 -p 5902:5902 -p 5903:5903 -p 5904:5904 -p 5905:5905 -v /data/zkdocker/vm:/data/zkdocker/vm --privileged=true centos:7 /u