开发者社区> rqbarzitsudte> 正文

Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器

简介: Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器
+关注继续查看

Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器



一、安装 Docker


1.安装需要的软件包

2.设置 Docker 的 yum 源

3.安装 Docker

4.启动 Docker 并设置开机自启

5.验证 Docker 是否安装成功

6.配置 Docker 加速器


二、部署 Nginx 镜像容器


1.下载基础镜像

2.创建工作目录

3.编写 Dockerfile 文件

4.编写执行脚本内容

5.生成镜像

6.启动容器并验证


三、部署 Tomcat 镜像容器


1.创建工作目录,并拖入相关软件

2.编写 Dockerfile 文件

3.编写执行脚本内容

4.生成镜像

5.运行容器并验证


四、部署 MySQL 镜像容器


1.创建工作目录,并拖入相关软件

2.编写 Dockerfile 文件

3.创建其他相关文件

4.生成镜像

5.运行容器并验证

1)进入容器,登录数据库

2)在宿主机上安装 mariadb 来进行验证


一、安装 Docker



准备工作:


image.png



  • 注意:使用的机器需能够上网。


1.安装需要的软件包


[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2


2.设置 Docker 的 yum 源


[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


image.png


3.安装 Docker


可使用 yum list docker-ce --showduplicates | sort -r 命令来查看 Docker 的所有版本。


[root@Docker ~]# yum -y install docker-ce-17.12.1.ce            #安装docker


4.启动 Docker 并设置开机自启


[root@Docker ~]# systemctl start docker
[root@Docker ~]# systemctl enable docker


5.验证 Docker 是否安装成功


[root@Docker ~]# docker version                     #查看Docker版本


image.png


6.配置 Docker 加速器


[root@Docker ~]# cat <<END > /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}
END
[root@Docker ~]# systemctl daemon-reload            #重新加载systemd配置
[root@Docker ~]# systemctl restart docker           #重启docker


image.png


二、部署 Nginx 镜像容器



1.下载基础镜像


[root@Docker ~]# docker pull dadoha/centos7.4.1708
[root@Docker ~]# docker images


image.png


2.创建工作目录


[root@Docker ~]# mkdir nginx
[root@Docker ~]# cd nginx/


image.png


3.编写 Dockerfile 文件


[root@Docker nginx]# vim Dockerfile
#设置基础镜像
FROM dadoha/centos7.4.1708
#维护该镜像的用户信息
MAINTAINER zhangsan
#安装相关依赖包
RUN yum clean all ; yum -y install proc-devel net-tools gcc zlib zlib-devel make openssl-devel wget
#下载并解压nginx软件包
RUN wget http://nginx.org/download/nginx-1.12.0.tar.gz
RUN tar zxf nginx-1.12.0.tar.gz -C /usr/src/
#切换目录
WORKDIR /usr/src/nginx-1.12.0/
#编译安装
RUN ./configure --prefix=/usr/local/nginx && make && make install
#开启端口
EXPOSE 80
EXPOSE 443
#修改nginx文件,以非daemon方式启动
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
#复制启动脚本
ADD run.sh /
RUN chmod 755 /run.sh
#运行启动脚本
CMD ["/run.sh"]


4.编写执行脚本内容


[root@Docker nginx]# cat <<END > run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
END


image.png


5.生成镜像


[root@Docker nginx]# docker build -t nginx:v1.2 .


6.启动容器并验证


[root@Docker nginx]# docker images
[root@Docker nginx]# docker run -d --name nginx -p 888:80 nginx:v1.2
[root@Docker nginx]# docker ps


image.png


验证:使用浏览器访问 http://192.168.1.1:888


image.png


三、部署 Tomcat 镜像容器




1.创建工作目录,并拖入相关软件


[root@Docker ~]# mkdir tomcat
[root@Docker ~]# cd tomcat/
[root@Docker tomcat]# ls
apache-tomcat-8.5.16.tar.gz  jdk-8u91-linux-x64.tar.gz
[root@Docker tomcat]# tar zxf jdk-8u91-linux-x64.tar.gz 
[root@Docker tomcat]# ls
apache-tomcat-8.5.16.tar.gz  jdk1.8.0_91  jdk-8u91-linux-x64.tar.gz


image.png


2.编写 Dockerfile 文件


[root@docker tomcat]# vim Dockerfile
#设置基础镜像
FROM dadoha/centos7.4.1708
#维护该镜像的用户信息
MAINTAINER zhangsan
#给JDK设置变量
ADD jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin/:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
#传入tomcat软件包
COPY apache-tomcat-8.5.16.tar.gz /
RUN tar zxf /apache-tomcat-8.5.16.tar.gz
#将解压后文件移动位置,重命名为tomcat
RUN mv /apache-tomcat-8.5.16 /usr/local/tomcat
#开启8080端口
EXPOSE 8080
#复制启动脚本
ADD run.sh /
RUN chmod 755 /run.sh
#运行启动脚本
CMD ["/run.sh"]


3.编写执行脚本内容


[root@Docker tomcat]# cat <<END > run.sh 
#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tailf /run
END


image.png


4.生成镜像


[root@Docker tomcat]# docker build -t tomcat:v8.5 .


5.运行容器并验证


[root@Docker tomcat]# docker images | grep tomcat
[root@Docker tomcat]# docker run -d --name tomcat -p 8888:8080 tomcat:v8.5
[root@Docker tomcat]# docker ps | grep tomcat


image.png


验证:使用浏览器访问 http://192.168.1.1:8888


image.png


四、部署 MySQL 镜像容器




1.创建工作目录,并拖入相关软件


[root@Docker ~]# mkdir mysql
[root@Docker ~]# cd mysql/
[root@Docker mysql]# ls
boost_1_59_0.tar.bz2  mysql-5.7.12.tar.gz


image.png


2.编写 Dockerfile 文件


[root@Docker mysql]# vim Dockerfile
#设置基础镜像
FROM dadoha/centos7.4.1708
#维护该镜像的用户信息
MAINTAINER zhangsan
#下载相关工具
RUN yum -y groupinstall "开发工具"
RUN yum -y install zlib zlib-devel gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl cmake net-tools
#创建mysql用户和组
RUN groupadd mysql
RUN useradd -r -g mysql mysql
#复制软件包到指定目录(将会自动解压)
ADD boost_1_59_0.tar.bz2 /usr/local/
ADD mysql-5.7.12.tar.gz /tmp/
#指定工作目录
WORKDIR /tmp/mysql-5.7.12/
#cmake配置及编译安装
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DSYSCONFDIR=/etc && make && make install
#更改mysql目录的属主和属组
RUN chown -R mysql:mysql /usr/local/mysql
#删除默认安装的my.cnf文件
RUN rm -rf /etc/my.cnf
#复制一份my.cnf到/etc/目录
ADD my.cnf /etc/
#复制启动脚本
RUN cp /tmp/mysql-5.7.12/support-files/mysql.server /etc/init.d/
RUN chmod +x /etc/init.d/mysql.server
ADD mysqld.service /usr/lib/systemd/system/
#设置环境变量
ENV PATH $PATH:/usr/local/mysql/bin/
#创建日志目录
RUN mkdir /usr/local/mysql/logs
RUN chown mysql:mysql /usr/local/mysql/logs/
#开启3306端口
EXPOSE 3306
#初始化设置
RUN mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#直接设置运行启动脚本
RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.sh
#给予权限
RUN chmod 755 /run.sh
RUN sh /run.sh
#启动容器时执行
CMD ["init"]


3.创建其他相关文件


[root@Docker mysql]# vim my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES utf8'
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
skip-name-resolve


[root@Docker mysql]# vim mysqld.service
[Unit]
Description=mysqldapi
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/mysql/logs/mysqld.pid
ExecStart=/etc/init.d/mysql.server start
ExecReload=/etc/init.d/mysql.server restart
ExecStop=/etc/init.d/mysql.server stop
PrivateTmp=Flase

[Install]
WantedBy=multi-user.target


image.png


4.生成镜像


[root@Docker mysql]# docker build -t mysql:v5.7 .


5.运行容器并验证


  • --privileged:表示不降权,也就是进入容器中,也可以是 root 权限。


[root@Docker mysql]# docker images | grep mysql
[root@Docker mysql]# docker run -d --name mysql -p 13306:3306 --privileged mysql:v5.7
[root@Docker mysql]# docker ps | grep mysql


image.png


1)进入容器,登录数据库


  • 如果进入容器后使用 netstat -anpt | grep 3306 查不到端口,则通过 /etc/init.d/mysql.server start 来启动。


[root@Docker mysql]# docker exec -it mysql /bin/bash
[root@75f6e0308671 mysql-5.7.12]# netstat -anpt | grep 3306
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
mysql> flush privileges;


image.png


2)在宿主机上安装 mariadb 来进行验证


[root@Docker ~]# yum -y install mariadb
[root@Docker ~]# mysql -uroot -p123456 -h192.168.1.1 -P13306


image.png


  • 注意:如果出现如下错误是因为远程的数据库未启动。


image.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19808 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29172 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22539 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16455 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20700 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14900 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23581 0
82
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载