美文网首页
Docker - 环境搭建

Docker - 环境搭建

作者: 嫩牛_软件测试_笔记 | 来源:发表于2018-09-27 14:25 被阅读0次
    *   1. 相关概念
        *   Docker就是一个应用的容器
            *   Docker是容器,放应用。应用是啥?一个网站、一个程序、一个系统等都是应用。从此不用配置环境,也不用装环境,更不用统一环境了。因为docker都打包好了,开一个容器不到一秒,环境什么的别人都配好了,我就老老实实写代码就可以。奔溃了重启(重启才3秒而已)。所以,docker就是用来存放和运行应用的一个容器,更轻量、更简单、更快速、更好玩。
            *   Docker是:“一次封装,到处运行”,因为docker决绝了应用环境的问题,安装了docker的平台就能跑“docker包”,这样就决绝了“开发环境能跑,一上线就崩”的尴尬。
        *   一个完整的Docker有以下几个部分组成:
            *   dockerClient客户端
            *   Docker Daemon守护进程
            *   Docker Image镜像
            *   DockerContainer容器
        *   Docker 的优点
            *   1、简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
            *   2、避免选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
            *   3、节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
    
    *   2. 安装Docker
        *   Linux系统选择
            *   Docker都需要64位环境。(有的在Config的CPU中, 有的在Security中Virtualization(虚拟化))
    
                ![image](https://img.haomeiwen.com/i10517060/4a0bff6099c8f782.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   CentOS内核一般都很低,而Docker是要求高版本内核,所以,CentOS不合适运行Docker,建议使用Ubuntu安装运行Docker(因为Ubuntu内核更新很频繁)
        *   安装ubuntu ( Desktop & Server 版本)
            *   下载网址:[http://cn.ubuntu.com/download/](http://cn.ubuntu.com/download/)# Ubuntu 下载
            *   VM虚拟机启动报错: 无法连接虚拟设备sata0:0,因为主机上没有相应设备
                *   setting设置,选择iso文件,网络:桥接 ,然后重启虚拟机
            *   VM安装ubuntu时,由于分辨率问题 ,导致显示不全,无法移动窗口选择,安装不下去
                *   解决:alt + 鼠标左键 ,可以移动窗口
            *   安装过程中,提示想要安装的软件(如LAMP / openssh-server 等)
                *   关键是设置一个用户名,及密码 // 后面登录系统需要用到
            *   关闭ubuntu的防火墙 # ufw disable
                *   开启防火墙 # ufw enable
            *   Ubuntu下的 sysv-rc-conf 完美“替代”CentOS下的chkconfig (httpd on)
                *   装了Ubuntu14.04后发现chkconfig用不了,并且也安装不了chkconfig,于是老表便在网上找解决办法,最终发现原来chkconfig是Redhat下的程序,而在Ubuntu下有一个更好的程序可以完美“替代”chkconfig,那就是sysv-rc-conf
                    *   apt -y install sysv-rc-conf # apt 跟 apt-get一样的效果,都是安装
                        *   sysv-rc-conf 命令,可以查看所有的进程开启启动状态
                            *   必须要用超级用户权限; SecureCRT屏幕最大化(否则提示屏幕太小,无法使用这个命令)
                            *   用鼠标点击,也可以用键盘方向键定位,用空格键选择, “X”表示开启该服务。用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
                            *   也可以用命令:
                                *   # sysv-rc-conf mysql off
        *   ubuntu常用命令
            *   secureCRT远程连接Ubuntu
                *   用户名:输入普通用户和密码,不要输入root,否则提示报错。
            *   Ubuntu上开启SSH服务
                *   sudo apt-get update // 更新源列表
                *   sudo apt-get install openssh-server // 安装openssh-server
                *   sudo ps -e | grep ssh // 提示sshd,说明安装成功
            *   更新root密码
                *   ubuntu的root密码是每次开机随机的,所以我们可以修改root密码
                    *   sudo passwd // 输入当前账户的密码(我的账号是jet,所以输入jet的密码) > 然后输入unix密码2次,此密码即为root密码
                    *   su root // 登录root账号,输入刚才设置的root密码即可
            *   Ubuntu设置固定IP
                *   打开/etc/network/interfaces文件,内容为(默认使用DHCP分配IP)
                    *   auto lo
                    *   iface lo inet loopback   
                    *   auto ens33
                    *   iface ens33 inet dhcp
                *   修改为:
                    *   auto lo
                    *   iface lo inet loopback   
                    *   auto ens33
                    *   iface ens33 inet static
    
                    *   address 192.168.1.249  # 想要设置的固定IP
                    *   netmask 255.255.255.0
                    *   gateway 192.168.1.1
                    *   dns-nameservers 192.168.1.1
                        *   # 这里dns可以在电脑的网络中 本地连接/无线连接--详细信息中查看IPv4 DNS服务器
                        *   # 这里的dns配置的优先级比resolv.conf中配置的优先级高,所以,只需要在这里配置即可
                *   重启系统即可 # reboot
            *   Ubuntu上软件安装情况,安装,卸载
                *   dpkg -l | grep mysql # 查看是否安装mysql
                *   apt purge mysql* -y # 卸载mysql(不保留配置信息)
                *   apt install -y mysql # 安装mysql
            *   Ubuntu apt-get update 失败
                *   原因:自带源在国内连接性不好。。。
                *   解决:改用”阿里云Ubuntu源”:
                *   命令如下:
                    *   sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
                    *   sudo vim /etc/apt/sources.list
                        *   修改:关键!!此命令是为了进入vim修改sources.list,在将如下代码:
                            *   deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
                            *   deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
                            *   deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
                            *   deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
                            *   deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
                            *   deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
                            *   deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
                            *   deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
                            *   deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
                            *   deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
                        *   输入之前之前,把相对应的原有的源用#注释掉。
                        *   sudo apt-get update
                        *   更新列表 ->成功!
    
        *   安装Docker
            *   使用脚本自动安装docker (执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker CE 的 Edge 版本安装在系统中)
    
                ![image](https://img.haomeiwen.com/i10517060/67e4102f1ddf382c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                *   curl -fsSL [get.docker.com](http://get.docker.com)-o [get-docker.sh](http://get-docker.sh) // 先安装curl: (1)apt install curl
                *   sudo sh [get-docker.sh](http://get-docker.sh) --mirror Aliyun
                    *   启动 Docker CE
                        *   $ sudo systemctl enable docker // 设置 Docker 开机自动启动(Ubuntu)
                        *   $ sudo systemctl start docker // 启动Docker(Ubuntu)
                            *   $ sudo systemctl stop docker // 停止Docker(Ubuntu)
                    *   建立 docker 用户组
                        *   docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
                            *   建立 docker 组: $ sudo groupadd docker
                            *   将当前用户加入 docker 组:$ sudo usermod -aG docker jet //我登录系统的用户名是jet
                            *   退出当前终端并重新登录
    
                                ![image](https://img.haomeiwen.com/i10517060/90bcc5c4c1d590e9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                    *   测试 Docker 是否安装正确
                        *   $sudo docker run hello-world
    
                            ![image](https://img.haomeiwen.com/i10517060/d7c243a56839f964.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    *   3.Docker环境搭建(实战)
    
        ![image](https://img.haomeiwen.com/i10517060/c6e1419f4e1f444e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
        *   docker run -d -p 8001:80 -p 63306:3306 --name myla /home/jet/ceshi:/var/www/html -e MYSQL_PASS="123456" tutum/lamp
            *   tutum/lamp([https://hub.docker.com/r/tutum/lamp/](https://hub.docker.com/r/tutum/lamp/)有详细镜像使用说明):
            *   mysql -u root -p (密码为空) -- 容器内连接,无密码
            *   mysql -u admin -p (密码123456) -- 容器外连接,用户:admin,密码设置为:123456
    
                ![image](https://img.haomeiwen.com/i10517060/3a3e01df1e905e0f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/4d73b9e2de50f7c4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/8a62c9b090f6ee81.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/d08f8900c93d6229.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/2da38a8cbf59f8c2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/787e42727771b1a2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
        *   LAMP 搭建 ranzhi 环境
        *   Docker + Tomcat + Mysql 搭建 RSBI (多容器关联) -- 方法1
            *   1\. docker run -ti -p 23306:3306 --name mymysql56  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
                *   pull 5.6版本的mysql
                *   设置MySQL的Root密码为 123456
                *   映射端口为23306
                *   容器名称为 mymysql56
                    *   等待一段时间,使用SQLYog才能连得上,否则一直报错2003错误
    
                        ![image](https://img.haomeiwen.com/i10517060/4c54cc7e9733ff8b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   2\. SQLYog成功连接上了容器,并成功创建了数据库 rs_report ,导入SQL数据
                *   192.168.1.249
                *   23306
                *   root
                *   123456
            *   3\. docker run -it -p 28080:8080 --name mymyweb --link mymysql56:tomysql -d tomcat
                *   pull 最新版的tomcat
                *   映射Tomcat端口为28080
                *   容器名为 mymyweb
                *   与容器mymysql56数据库关联,指定个别名为tomysql
                    *   查看Tomcat容器与MySQL容器关联成功与否?
                        *   docker exec -ti mymyweb bash # 进入Tomcat容器
                        *   cat /etc/hosts # 查看最后两行
                            *   查看Tomcat启动情况 # docker logs -f mymyweb
            *   4\. 复制rsbi.war到Tomcat容器
                *   docker cp rsbi.war mymyweb:/usr/local/tomcat/webapps/
            *   5\. 进入Tomcat容器,修改rsbi数据库配置信息database.properties
                *   docker exec -ti mymyweb bash
                *   vi /usr/local/tomcat/webapps/rsbi/WEB-INF/classes/database.properties
    
                    ![image](https://img.haomeiwen.com/i10517060/4d8518aeef78f0c7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                    *   默认情况下,Tomcat容器是没有vim命令,所以需要安装
                        *   apt-get update
                        *   apt install vim
            *   6\. 浏览器访问 [http://192.168.1.249:28080/rsbi](http://192.168.1.249:28080/rsbi)
    
                ![image](https://img.haomeiwen.com/i10517060/807b01aa8759575c.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/4efb1118be5a2091.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                *   这个问题一直整到了凌晨3点:
                    *   连接不上MySQL数据(MySQL版本,以前是pull的最新的,一直报错如下,后来换成了5.6版本ok!)
    
                        ![image](https://img.haomeiwen.com/i10517060/ce29d251b890672d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
        *   Docker + Tomcat + Mysql 搭建 RSBI (多容器关联) -- 方法2
            *   docker run -d -p 33306:3306 --name mysql3  -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
    
                ![image](https://img.haomeiwen.com/i10517060/dbaded88b93047e4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   docker logs -f 9538
    
                ![image](https://img.haomeiwen.com/i10517060/f4789b54e5518bd7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/f8a79ebb2b3b83e2.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/0b0830f792a5cedb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   创建数据库,并导入数据
    
                ![image](https://img.haomeiwen.com/i10517060/9788a732f8a01bc3.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/6067140264f167f6.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   docker run -v /home/jet/ceshi/:/usr/local/tomcat/webapps -p 38080:8080 --name myweb3 -d tomcat
    
                ![image](https://img.haomeiwen.com/i10517060/4fd3265570ba53fe.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                *   这样就不用复制 war文件到Tomcat容器中了,因为Tomcat容器中没有vim命令,需要单独去安装,增加了容器的体量,这样就可以直接映射Tomcat容器中/usr/local/tomcat/webapps路径为宿主机/home/jet/ceshi路径了。
            *   修改database配置文件
    
                ![image](https://img.haomeiwen.com/i10517060/37a6b6c44370f3a0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   重启Tomcat
    
                ![image](https://img.haomeiwen.com/i10517060/e977f0b579e173eb.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   查看Tomcat容器启动情况 docker logs -f myweb3
    
                ![image](https://img.haomeiwen.com/i10517060/20cb889bad6dc642.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
            *   浏览器访问
    
                ![image](https://img.haomeiwen.com/i10517060/bcfcb370159dd313.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
                ![image](https://img.haomeiwen.com/i10517060/48d573c9e9f2d492.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    *   4.Docker常用命令
        *   docker version # 查看版本
        *   docker info # 显示docker系统的信息
        *   docker search -s 10 lamp # 搜索10星以上的lamp镜像
            *   docker pull lamp:1.1.1 # 拉取lamp(版本位1.1.1)
                *   docker pull lamp (默认不加版本号,则为latest最新版本)
                    *   默认情况:Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:[https://hub.docker.com/](https://hub.docker.com/)
                    *   从阿里云库里pull想要的镜像: docker pull [registry.cn-beijing.aliyuncs.com/neucloud/python-27-centos7](http://registry.cn-beijing.aliyuncs.com/neucloud/python-27-centos7)
            *   docker images # 查看本机所有的镜像
            *   docker rmi lamp # 删除本机镜像lamp
            *   docker ps # 查看当前正在运行的容器
                *   docker ps -a # 查看宿主机上所有的容器
                    *   docker stop a # 停止容器a
                        *   docker stop myweb3 mysql3 mylamp # 按顺序依次停止这3个容器
                    *   docker restart a # 重启容器a
                    *   docker start a # 开启容器a
                    *   docker rm a # 删除容器a
        *   docker run -ti -p 23306:3306 --name mymysql56  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
            *   pull 5.6版本的mysql
            *   设置MySQL的Root密码为 123456
            *   映射容器端口3306到宿主机上的端口23306
            *   容器名称为 mymysql56
        *   docker run -it -p 28080:8080 --name mymyweb --link mymysql56:tomysql -d tomcat
            *   pull 最新版的tomcat
            *   映射容器端口8080到宿主机上的端口28080
            *   容器名为 mymyweb
            *   与容器mymysql56数据库关联,指定别名为tomysql
                *   查看Tomcat容器与MySQL容器关联成功与否?
                    *   docker exec -ti mymyweb bash # 进入Tomcat容器
                    *   cat /etc/hosts # 查看最后两行
                        *   docker logs -f mymyweb # 查看Tomcat启动情况
                            *   或: docker logs -f 9538
        *   docker cp rsbi.war mymyweb:/usr/local/tomcat/webapps/ # 复制rsbi.war到Tomcat容器
        *   docker run -v /home/jet/ceshi/:/usr/local/tomcat/webapps -p 38080:8080 --name myweb3 -d tomcat
            *   这样就不用复制 war文件到Tomcat容器中了,因为Tomcat容器中没有vim命令,需要单独去安装,增加了容器的体量,这样就可以直接映射Tomcat容器中/usr/local/tomcat/webapps路径为宿主机/home/jet/ceshi路径了
    
    *   5.阿里云docker库 ( 首页 [https://dev.aliyun.com](https://dev.aliyun.com))
    
        ![image](https://img.haomeiwen.com/i10517060/f0df3e0782629b47.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
        ![image](https://img.haomeiwen.com/i10517060/f14fdfd388461f96.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
        *   镜像加速
        *   上传下载私有镜像
            *   把容器mylamp生成新镜像,并上传到阿里云镜像源
                *   docker commit mylamp [registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1](http://registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1)
                *   docker login [registry.cn-hangzhou.aliyuncs.com](http://registry.cn-hangzhou.aliyuncs.com/)
                    *   happyjet*** / q....7 (输入你自己在阿里云注册的账号及register密码)
                *   docker push [registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1](http://registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1)
                    *   这是在我的aliyun中cdtest命名空间下的lamp_ranzhi镜像
            *   以后所有人都可以下载我刚创建的ranzhi镜像
                *   docker pull [registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1](http://registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1)
                *   docker run -tid -p 80:80 -p 3306:3306 --name myranzhi [registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1](http://registry.cn-hangzhou.aliyuncs.com/cdtest/lamp_ranzhi:1.0.1)
    
    

    相关文章

      网友评论

          本文标题:Docker - 环境搭建

          本文链接:https://www.haomeiwen.com/subject/eneeoftx.html