车皮 发表于 2019-2-21 06:53:32

Docker容器安装telnet

Docker容器个人理解
  标准的Docker容器一般都是由debain系统做基础镜像构成的,说白了就是当我们使用dockerpullxxx下拉某个镜像时,默认官网都是由debain系统做基础标准镜像的,不管你是tomcat还是mysql等等。只要是官网标准镜像都是由debain系统做基础镜像构成的,有同学可能会问那centos或者Red Hat就没有吗?问的好,不是没有而是官方会有专门团队来维护标准镜像(debain)至于centos或者Red Hat等等,大部分为个人制作的镜像,不会有专门维护的团队,所以在真实环境建议还是使用官方的标准镜像。
Docker容器安装软件或命令的原因
  镜像生成容器才能为我们提供服务,但是默认的官网镜像所生成的容器是基础镜像,说白了就是里边除了基本系统必要命令和内核命令外,什么都没有,那么问题来了,我们怎么去管理这个容器里的服务呢?怎么去配置这个容器里的配置文件呢?
解决方式有两种:
  1、通过docker镜像生成容器时将需要的配置文件、数据目录、访问端口等等映射到真机
  2、给容器里的系统安装一些基础的命令比如vim、ps等;软件telnet远程连接等。
  注:为了使容器变得不越来越臃肿,便于迁移、备份等管理;建议不管使用哪种方式,都将一些重要的数据目录、配置文件目录等等,挂载到宿主机的目录到容器内!
实验环境
  系统版本:centos7x3.10.0-514.el7.x86_64
  Docker版本:Docker version 1.13.1(yum安装)
  Docker镜像:docker.io/mysql:latest
  关闭防火墙并禁止开机自启
systemctl stop firewalld.service
systemctl disable firewalld
  关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  重启 reboot
Docker容器
1、查看当前镜像列表
  dockerimages
http://i2.运维网.com/images/blog/201809/13/b916812094e873aa582ff8518f470a84.png
2、查看当前所有容器
  dockerps-a
http://i2.运维网.com/images/blog/201809/13/1ef42ffcc278646dc390e5473cca9252.png
3、通过docker.io/mysql镜像生成容器
  dockerrun-itd-p3306:3306--name wfy_mysql -e MYSQL_ROOT_PASSWORD=123456mysql
http://i2.运维网.com/images/blog/201809/13/8c4174f83bf5e1a247fd5f1b7ee7f074.png
选项注释:
-itd: 交互运行容器并可以在后台运行容器
-p:端口映射,此处映射主机3306端口到容器mysql的3306端口
--name:给新创建的容器命名,这里最好用项目名加mysql做区别如wfy_mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
mysql:最后一个mysql指的是mysql镜像名字,也可以指定版本标记。
4、查看正在运行的容器
  dockerps
http://i2.运维网.com/images/blog/201809/13/0cc0f9842988467d0987e46e9ab76fe3.png
5、进入容器查看命令
  dockerexec-itc8/bin/bash
http://i2.运维网.com/images/blog/201809/13/d516fe4292a2997bd72a0d238685d831.png
http://i2.运维网.com/images/blog/201809/13/cdcf26bc6563432e6e2a3f92c49c2d39.png
注:从以上截图可以看的出来,大部分常用的命令在容器里默认都没有!
Docker容器安装命令或软件telnet
1、查看当前镜像列表
  dockerimages
http://i2.运维网.com/images/blog/201809/13/112887917ba12fe66cec8f6828c22496.png
2、查看所有容器
  dockerps-a
http://i2.运维网.com/images/blog/201809/13/77074363ee66c2bae93927746a406163.png
3、查看正在运行的容器
  dockerps
http://i2.运维网.com/images/blog/201809/13/985d86717378cd21f9557a24f529a40f.png
4、停止正在运行的容器
  dockerstopc8
http://i2.运维网.com/images/blog/201809/13/0776171a3d4033d9453debe2f6c85138.png
注:如上截图的目的是为了释放mysql的3306端口,也可以映射别的端口做测试!
5、创建dockerfile文件
  vidockerfile
  FROM docker.io/mysql
MAINTAINER wangfeiyu@xingyoucai.com
RUNmv /etc/apt/sources.list /etc/apt/sources.list.bak && echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
RUN apt-get update
RUN apt-get install vim -y
RUN apt-get install iputils-ping -y
RUN apt-get install net-tools -y
RUN apt-get install telnetd-ssl -y
RUN apt-get install xinetd -y
RUN apt-get install telnetd -y
http://i2.运维网.com/images/blog/201809/13/036a9a2757af7d71a5f52d8087c1d998.png
注:如上截图,我们要想给容器安装软件有两种方式,一种是通过dockerfile文件打包镜像;另一种是直接在容器里安装软件,个人建议使用dockerfile文件来安装,因为这是官网的方式,所以我这里也是使用这种方式安装的!
6、打包生成镜像
  dockerbuild.-tmysql:v1
http://i2.运维网.com/images/blog/201809/13/3ec29c44faa5ed37556e82d5e5659dab.png
http://i2.运维网.com/images/blog/201809/13/45bb825c8654fa5a810f157a5e8f67e6.png
注:以上截图为开始和结束的两张截图,中间太长就不截图了!
7、查看所有镜像
  dockerimages
http://i2.运维网.com/images/blog/201809/13/1b1b7f01cd90d805645cd3c342288b7e.png
注:从截图中可以看到自己打包的镜像已经生成了。
8、运行新镜像
  dockerrun-itd-p3306:3306--namemysql2-e MYSQL_ROOT_PASSWORD=123456mysql:v1
http://i2.运维网.com/images/blog/201809/13/43100077e0bb5ecd970b0dca3f179083.png
注:因为新镜像名字已经在做镜像时就写了mysql:v1所以后边要是启动指定的镜像生成容器,那么在最后写上镜像名即可!例如镜像tomcat-demo的镜像名为tomcat-demo:v1。当然了要是从官网直接下拉的镜像如上图docker.io/tomcat或者docker.io/mysql后边标签写的是latest的不需要写标签也能直接启动。
9、进入新容器
  dockerexec-it49/bin/bash
http://i2.运维网.com/images/blog/201809/13/523b826bf3f54d7a1cc8ffae5b56d20d.png
10、 验证安装的命令 vim、ping和netstat
http://i2.运维网.com/images/blog/201809/13/417176645caaa5c7270afc63c792a859.png
注:从以上截图可以看出容器安装命令完成了!
11、验证安装的软件telnet
  1)查看本地IP端口开启
  nmap192.168.152.169
http://i2.运维网.com/images/blog/201809/13/4898eeaff8ef0d30d2a1dfb8c01821c1.png
  2)查看容器真机开放端口(当前机器IP为192.168.152.91)
  nmap容器真机IP
http://i2.运维网.com/images/blog/201809/13/a6484c581fb78fa0fe4f9d9398ae0930.png
注:容器真机IP为192.168.152.169
  3)telnet远程连接容器3306端口(当前机器IP为192.168.152.91)
  telnet 192.168.152.169 3306
http://i2.运维网.com/images/blog/201809/13/16e78e405d6157fc91548f1bdf1322bc.png
注:显示乱码表示连接正常,因为telnet只有测试端口是否开启的功能。到这里telnet软件安装就完成了!



页: [1]
查看完整版本: Docker容器安装telnet