妖怪幻 发表于 2015-4-18 01:24:29

docker开发_在basic image的基础上创建自定义的image

  方法一:docker commit
  1. 跑一个basic image,docker新建了一个容器



root@ubuntu:/home/thm/docker/test# docker run -i -t tanghuimin0713/ubuntu_amd64:14.04 /bin/bash
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers :
root@5d807872b2ba:/#
  2. 在容器内安装apache2



root@5d807872b2ba:/# apt-get update
Ign http://archive.ubuntu.com trusty InRelease      
Hit http://archive.ubuntu.com trusty Release.gpg
Hit http://archive.ubuntu.com trusty Release
Hit http://archive.ubuntu.com trusty/main i386 Packages
Get:1 http://archive.ubuntu.com trusty/main Translation-en
Fetched 762 kB in 34s (22.1 kB/s)                                                                                                            
Reading package lists... Done
root@5d807872b2ba:/#
root@5d807872b2ba:/# apt-get install apache2
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
...
...
...
  3. 退出容器,将刚才装了apache的容器创建成一个新的image



root@5d807872b2ba:/# exit
exit
root@ubuntu:/home/thm/docker/test#
root@ubuntu:/home/thm/docker/test# docker ps -l
CONTAINER ID      IMAGE                               COMMAND             CREATED             STATUS            PORTS               NAMES
5d807872b2ba      tanghuimin0713/ubuntu_amd64:14.04   /bin/bash         7 minutes ago       Exit 0                                  nostalgic_heisenberg   
root@ubuntu:/home/thm/docker/test# docker commit 5d807872b2ba tanghuimin0713/ubuntu_amd64_apache2:14.04
e7df0b3ab526c83098d54e826b4e8e1f2c6efbe0a2511c3b06b79723bacfff52
root@ubuntu:/home/thm/docker/test# docker images
REPOSITORY                            TAG               IMAGE ID            CREATED             VIRTUAL SIZE
tanghuimin0713/ubuntu_amd64_apache2   14.04               e7df0b3ab526      3 seconds ago       248.1 MB
scratch                               latest            6e1aa483880d      About an hour ago   0 B
tanghuimin0713/ubuntu_amd64         14.04               6cfee0d4349b      4 hours ago         216.8 MB
tanghuimin0713/ubuntu_amd64         latest            6cfee0d4349b      4 hours ago         216.8 MB
tanghuimin0713/ubuntu_i386            14.04               ee57f53fe012      5 hours ago         216.8 MB
tanghuimin0713/ubuntu_i386            latest            ee57f53fe012      5 hours ago         216.8 MB
ubuntu                              14.04               c4ff7513909d      9 days ago          225.4 MB
ubuntu                              trusty            c4ff7513909d      9 days ago          225.4 MB
ubuntu                              14.04.1             c4ff7513909d      9 days ago          225.4 MB
ubuntu                              latest            c4ff7513909d      9 days ago          225.4 MB
ubuntu                              14.10               75204fdb260b      9 days ago          230.1 MB
ubuntu                              utopic            75204fdb260b      9 days ago          230.1 MB
ubuntu                              12.04               822a01ae9a15      9 days ago          108.1 MB
ubuntu                              12.04.5             822a01ae9a15      9 days ago          108.1 MB
ubuntu                              precise             822a01ae9a15      9 days ago          108.1 MB
ubuntu                              12.10               c5881f11ded9      9 weeks ago         172.2 MB
ubuntu                              quantal             c5881f11ded9      9 weeks ago         172.2 MB
ubuntu                              13.04               463ff6be4238      9 weeks ago         169.4 MB
ubuntu                              raring            463ff6be4238      9 weeks ago         169.4 MB
ubuntu                              13.10               195eb90b5349      9 weeks ago         184.7 MB
ubuntu                              saucy               195eb90b5349      9 weeks ago         184.7 MB
jamtur01/puppetmaster               latest            99200e07340a      11 weeks ago      312.4 MB
ubuntu                              10.04               3db9c44f4520      4 months ago      183 MB
ubuntu                              lucid               3db9c44f4520      4 months ago      183 MB
root@ubuntu:/home/thm/docker/test#
  4. run一下刚刚新创建的image,看看container内是否存在刚刚安装的apache2



