栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker拉取centos镜像并部署web应用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker拉取centos镜像并部署web应用

此博客参考how2j.com和https://www.fecmall.com/topic/592博客,并进行整理 1.首先我们要去docker仓库中拉取一个centos系统作为我们镜像的系统,此处拉取的仓库推荐为centos7.9.2009版本。防止出现在镜像中执行systemctl命令时出现Failed to get D-Bus connection: Operation not permitted没有操作权限的问题
docker pull centos:7.9.2009
2.将拉取下的centos:7.9.2009镜像启动,将其作为一个容器
docker run -dit --privileged -p 2222:22 -p80:80 -p3307:3306 -p8080:8080 -p30000-30010:30000-30010 --name centos7web 镜像名称:版本号 /usr/sbin/init

其中的命令解释为:

docker run 表示运行一个镜像

-dit 是 -d -i -t 的缩写。 -d ,表示 detach,即在后台运行。 -i 表示提供交互接口,这样才可以通过 docker 和 跑起来的操作系统交互。 -t 表示提供一个 tty (伪终端),与 -i 配合就可以通过 ssh 工具连接到 这个容器里面去了

–privileged 启动容器的时候,把权限带进去。

-p 2222:22 表示在CentOS 上开放2222端口。 第二个22 表示在容器里开放22端口。 这样当访问CentOS 的2222端口的时候,就会间接地访问到容器里了(此处非常重要,通过这种方式可以自己任意定义端口映射到容器中)

-p 3307:3306 表示访问3307端口时,映射到容器mysql的3306端口,使用navicat等数据库连接工具访问端口使用

–name centos7web 为要运行的容器起名字,centos7web可以自己定义

3.通过xshell连接docker容器

启动docker,进入docker容器,如果是守护态容器,可以通过下面的方式进入:

先查看当前运行的容器状态,获取当前运行容器的ConTAINER ID

docker ps -a 

进入容器

docker exec -it 运行容器的ConTAINER ID /bin/bash 

使用passwd密码来修改密码(如提示没有这个命令行使用yum install passwd安装)

passwd
    xxx密码
    xxx确认密码

安装Openssh(docker 容器中执行)

yum -y install openssh-server
yum -y install openssh-clients

修改SSH配置文件以下选项,去掉#注释,将四个选项启用:

vi /etc/ssh/sshd_config

RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登录

重启ssh服务,并设置开机启动:

yum install initscripts -y
service sshd restart

退出容器并保存更改

使用exit命令或者ctrl+C来退出当前运行的容器:

此时使用xshell连接docker容器

ip: 为宿主主机的ip,而不是docker容器的ip
端口号:2222 
用户名: root
密码: 上面password部分设置的密码
4.在docker容器中安装JDK(注意区分宿主机和docker容器)

使用yum方式安装JDK

yum -y install java-1.8.0-openjdk.x86_64

查看JDK是否安装成功

java -version
5.在docker容器中安装Tomcat

yum上没有tomcat的源,所以使用如下方式下载解压

防止提示wget无法使用,下载命令器:
yum install wget -y

cd /tmp
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz
tar xzf apache-tomcat-7.0.92.tar.gz
mv apache-tomcat-7.0.92 /usr/local/tomcat7



如果yum解压方式失败,此处提供how2j网站的tomcat8的下载地址:

https://how2j.cn/frontdownload?bean.id=2036

通过xftp方式传输解压Tomcat,解压出的文件放在 usr/local 下

启动服务

cd /usr/local/tomcat解压文件/bin/
./startup.sh

查看8080端口是否开放

yum install net-tools -y
netstat -anp|grep 8080

设置Tomcat服务器自启动

rc.local脚本在 centos7里被降级了,不能被执行,所以要执行如下语句使得其可以被执行

chmod +x /etc/rc.d/rc.local
 
将/usr/local/tomcat解压路径/bin/startup.sh 放在rc.local最后一行

vi /etc/rc.d/rc.local    vi /etc/rc.d/rc.local
6.在docker容器中安装Mysql

yum上mysql的资源有问题,所以不能仅仅只用yum安装。在使用yum之前还需要用其他命令获取mysql社区版

cd /tmp
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm  
rpm -ivh mysql-community-release-el7-5.noarch.rpm  

通过yum进行安装Mysql

yum install mysql mysql-server mysql-devel -y

启动mysql服务器(此处如果使用的centos7版本不是centos7.9.2009版本,则会一直提示Failed to get D-Bus connection: Operation not permitted没有操作权限,网上教程使用特权模式运行,测试还是不行)

systemctl start mysql.service

验证3306端口是否开启

netstat -anp|grep 3306

设置Mysql密码

mysqladmin -u root password admin

提示:Warning: Using a password on the command line interface can be insecure.代表命令执行成功,但是密码是显示的不安全。

登陆验证

mysql -uroot -padmin
show databases;

设置Mysql自启动

systemctl enable mysqld.service

关闭Mysql自启动

systemctl disable mysqld.service
7.使用Navicat数据库连接工具连接docker镜像中的Mysql

使用宿主机ip+3307端口进行访问,如果出现:

1130 - Host XXX is not allowed to connect to this MySQL server。

解决方案:

登陆root用户:
mysql -u root -p

use mysql;

所有ip都有权限访问(生产环境会有重大安全隐患,测试可用):
update user set host = '%' where user ='root';

以192.168.1开头的ip有权限访问:
update user set host = '192.168.18.%' where user ='root';

执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误,说明有多个ROOT用户纪录在USER表中了.
查看一下host是否已经有了192.168.18.%这个值,有了就可以了.
mysql> select host,user from user where user='root';

使配置立即生效:
flush privileges;
8.将项目部署到Tomcat中访问

将Idea打包的war包部署在webapps中,通过宿主机ip+8080+war包名称 方式进行访问

9.将当前运行容器制作为镜像

容器的生命周期

暂停:pause

恢复:unpause

停止:stop

开始:start (docker在执行start命令时需要等待一会才可以连接成功)

将运行容器暂停

docker ps -a 
docker stop 当前运行容器的contrainerId

使用commit命令将容器制作为镜像

docker commit 当前运行容器的contrainerId 生成的镜像名称 
10.将制作好的镜像提交到仓库中

登陆docker仓库

docker login

使用push命令提交当前制作的镜像到仓库中

docker images

docker tag 制作好的镜像名 仓库名/生成的镜像名:tag  (tag默认就是latest)
docker push 仓库名/生成的镜像名:TAG
11.在仓库查看镜像,并拉取制作的镜像

https://hub.docker.com/

docker pull 仓库名/生成的镜像名:TAG
总结:整理此博客主要为了记录流程,也是再一次加深了对docker镜像和容器的理解。希望能对刚入门docker的朋友们有所帮助,省下来踩坑的时间咱们开开心心打两把游戏不香吗!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号