docker初识(博客环境准备)

为什么要开始学习docker呢?主要是自己博客home页部署在同事的阿里云上,但是,目前他的服务器已经快到期,所以我要对我的主页迁移,但是想到重现搭建生产环境的不确定性,决定研究下docker,同时也方便以后博客主页的迁移,也没必要为生产环境的不确定性承担风险。

[toc]

一. docker安装

关于docker的大部分学习来源docker实践,安装方法参考此pdf文档, 也可参考在线文档

二. docker web环境搭建

此生产环境的搭建是基于我的blog的,所需的软件java,tomcat,nginx,mysql等;另外软件的安装方法大概有两种,一是通过dockerfile去构建,二就是通过拉去dockerHub的官方镜像来构建,因为刚开始学习,所以主要通过拉去官方镜像来构建。

安装 MySQL

查找Docker Hub上的mysql镜像

$ docker search mysql
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                                  MySQL is a widely used, open-source relation…   6349                [OK]                
mariadb                                                MariaDB is a community-developed fork of MyS…   1993                [OK]                
mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   456                                     [OK]
percona                                                Percona Server is a fork of the MySQL relati…   343                 [OK]                
zabbix/zabbix-server-mysql                             Zabbix Server with MySQL database support       101                                     [OK]
hypriot/rpi-mysql                                      RPi-compatible Docker Image with Mysql          87                                      
...

这里我们拉取官方的镜像,标签为5.7.22

docker pull mysql:5.7.22

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mysql,标签为5.7.22的镜像。

使用镜像

运行容器
MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。
具体操作:
首先需要创建将要映射到容器中的目录以及.cnf文件,然后再创建容器

$ pwd
/opt
$ mkdir -p docker_v/mysql/conf
$ cd docker_v/mysql/conf
$ touch my.cnf
$ docker run -p 3306:3306 --name mysql -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d imageID

命令说明:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
  • -d: 后台运行容器,并返回容器ID
  • imageID: mysql镜像ID

查看容器运行情况

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
1d7dd4ffba73        mysql:5.7.22        "docker-entrypoint.s…"   46 hours ago        Up 46 hours         0.0.0.0:3306->3306/tcp   mysql_will

使用navicat连接mysql

类似,首先在云服务器控制面板上开放mysql端口号,然后进行连接测试,如果还是连接不上,查看mysql是否开启远程访问权限。

安装 nginx并配置

查找Docker Hub上的nginx镜像

$ docker search nginx
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                                                  Official build of Nginx.                        8785                [OK]                
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker con…   1346                                    [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable of…   547                                     [OK]
jrcs/letsencrypt-nginx-proxy-companion                 LetsEncrypt container to use with nginx as p…   377                                     [OK]
kong                                                   Open-source Microservice & API Management la…   192                 [OK]                
...

这里我们拉取官方的镜像, 标签为stable, 即稳定版。

docker pull nginx:stable

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为nginx的镜像。

使用镜像

运行容器

docker run -p 80:80 -p 443:443 --name nginx_will_v2 -v $PWD/conf/server.conf:/etc/nginx/conf.d/server.conf -v $PWD/www:/www -v $PWD/logs:/wwwlogs  -d nginx:stable

注:

这里开放了两个端口号,是因为后面会配置https, 后面使用docker搭建生产环境一节也会介绍,自己掉坑了。

命令说明:

  • -p 80:80:将容器的80端口映射到主机的80端口
  • -p 443:443: 将容器的443端口映射到主机的443端口
  • –name mynginx:将容器命名为mynginx
  • -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
  • -v $PWD/conf/server.conf:/etc/nginx/conf.d/server.conf:将主机中当前目录下的server.conf挂载到容器的/etc/nginx/conf.d/server.conf (后面重点讲为啥)
  • -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs

查看容器运行情况

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
5b22ae556d53        nginx:stable        "nginx -g 'daemon of…"   14 hours ago        Up 14 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx_will_v2

通过浏览器访问测试: http://35.197.142.179/ ,出现nginx欢迎界面成功。

安装 tomcat并配置

查找Docker Hub上的tomcat镜像

$ docker search tomcat
NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                                Apache Tomcat is an open source implementati…   1879                [OK]                
tomee                                 Apache TomEE is an all-Apache Java EE certif…   51                  [OK]                
dordoka/tomcat                        Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   49                                      [OK]
davidcaste/alpine-tomcat              Apache Tomcat 7/8 using Oracle Java 7/8 with…   24                                      [OK]
consol/tomcat-7.0                     Tomcat 7.0.57, 8080, "admin/admin"              16                                      [OK]
bitnami/tomcat                        Bitnami Tomcat Docker Image                     16                                      [OK]
cloudesire/tomcat                     Tomcat server, 6/7/8                            15                                      [OK]
...

这里我们拉取官方的镜像, 标签为8.5.31

docker pull tomcat:8.5.31

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为tomcat的镜像。

使用镜像

运行容器

docker run --name tomcat_will -p 8080:8080 -v $PWD/apps:/usr/local/tomcat/webapps/apps -d tomcat:8.5.31

命令说明:

  • -p 8080:8080:将容器的8080端口映射到主机的8080端口
  • -v $PWD/apps:/usr/local/tomcat/webapps/apps:将主机中当前目录下的apps挂载到容器的/apps

查看容器运行情况

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
dd2e4a1e03c3        tomcat:8.5.31       "catalina.sh run"        19 hours ago        Up 14 hours         0.0.0.0:8080->8080/tcp                     tomcat_will

通过浏览器访问测试:http://35.197.142.179:8080/ ,出现tomcat页面成功启动。

至此,关于博客的生产环境准备工作完成,后面一章介绍生产环境的项目部署。


   转载规则


《docker初识(博客环境准备)》 Will 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
主页部署docker+ng+tomcat+https 主页部署docker+ng+tomcat+https
上一章docker初识结合docker的文档,将博客主页所需的生产环境镜像及容器准备好了,这一章主要是写一些在博客部署到线上时出现的一些问题,从而对使用容器部署有一个更深层次的理解。 [toc] 前言之前想着是使用一个纯净的linux镜像
2018-06-13
下一篇 
git进阶历程 git进阶历程
前面的git养成日记中已经学习了git的基本的操作了,关键是养成使用git的习惯,那为什么还会有这篇文章呢?是因为我在使用git的过程中,也遇到了问题,所以写这篇文章是记录下自己的问题解决和需求的解决。 [toc] 前言git高阶教程参考
2018-05-29
  目录