root@ubuntu:/home/thm/docker/test# docker run -t -i tanghuimin0713/ubuntu_amd64_apache2:14.04 /bin/bash
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers :
root@081572d422c7:/#
root@081572d422c7:/#
root@081572d422c7:/# apache
apache2   apache2ctlapachectl   
  5. 将新创建的image同步到docker hub
  docker push tanghuimin0713/ubuntu_amd64_apache2
  
  方法二:Dockerfile
  1. 在一个空目录下创建Dockerfile,并在Dockerfile中写入如下类似批处理的语句



root@ubuntu:/home/thm/docker/test# touch Dockerfile
root@ubuntu:/home/thm/docker/test# vim Dockerfile


1 FROM tanghuimin0713/ubuntu_amd64:14.04
2 RUN apt-get update
3 RUN apt-get install -y nginx
4 RUN echo "Hi, I am in your container" > /usr/share/nginx/html/index.html
5 EXPOSE 80
  Dockerfile中相关命令解释:
  FROM: 以"tanghuimin0713/ubuntu_amd64:14.04"为basic image运行一个container;
  RUN: 在container中执行命令;
  EXPOSE: 将镜像的80端口暴露在外,这样容器外可以看到这个端口并与其通信;
  2. docker build创建image



root@ubuntu:/home/thm/docker/test#
root@ubuntu:/home/thm/docker/test# docker build -t="tanghuimin0713/ubuntu_amd64_nginx:14.04" .
Uploading context2.56 kB
Uploading context
Step 0 : FROM tanghuimin0713/ubuntu_amd64:14.04
---> 6cfee0d4349b
Step 1 : RUN apt-get update
---> Running in dedead78ac76
Ign http://archive.ubuntu.com trusty InRelease
Hit http://archive.ubuntu.com trusty Release.gpg
Hit http://archive.ubuntu.com trusty Release
Hit http://archive.ubuntu.com trusty/main i386 Packages
Get:1 http://archive.ubuntu.com trusty/main Translation-en
Fetched 762 kB in 2min 16s (5571 B/s)
Reading package lists...
---> 3af4720f8ec3
Step 2 : RUN apt-get install -y nginx
---> Running in e6a4a63286fe
Reading package lists...
Building dependency tree...
The following extra packages will be installed:
...
...
...
Processing triggers for libc-bin (2.19-0ubuntu6) ...
Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...
---> 409a0d5cd91b
Step 3 : RUN echo "Hi, I am in your container" > /usr/share/nginx/html/index.html
---> Running in 783d8789509c
---> 9a5d96a41a0b
Step 4 : EXPOSE 80
---> Running in a2e24fc2d4b9
---> 6cd5691b7c8c
Successfully built 6cd5691b7c8c
Removing intermediate container dedead78ac76
Removing intermediate container e6a4a63286fe
Removing intermediate container 783d8789509c
Removing intermediate container a2e24fc2d4b9
root@ubuntu:/home/thm/docker/test#
  3.查看image是否创建成功



root@ubuntu:/home/thm/docker/test# docker images
REPOSITORY                        TAG               IMAGE ID            CREATED             VIRTUAL SIZE
tanghuimin0713/ubuntu_amd64_nginx   14.04               6cd5691b7c8c      30 seconds ago      259.2 MB
scratch                           latest            6e1aa483880d      2 hours ago         0 B
tanghuimin0713/ubuntu_amd64         14.04               6cfee0d4349b      5 hours ago         216.8 MB
tanghuimin0713/ubuntu_amd64         latest            6cfee0d4349b      5 hours ago         216.8 MB
tanghuimin0713/ubuntu_i386          14.04               ee57f53fe012      6 hours ago         216.8 MB
tanghuimin0713/ubuntu_i386          latest            ee57f53fe012      6 hours ago         216.8 MB
ubuntu                              14.04.1             c4ff7513909d      9 days ago          225.4 MB
ubuntu                              14.04               c4ff7513909d      9 days ago          225.4 MB
ubuntu                              latest            c4ff7513909d      9 days ago          225.4 MB
ubuntu                              trusty            c4ff7513909d      9 days ago          225.4 MB
  4. run一下新创建的image



root@ubuntu:/home/thm/docker/test# docker run -i -t tanghuimin0713/ubuntu_amd64_nginx:14.04 /bin/bash
root@45494a615738:/#
root@45494a615738:/# which nginx
/usr/sbin/nginx
  nginx命令是存在的,成功。
  5. 将新创建的image同步到docker hub
  docker push tanghuimin0713/ubuntu_amd64_nginx:14.04
页: [1]
查看完整版本: docker开发_在basic image的基础上创建自定义的image