1.实验环境

一台rhel7.3的虚拟机server1和一台rhel7.3的物理机

主机信息 作用
server1(172.25.70.1) 搭建docker
物理机(172.25.70.250) 测试以及给server1提供资源

(1)为了保证我们的实验环境是纯净的,先在真机当中创建一个全新的快照并且开启

(2)用真机ssh连接server1,这样操作起来更方便

(3)在真机上面搭建一个共享yum源给server1,这个共享yum源要包含docker的安装包,并且开启apache,关闭防火墙,并且加载第三方yum 源仓库

真机上:


加载第三方Yum源:

[root@foundation70 ~]# createrepo -v /var/www/html/docker  #加载第三方yum 源仓库

(4)在server1上面编写docker共享yum源的文件


以上就是基本的实验环境

2.docker的部署与安装

docker-ee 企业版
docker-ce 社区版

软件包安装
软件包下载地址
安装社区版软件包地址
本实验安装的是社区版docker-ce
(1)安装docker
yum install docker-ce  -y

(2)打开docker服务

systemctl start docker.servicesystemctl enable docker.service

(3)在安装好docker后,系统会为docker容器分配一个ip,利用ip addr中查看docker0的ip
这个IP是为了容器通信用的,具体后面再说

(4)查看docker的版本信息

[root@server1 ~]# docker --version
Docker version 18.09.7, build 2d0083d

(5)查看docker宿主机(server1)的信息
runc很重要

docker info

[root@server1 ~]# docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 0
Server Version: 18.09.7
Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:Volume: localNetwork: bridge host macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:seccompProfile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.796GiB
Name: server1
ID: YVMD:DMLL:RO3Y:EMAH:KSAO:V3ZK:W77N:3TFN:CVGB:R3B7:YVE7:JLJX
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

基本的docker部署很简单,接下来要基于镜像运行容器

3.管理docker常用的基础命令

掌握这些命令是最基本的,然后才能操作docker
容器的运行是基于镜像的,这里我使用ubuntu的镜像来举例
其实这些命令我在之前已经为大家讲解过,放在这里为了帮助大家理解下面的操作

4.镜像的导入和容器的使用

说白了也就是基于镜像拉起一个容器,其实真实的服务是封装在镜像中的,不过拉起一个容器就可以使用服务了
容器类似于一个虚拟机,基于镜像拉起一个容器,就相当于部署了一个服务,快速高效
注意:所有的镜像都可以到官网去下载,为了方便起见,直接使用我下载好的 接下来举几个例子

[root@server1 ~]# ls
game2048.tar
[root@server1 ~]# docker load -i game2048.tar #导入镜像;
[root@server1 ~]# systemctl start docker
[root@server1 ~]# systemctl enable docker
[root@server1 ~]# docker images #查看导入镜像
[root@server1 ~]# docker run -d --name game1 -p 80:80 game2048 #后台运行
-d:打入后台,否则占用终端 --name:起名称 -p:端口映射,为了让外网段的人访问到,所以做了端口映射 80(物理机):80(docker)
[root@server1 ~]# docker info #查看容器信息
[root@server1 ~]# ifconfig /ip addr #查看
[root@server1 ~]# yum install -y bridge-*
[root@server1 ~]# docker inspect game1  #查看docker的ip地址;它的网关是docker0的
[root@server1 ~]# brctl show  #网桥
[root@server1 ~]# ifconfig docker #查看docker的内部ip,只有自己可以看见
[root@server1 ~]# docker ps  #查看docker信息;
volumes:卷,挂载镜像
[root@server1 ~]# docker history  ubuntu:latest #查看镜像的历史信息;
[root@server1 ~]# docker ps -a  #查看所有的docker信息;
[root@server1 ~]# docker rm game1  #删除镜像,-f:强制删除;
[root@server1 ~]# docker run -it --name vm1 ubuntu  #运行容器且进入容器

(1)在真机上面给server1传一个2048小游戏的镜像tar包

(2)利用docker命令导入镜像game2048.tar

