docker的安装和dockfile指令,docker网络介绍

1、安装docker并配置镜像加速。

官网安装教程: 官网安装docker
阿里云安装docker教程 阿里云安装docker

yum安装方式(用阿里云的镜像安装)

mv /etc/yum.repos.d/* /root/                   删除老的yum源
下载阿里云源和docker的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

下载docker源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo                

yum clean all                                 删除缓存
yum makecache                                 更新yum源

yum list docker-ce --showduplicates  查看全部可安装的docker版本

安装docker19.03
yum install docker-ce-19.03.12-3.el7 docker-ce-cli-19.03.12-3.el7  -y

systemctl start docker                 启动docker
systemctl enable docker                设置开机启动docker
docker run hello-world                 运行hello容器查看docker是否正常运行

在这里插入图片描述

docker镜像加速配置
官网注册阿里云地址 阿里云
注册账户,然后点击账户中心,左侧就可以看到搜索栏
搜索容器镜像服务
在这里插入图片描述
左侧选择镜像加速器,右侧就是阿里云免费提供的镜像加速服务,按照提示输入即可
在这里插入图片描述

vi /etc/docker/daemon.json

添加内容,设置加速,可自行去阿里云网站注册账户加速镜像下载。
{
        "registry-mirrors": ["https://registry.docker-cn.com"]
}

systemctl restart docker               重启docker

2、dockerfile常用指令总结。

dockerfile常用指令:
官网介绍:dockfile介绍

  • FROM:指定基础镜像来源,利用这个基础镜像生成新的镜像
  示例:FROM centos:7.6.1810
  • LABEL:镜像备注或镜像简介
 示例:LABEL version=centos:7.6.1810
  • RUN:相当于shell中的/bin/sh -c,在配置时执行命令
 示例:RUN yum install -y httpd (需要原本的镜像支持yum)
  • ENV:设置环境变量,示例:变量名=变量值
 示例:ENV VERSION=1.2.0
  • COPY:把真机的文件复制到镜像中,保留格式。
    注意:
    对于文件,真机的文件需要放在和dockfile文件平级目录下,比如dockfile在/docker目录下,那么真机的文件如index.html也必须要在这个/docker目录下。

    对于目录,如果在/dockerfile目录下有/dockerfile/aa目录,/dockerfile/aa目录下还有/dockerfile/aa/bb目录,实际只会复制源目录下的子目录/dockerfile/aa/bb和/dockerfile/aa/里面的其他文件和目录,不会复制aa目录本身。

    目标路径后面必须指定到/,如要复制到容器的/home目录,实际必须为/home/

  示例:COPY index.html /home/
       COPY aa /home/
  • ADD:COPY的增强版,支持自动解压压缩包。可解压tar.gz包
  示例:ADD nginx-1.18.0.tar.gz /data/nginx/   
  • CMD:启动容器内的程序,一个镜像有且只有一个CMD,多个CMD只会运行最后一个CMD指令
  示例:CMD ["nginx","-g","daemon off;"]
  • VOLUME:数据卷,将容器内的某个目录映射到真机的某个真实目录下,默认为容器内的目录如/data/映射到真机目录下的随机名字,删除容器后不会删除这个目录。可以配合docker -v真机目录:容器目录绑定目录使用。
  示例:VOLUME [ "/data1" ]
  • EXPOSE:将容器内的端口映射到真机的随机端口或指定端口上,需要配合docker -P或docker -p 真机端口:容器端口绑定使用
  示例:EXPOSE 80
  • WORKDIR:指定工作目录,设置初始化进入容器后的目录。如果想做镜像时把东西都放在同一个目录下,这里指定即可。
   示例:WORKDIR /usr/local/
  • USER:指定使用容器的账户,默认镜像都是root账户,需要指定为其他账户时,这里指定。
  示例:USER mysql
  • HEALTHCHECK:容器健康状态检查,每几秒检查下服务状态。
示例:HEALTHCHECK --interval=5s --timeout=3s 
  • SHELL:默认shell版本为/bin/sh,可以在配置中指定运行版本shell的版本,可以多次重定向shell的版本
示例: SHELL [ "/bin/bash","-c" ]

创建镜像方式:

vi Dockfile         编辑文件,添加需要的命令
.代表当前目录,需要把COPY和ADD的文件都放在和dockfile文件同个目录下

docker build -t 镜像名:版本号 -f ./dockfile .

3、基于alpine制作tomcat镜像

  1. 按照上面方法安装docker
  2. 下载安装Java的源码包和tomcat源码包到/docker目录下
  3. Java包下载链接(需要注册账户才能下载) Java官网
    tomcat下载链接 tomcat官网
mkdir /docker          新建目录,存放dockfile需要的文件
cd /docker/            进入目录

#alpine不支持Java的环境,需要安装glibc,要不然会出现找不到路径的问题/bin/sh: java: not found,下载下面的环境和安装包到/docker目录下
#详细介绍网站  https://github.com/sgerrand/alpine-pkg-glibc/
wget https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.34-r0/glibc-2.34-r0.apk

编辑repositories文件
#这个文件相当于centos的repo文件或Ubuntu的sources.list,改为国内源加速下载
vi repositories
添加
https://mirrors.aliyun.com/alpine/v3.6/main
https://mirrors.aliyun.com/alpine/v3.6/community

编辑tomcat的conf文件
vi tomcat.conf
添加Java路径
JAVA_HOME=/usr/local/jdk

编辑tomcat网页文件,可以不写,不写默认就是tomcat本身网页
echo "tomcat-web">/docker/index.html

ls    总共7个文件在/docker目录下
apache-tomcat-8.5.70.tar.gz  glibc-2.34-r0.apk  index.html  jdk-8u301-linux-x64.tar.gz  repositories  sgerrand.rsa.pub  tomcat.conf

在这里插入图片描述

  1. 编辑dockfile文件
cd /docker
vi dockfile
添加
FROM alpine:3.13
LABEL version=alpine3.13-tomcat8.5
#初始环境配置
COPY sgerrand.rsa.pub /etc/apk/keys/
COPY glibc-2.34-r0.apk /usr/local/
COPY repositories /etc/apk/
RUN cd /usr/local/ && apk add glibc-2.34-r0.apk
#安装Java
ADD jdk-8u301-linux-x64.tar.gz /usr/local/
RUN ln -s /usr/local/jdk1.8.0_301 /usr/local/jdk
ENV JAVA_HOME=/usr/local/jdk
ENV PATH=$PATH:$JAVA_HOME/bin
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib
#安装tomcat
ADD apache-tomcat-8.5.70.tar.gz /usr/local/
RUN ln -s /usr/local/apache-tomcat-8.5.70/ /usr/local/tomcat
ENV PATH=$PATH:/usr/local/tomcat/bin
COPY tomcat.conf /usr/local/tomcat/conf/
COPY index.html /usr/local/tomcat/webapps/ROOT/
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run" ]

  1. 利用dockfile生成镜像
docker build -t alpine-tomcat:v0.1 -f ./dockfile . 生成镜像
docker image ls

在这里插入图片描述

  1. 利用生成的镜像alpine-tomcat:v0.1
docker  run -P -it --rm alpine-tomcat:v0.1   前台启动容器       
docker  run -P -it -d alpine-tomcat:v0.1     想要后台启动容器,用这个命令
docker ps -a                    查看容器启动,真机端口为32768

在这里插入图片描述

  1. 访问网站,测试网页访问
curl http://192.168.116.145:32768

在这里插入图片描述

4、利用桥接实现不同宿主机间容器互联。

拓扑图:
在这里插入图片描述

初始环境配置:
2台真机都安装docker服务,按上面做法安装docker
需要利用到iptables的nat策略:iptables介绍

系统IP
centos 7.8/ 真机1真机P:192.168.116.145,容器网段:10.0.0.0/24
centos 7.8/ 真机2真机P:192.168.116.146,容器网段:20.0.0.0/24

真机1配置:

systemctl start docker               启动容器,初始化配置
vi /etc/docker/daemon.json           添加文件,设置网卡网段
添加
{
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "bip": "10.0.0.1/24"
}
systemctl restart docker              重启网卡
ip a                                  确认网段被修改了

在这里插入图片描述

真机2配置:

systemctl start docker               启动容器,初始化配置
vi /etc/docker/daemon.json           添加文件,设置网卡网段
添加
{
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "bip": "20.0.0.1/24"
}
systemctl restart docker              重启网卡
ip a                                  确认网段被修改了

在这里插入图片描述

容器创建

真机1创建容器

docker run -it --name docker1-a1 busybox
可以看到容器IP为10.0.0.2

在这里插入图片描述
真机2创建容器

docker run -it --name docker2-b1 busybox
可以看到容器ip为20.0.0.2

在这里插入图片描述

没加nat策略前

真机1测试:

ping 192.168.116.146        真机1和真机2的真机IP能互通
ping 10.0.0.2               真机1和自己的容器IP能互通
ping 20.0.0.2               真机1和真机2的容器IP不能互通

在这里插入图片描述
真机1的容器测试

ping 192.168.116.145            真机1的容器和真机1能通
ping 192.168.116.146            真机1的容器和真机2的真机IP能通
ping 20.0.0.2                   真机1的容器和真机2的容器不能互通

在这里插入图片描述

真机2测试:

ping 192.168.116.145            真机2和真机1的真机IP能互通
ping 20.0.0.2                   真机2和自己的容器IP能互通
ping 10.0.0.2                   真机2和真机1的容器IP不能互通

在这里插入图片描述
真机2的容器测试

ping 192.168.116.145            真机2的容器和真机2能通
ping 192.168.116.146            真机2的容器和真机1的真机IP能通
ping 20.0.0.2                   真机2的容器和真机1的容器不能互通

在这里插入图片描述

添加nat策略后

真机1添加nat策略

ip route add 20.0.0.0/24 via 192.168.116.146    
iptables -A FORWARD -s 192.168.116.0/24 -j ACCEPT

真机2添加nat策略

ip route add 10.0.0.0/24 via 192.168.116.145    
iptables -A FORWARD -s 192.168.116.0/24 -j ACCEPT  

最终测试

真机1容器测试

ping 20.0.0.2                   真机1的容器和真机2的容器能互通

在这里插入图片描述
真机2容器测试

ping 20.0.0.2                   真机2的容器和真机1的容器能互通

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值