方法一: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 : [8.8.8.8 8.8.4.4]
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 [762 kB]
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 : [8.8.8.8 8.8.4.4]
root@081572d422c7:/
#
root@081572d422c7:
/
#
root@081572d422c7:
/
# apache
apache2 apache2ctl apachectl
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 context
2.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 [762 kB]
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