(3)查看镜像信息


(4)创建容器vm1,并运行
有镜像才有容器,基于镜像把容器运行起来,容器是基于镜像的

上面命令的功能是创建一个名为vm1的容器,并将本机(server1宿主机)80端口映射到容器的80端口
通过本机80端口访问容器内部的80端口上运行的服务
运行容器并打入后台,这个容器是基于game2048这个镜像运行的

这里要提到docker的端口映射
我们使用以下命令可以看到在创建容器时有很多的参数,其中关于端口的参数有【-p】与【-P】
docker --help

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射。
当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万)
当使用-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。
支持的格式有:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort
(5)查看容器运行状态,看端口是否开启



(6)查看容器信息

(7)在真机浏览器访问server1的ip,前提是只要server1的80端口没有被占用,这样就可以通过server1访问容器vm1的80端口
输入server1的ip:172.25.2.1
可以看到2048的游戏就出来了


可以看出:通过运行容器,2048游戏就这样轻松上线,前提只要有镜像,拉起一个容器来应用就非常的easy,其实当我们执行完【docker run】命令以后就已经完成了上线,后续的操作也只是为了查看相关信息而已
这样看来,我们上线一个应用就只用了两步,非常方便,这也是为什么如今docker这么火爆的原因

实例二:利用容器快速搭建一个nginx服务

(1)从真机给server1传送一个nginx的镜像

(2)导入镜像

docker load -i nginx.tar

(3)查看镜像,发现nginx的镜像版本(标签是1.16)

(4)给nginx镜像重新贴一个标签,其实本质上是一样的

(5)查看一下正在运行的容器,发现2048小游戏正在占用宿主机的80端口
通过宿主机的80端口访问容器vm1的80端口
其实容器之间是独立的,使用端口的时候并不会冲突
但是创建容器的时候端口影射不能使用宿主机的同一个端口


(6)运行容器vm2,基于nginx镜像,这个时候我们使用宿主机的8080端口
因为本机80端口已经被2048游戏占用,所以我们指定8080端口


(7)查看一下容器的运行情况

(8)在浏览器测试:输入server1的ip以及指定的端口来访问vm2容器上的nginx服务
输入ip:172.25.70.1:8080


(9)在宿主机编写一个默认发布页面,并cp到容器内部


(10)再次访问,发现乱码,但是原理正确

(11)也可以直接挂载本机目录到容器里
删除之前的容器vm2

创建挂载目录

在挂载目录里编辑发布内容

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径;当然也可以指定挂载目录的权限
绝对路径是为了保证万无一失

docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/ nginx
docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/:ro nginx

(11)再次浏览器测试:输入server1的ip以及指定的端口来访问vm2容器上的nginx服务
输入ip:172.25.70.1:8080

实例三:利用docker创建一个交互式容器

(1)从真机给server1发送一个ubuntu的镜像

(2)导入镜像并且查看

(3)运行容器

[root@server1 ~]# docker run -it --name vm3 ubuntu
##创建一个vm3的容器,-it表示打开交互式docker界面(ubuntu自带,rhel镜像需要在后面再加bash)

(4)查看内核信息
容器vm3的内核版本与宿主机的内核版本一致

ctrl + pq   ##退出容器但不关闭容器
[root@server1 ~]# docker attach vm3        ##可以直接进入容器ctrl + D ##退出并关闭容器,下次登陆时需要开启
[root@server1 ~]# docker start vm3     ##打开关闭的容器
[root@server1 ~]# docker attach vm3        ##再进入容器docker rm vm3                删除容器
docker rm -f  vm2           强制删除容器
docker rmi ubuntu:vm3       删除镜像

