docker_Dockerfile构建镜像
构建docker镜像的文件
编写一个构建文件 Dockerfile,[Dockerfile 文件详解](#Dockerfile 文件详解)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35# 父镜像
FROM ubuntu:16.04
# 作者信息
MAINTAINER Wilker <364105996@qq.com>
# update apt-get 的源,国内的网易镜像速度比较快
RUN echo "\
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse\n\
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse\n\
deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse\n\
deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse\n\
deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse\n\
deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse\n\
deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse\n\
" > /etc/apt/sources.list
# APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加
RUN apt-get update && \
apt-get install -y python \
python-dev \
python-pip \
# 用完包管理器后安排打扫卫生可以显著的减少镜像大小
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# 配置默认放置 App 的目录
RUN mkdir -p /app
WORKDIR /app
EXPOSE 80
CMD ["bash"]构建名为 my-python-base 的镜像:
$ docker build -t my-python-base .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17wilker@ubuntu:~/Desktop/test_docker$ docker build -t my-python-base . # 注意别忘了这个 . 表示Dockerfile 文件在当前文件夹下
Sending build context to Docker daemon 3.072kB
Step 1/8 : FROM ubuntu:16.04
d355ed3537e9
Step 2/8 : MAINTAINER Wilker <364105996@qq.com>
Using cache
...
Get:1 http://mirrors.163.com/ubuntu xenial InRelease [247 kB] # 使用的源是 163 的,apt 的速度杠杠的
Get:2 http://mirrors.163.com/ubuntu xenial-security InRelease [102 kB]
Get:3 http://mirrors.163.com/ubuntu xenial-updates InRelease [102 kB]
...
Step 8/8 : CMD bash
Running in d24a7615778b
989afb411fcb
Removing intermediate container d24a7615778b
Successfully built 989afb411fcb
Successfully tagged my-python-base:latest # 至此就构建成功了查看新构建的镜像:
$ docker images
1
2
3wilker@ubuntu:~/Desktop/test_docker$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-python-base latest 989afb411fcb 14 seconds ago 386MBrun一下这个镜像
1
2
3
4
5
6
7
8
9
10
11wilker@ubuntu:~/Desktop/test_docker$ docker run -i -t my-python-base /bin/bash
root@41aa1e81c242:/app# cd /
root@41aa1e81c242:/# ls
app bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@41aa1e81c242:/# python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>> print("hello wlrod")
hello wlrod
>> exit()root@41aa1e81c242 :表示是在 实例 id 为 41aa1e81c242 的 容器 中,以 root 用户运行着,可以使用另一个 终端看下运行中的容器
$ docker ps -a
,80端口连着这个 容器1
2
3wilker@ubuntu:~/Desktop$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41aa1e81c242 my-python-base "/bin/bash" 4 seconds ago Up 3 seconds 80/tcp distracted_lamarr
退出这个镜像
1
2
3root@41aa1e81c242:/# exit
exit
wilker@ubuntu:~/Desktop/test_docker$
Dockerfile 文件详解
- 参考资料:https://hujb2000.gitbooks.io/docker-flow-evolution/content/cn/basis/dockerfiledetail.html
- ENTRYPOINT : http://www.cnblogs.com/programfish/p/4101884.html