Linux下docker的安装部署+docker的简单应用(2048小游戏的部署)+docker端口映射

一.初识Docker

首先,我先说一下什么是Linux容器?

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,就像是给正常的进程外面套了一个保护层,对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。它相比虚拟机来说,因为是进程级别的,所以有很多优势:启动快、资源占用少、体积小;

那么Docker和Linux容器是什么关系?

Docker属于Linux容器一种封装,提供简单易用的容器使用接口;它将应用程序与该程序的依赖打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机运行一样;总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器,另外,它还可以进行版本管理、复制、分享、修改就像管理普通的代码一样;

一个完整的Docker有以下几个部分组成:

dockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

这里写图片描述

二.实验环境(rhel7.3版本)

1.selinux和firewalld状态为disabled

2.各主机信息如下:

主机 ip
物理机(Docker)(采用物理机的原因是,测试比较方便,因为,虚拟机没有浏览器) 172.25.83.83/172.25.254.83

三.Docker的安装部署

1.首先在官网上下载如下的软件包及依赖包,并进行安装

[root@foundation83 docker]# yum install * -y

2.启动docker服务

[root@foundation83 ~]# systemctl start docker
  • 查看版本号信息:

四.Docker的简单应用之2048小游戏的部署

1.下载game2048.tar(2048游戏包),并加载game2048镜像

[root@foundation83 ~]# docker load -i game2048.tar 

2.查看加载的game2048镜像

[root@foundation83 ~]# docker images game2048
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
game2048            latest              19299002fdbe        2 years ago         55.5MB

3.使用docker镜像game2048以后台模式启动一个容器,并将容器命名为game

[root@foundation83 ~]# docker run -d --name game game2048
139574b015095337bcab9bb0cdab3a23e9140e989ba6be01f2a499c8f804ff93
[root@foundation83 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
139574b01509        game2048            "/bin/sh -c 'sed -i …"   6 seconds ago       Up 5 seconds        80/tcp, 443/tcp     game

通过"docker  ps"命令,我们可以看到,该容器game对应的端口是80和443。


  • ip addr查看docker(其中的172.17.0.1是网关)


虚拟机上安装软件,以支持brctl命令的操作过程。
[root@foundation83 Desktop]# which brctl     #物理机上的操作
/usr/sbin/brctl
[root@foundation83 Desktop]# rpm -qf /usr/sbin/brctl
bridge-utils-1.5-9.el7.x86_64
[root@server1 ~]# yum install bridge-utils-1.5-9.el7.x86_64 -y  #安装软件,支持brctl命令

  • brctl show

  • ping

4.获取容器game的元数据

[root@foundation83 ~]# docker inspect game

注:对于容器而言,它的IP数是随着容器的数目而递增的;如,如果我先创建了容器vm1,它的IP为172.17.0.2;那么再创建一个容器vm2,它的IP将会为172.17.0.3;依次类推......

5.测试:访问172.17.0.2——>game2048小游戏界面

五.Docker端口映射(续四)

上面演示了Docker的简单应用(2048小游戏的部署)。我们会发现一个问题,当访问2048游戏时,只能通过本机的172.17.0.2(容器本身的ip地址)访问。

如果我们想通过物理机的172.25.83.83/172.25.254.83来访问2048游戏的界面,或者让别的机器,也能访问该容器。那么该怎么办呢?

答案是:通过端口映射

删除上面建立的容器game,为下面的实验做好准备

[root@foundation83 ~]# docker stop game   #停止正在运行的容器game
[root@foundation83 ~]# docker rm game   #删除容器game

1.绑定容器的80端口,并将其映射到本地主机的8080端口上(因为本地主机的httpd服务占用80端口,所以映射到80端口以外的8080端口)。

[root@foundation83 ~]# docker run -d --name game -p 8080:80 game2048  
  • 列出nat表中所有链的所有规则

2.测试:访问172.17.0.2——>game2048小游戏界面;访问172.25.83.83:8080/172.25.254.83:8080——>game2048小游戏界面

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/88584240