Docker(3)具体的安装部署过程和一些简单应用(2048小游戏,nginx,ubuntu)相关推荐

  1. 安装Docker,在本机上跑一个‘2048’小游戏(脉冲云在线体验)

    安装Docker,在本机上跑一个'2048'小游戏 脉冲云–让软件开发效率提升十倍.在线免费体验   下面的步骤是在本机上运行的,也可以免费在脉冲云官网上部署一个在线的'2048'小游戏体验一下. 1 ...

  2. Docker学习(3)——安装部署过程及简单应用

    一. Docker的部署与安装 1.安装docker和相关依赖性 [root@server1 docker]# ls container-selinux-2.21-1.el7.noarch.rpm d ...

  3. docker安装过程 和部署2048小游戏

    Docker介绍: (1)什么是Docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化 ...

  4. ubuntu16.4安装部署过程

    以下是ubuntu16.4安装部署过程,之前每次安装都要去找半天过程,所以自己整理了一下. 有的人可能没有这一步,无妨,继续向下 这是在给你自动配置一些东西,如果你想手动自己配置,可以选择中断,下面的 ...

  5. 在使用ambari进行安装部署过程中遇到的glibc问题

    在使用ambari进行安装部署过程中遇到的glibc问题 使用 yum check rpm -e rpm -q 处理问题 报错信息如下: stderr: Traceback (most recent ...

  6. Docker系列之RabbitMQ安装部署教程

    Docker系列之RabbitMQ安装部署教程 因为学习RabbitMQ需要,需要安装RabbitMQ,网上找资料,RabbitMQ官方提供了window版.Linux版.Docker版的管理页面,为 ...

  7. 免费开源的客服系统 Linux 服务器环境安装部署过程

    最近因为项目需要,要找一款在线客服系统集成在 APP 中使用,而且涉及到生意开单,客服系统必须稳定可靠.另外甲方要求,必须支持 Linux 服务器环境. 我们以 Ubuntu 18.04 为例把安装部 ...

  8. FFmpeg入门详解之127:GB28181平台安装部署过程 - 可接入海康、大华、华为、科达、宇视等等设备和平台

    本文章向大家介绍GB28181平台安装部署过程 - 可接入海康.大华.华为.科达.宇视等等设备和平台,主要包括GB28181平台安装部署过程 - 可接入海康.大华.华为.科达.宇视等等设备和平台使用实 ...

  9. linux安装2048游戏,如何在CentOS上安装一个2048小游戏

    如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...

最新文章

  1. com词根词缀_背单词想过目不忘?看这篇文章学会用“词缀”记单词
  2. 动态加载子节点_简易数据分析 10 | Web Scraper 翻页—抓取「滚动加载」类型网页...
  3. arcgis构建金字塔失败什么原因_天猫入驻为什么失败?知舟集团给出失败原因和解决办法...
  4. bzoj 4237: 稻草人(CDQ分治+单调栈+二分)
  5. Android中Parcelable和Serializable接口用法
  6. babel 配置整理
  7. 微信小程序下载文件,保存文件功能总结
  8. cadence、PADS、protel教程(PCB Layout图文教程终结版)
  9. no-cache和no-store的区别
  10. 《深度剖析U8系统前后台数据关系》课程简介
  11. php问答系统模板,tipask问答系统
  12. Redis 进阶笔记
  13. java-锁_自我理解
  14. 跟着别人学学优化自己的Ubuntu 操作系统
  15. nohup命令原理解析
  16. MSELoss() 函数
  17. SAP常用需求关闭预留未清的处理方法
  18. 获取一个APP里面的图片素材
  19. 干货!C4D的7个实用插件分享
  20. 交流转直流降压、稳压电路

热门文章

  1. http状态码大全304、201、203等等
  2. Android中notifyDataSetInvalidated()和notifyDataSetChanged()
  3. 主板维修测试软件,维修主板的必备工具主板诊断卡的使用方法
  4. 计算机技巧资讯,玩转电脑需知技巧
  5. QT开发(二十二)——QMainWindow主窗口
  6. CSS3小案例之安卓机器人
  7. 从零开始实现放置游戏(十一)——实现战斗挂机(2)注册登陆和游戏主界面
  8. MOSFET的SOA或者ASO是什么?
  9. 【转】可以让你迅速发财的23种盖世奇功
  10. Js获取当前日期和农历日期