目录
2、以nginx为基础镜像编写dockerfile,并要求镜像内安装一个tcpdump工具。
一:dockerfile自制镜像
容器只能使用 Host 的 kernel,并且不能修改。所有容器都共用 host 的 kernel,在容器中没办法对 kernel 升级。上层提供各自的 rootfs,底层共用 Docker Host 的 kernel。
1、介绍dockerfile的指令
FROM:指定基础镜像
MAINTAINER:镜像维护者姓名或邮箱地址
WORKDIR:指定进入容器的时候,在哪个目录下
COPY:复制宿主机里的文件或者目录到容器里的某个目录下(推荐使用)
ADD:复制宿主机里的文件或者目录到容器里的某个目录下(某些压缩文件会自动解压)
RUN:在制作镜像的时候运行的
CMD:启动容器的时候运行命令的
ENTRYPOINT:启动容器的时候运行命令的,docker run的时候传递参数到容器里
ENV:定义环境变量
EXPOSE:申明开放的端口号
ARG:在制作镜像的时候,使用
VOLUME:在容器里使用卷,作用:就是将容器里的某个路径挂载到宿主机的卷上
2、以nginx为基础镜像编写dockerfile,并要求镜像内安装一个tcpdump工具。
[root@k8s-master ~]# mkdir /mydocker
[root@k8s-master ~]# cd /mydocker/
[root@k8s-master mydocker]# vim dockerfile
[root@k8s-master mydocker]# cat dockerfile
FROM nginx #指定基础镜像
MAINTAINER yuanrd #指定镜像维护者
RUN apt-get update \ #更新应用包列表
&& apt-get install tcpdump -y \ #下载tcpdump抓包工具
&& apt-get install iputils-ping -y \ #下载有关命令如 netstat、ip、ping
&& apt-get install iproute2 -y \
&& apt-get install net-tools -y
CMD ["nginx","-g","daemon off;"]
#在前台启动nginx程序 ,-g daemon off 将off值赋给daemon这个变量,告诉nginx不要在后台启动,在前台启动,daemon是守护进程--》默认在后台运行
nginx -g选项的作用是 设置一个全局的变量 ,给它赋值
dockerfile写好后创建镜像
[root@k8s-master mydocker]# docker build -t nginxtest . #nginxtest镜像名字
Sending build context to Docker daemon 2.048 kB
Step 1/4 : FROM nginx
...
Removing intermediate container d2a80292c8c5
Successfully built 44e9206c4e9c
[root@k8s-master mydocker]# docker images #查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginxtest latest 44e9206c4e9c 45 seconds ago 168 MB
docker.io/nginx latest 2b7d6430f78d 3 days ago 142 MB
...
3、创建一个容器并暴露服务
容器名test-1、映射本机端口9999、使用的是nginxtest镜像
[root@k8s-master mydocker]# docker run --name test-1 -p 9999:80 -d nginxtest
1d0938f9dfa50521abc9cda6ef8ca16a4d3e0f4dc9a7977e8e42c079d92bba7b
[root@k8s-master mydocker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d0938f9dfa5 nginxtest "/docker-entrypoin..." 14 seconds ago Up 13 seconds 0.0.0.0:9999->80/tcp test-1
cb701e40c6bb f0fad859c909 "/opt/bin/flanneld..." 37 minutes ago Up 37 minutes
...
进入容器内部并测试安装工具