docker详解(二)——dockerfile制作镜像&docker网络类型

目录

一:dockerfile自制镜像

1、介绍dockerfile的指令

2、以nginx为基础镜像编写dockerfile,并要求镜像内安装一个tcpdump工具。

3、创建一个容器并暴露服务

 二:docker网络类型

1、四大容器网络类型

2、容器间如何进行网络通信

3、容器如何访问外网并暴露服务

三:iptables

1、iptables作用

2、iptables四表五链

3、iptables工作流程

4、iptables常用选项和参数


一: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   
...

进入容器内部并测试安装工具

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值