Docker容器的安装并运行一个网页游戏

简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

开发时我们会遇到很多环境,而环境的安装是比较繁琐的。
使用docker,可以直接从网上down下一个相应镜像。从网上拉下一个mysql镜像,用一条命令运行它。

优点:

  • 上手快
  • 职责的逻辑分类
  • 高校快速的开发生命周期
  • 鼓励使用面向服务的架构(微服务)

容器与虚拟机技术的比较:

  • 虚拟机运行在虚拟层(可以虚拟出各种硬件)之上。
  • 容器在Docker Engine之上运行的是二进制库,库之上安装各种应用软件。通过Docker Engine,共用主机的操作系统。所以占用空间更小。运行的速度也更加快。

DockerDaemon组件:

  • Docker守护进程
  • DockerClient客户端
  • DockerImage镜像
  • DockerContainer容器

在这里插入图片描述在这里插入图片描述

安装

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新并安装Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

启动:

systemctl start docker
systemctl enable docker

安装补全操作:

yum install -y bash-*

我的第一个容器

查看此时有什么容器:

[root@server1 mnt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

可见,并没有任何镜像。我提前从网上下载了一个tar包,我们把它load到镜像上去

docker load -i game2048.tar

再次查看镜像

[root@server1 mnt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
game2048            latest              19299002fdbe        3 years ago         55.5MB

查看此镜像的历史信息

[root@server1 mnt]# docker history game2048:latest 
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
19299002fdbe        3 years ago         /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "sed …   0B                  
<missing>           3 years ago         /bin/sh -c #(nop)  EXPOSE 80/tcp                0B                  
<missing>           3 years ago         /bin/sh -c #(nop) COPY dir:cb74e9c037a3d501c…   600kB               
<missing>           3 years ago         /bin/sh -c #(nop)  MAINTAINER Golfen Guo <go…   0B                  
<missing>           3 years ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B                  
<missing>           3 years ago         /bin/sh -c #(nop)  EXPOSE 443/tcp 80/tcp        0B                  
<missing>           3 years ago         /bin/sh -c #(nop) COPY file:d15ceb73c6ea776c…   1.1kB               
<missing>           3 years ago         /bin/sh -c #(nop) COPY file:af94db45bb7e4b8f…   643B                
<missing>           3 years ago         /bin/sh -c GPG_KEYS=B0F4253373F8F6F510D42178…   50.1MB              
<missing>           3 years ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.11.7     0B                  
<missing>           3 years ago         /bin/sh -c #(nop)  MAINTAINER NGINX Docker M…   0B                  
<missing>           3 years ago         /bin/sh -c #(nop) ADD file:7afbc23fda8b0b387…   4.8MB               

运行这个镜像

[root@server1 mnt]# docker run -d --name game1 -p 80:80 game2048
ef4bd229b35f9d07a09d2437b896b8b781567da1769ccde06dfdc8f08771fa28

game1是我们给容器起的名字,
-p参数是做端口映射,冒号前面是物理机端口,冒号后面是容器内端口。意思就是访问物理机80端口时直接映射到容器内

查看

[root@server1 mnt]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
ef4bd229b35f        game2048            "/bin/sh -c 'sed -i …"   5 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 443/tcp   game1

已经在运行了

我们打开浏览器访问一下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Thorne_lu/article/details/106966465