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安装)
passwdxxx密码xxx确认密码
安装Openssh(docker 容器中执行)
yum -y install openssh-server
yum -y install openssh-clients
修改SSH配置文件以下选项,去掉#注释,将四个选项启用:
vi /etc/ssh/sshd_configRSAAuthentication 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 -ycd /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 -puse 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 imagesdocker tag 制作好的镜像名 仓库名/生成的镜像名:tag (tag默认就是latest)
docker push 仓库名/生成的镜像名:TAG
11.在仓库查看镜像,并拉取制作的镜像
https://hub.docker.com/
docker pull 仓库名/生成的镜像名:TAG
总结:整理此博客主要为了记录流程,也是再一次加深了对docker镜像和容器的理解。希望能对刚入门docker的朋友们有所帮助,省下来踩坑的时间咱们开开心心打两把游戏不香吗!
Docker拉取centos镜像并部署web应用相关推荐
- Docker拉取RabbitMQ镜像运行启动
Docker拉取rabbitmq镜像运行启动 RabbitMQ简介 一.命令拉取 二.获取镜像 三.运行命令参数 四.查看正在运行的容器 五.客户端访问 最后 RabbitMQ简介 以熟悉的电商场景为 ...
- docker拉取mysql镜像太慢的问题
docker拉取镜像太慢的问题 docker拉取mysql镜像半个小时依然没有成功,改用阿里云镜像加速器. 1.进入阿里云平台 链接: 阿里云控制台,镜像搜索mysql 复制加速器链接 2.进入虚拟机 ...
- docker拉取RabbitMq镜像并安装
RabbitMQ安装入门篇 文章目录 前言 一.Docker拉取RabbitMq镜像 二.docker下启动RabbitMq容器 三.查看RabbitMq是否启动 总结 前言 这篇文章为了方便初学者入 ...
- Docker拉取Mysql镜像并启动访问及docker常用命令介绍
上篇文章介绍了 Centos7安装docker并修改成阿里云镜像源地址 可以参考使用: https://blog.csdn.net/weixin_44232093/article/details/12 ...
- docker拉取mysql镜像并启动
1.安装Docker的依赖库 yum install -y yum-utils device-mapper-persistent-data lvm2 2.添加Docker CE的软件源信息 yum-c ...
- Window中的Docker 拉取Mysql镜像 并在本地Navicate链接
首先本地 拉取mysql镜像 以下是所有mysql镜像 我自己下载的为5.6 下面 以5.6为例:(拉取mysql5.6镜像) docker pull mysql:5.6 创建一个容器 doc ...
- Docker拉取Redis镜像安装运行
拉取镜像 输入命令 docker pull redis 运行镜像 docker run -d -p 6379:6379 --name myredis redis 查看容器 docker ps root ...
- Docker拉取splash镜像失败
参考:https://www.jianshu.com/p/f07d2aeda698 问题: 环境:win10专业版.Docker for Windows 不管是网上docker run -p 8050 ...
- Docker拉取ZooKeeper镜像安装运行
一.选择镜像版本 Docker镜像仓库,搜索ZooKeeper镜像版本 仓库地址 搜索zookeeper3.4.9版本,我选择的是这个版本. 二.Docker安装ZooKeeper 1.下载ZooKe ...
最新文章
- setPreferredSize和setSize的区别及用法
- winform_界面美化设计_显示/隐藏侧边栏
- 将InputStream写入本地文件
- 【Linux】1.shell各个命令
- 必须要熬夜的时候的最佳伴侣是什么?亲测有效
- miui12怎么自定义开机动画_MIUI12正式官宣,5天后发布!网友:发布是发布,12月才能更新?...
- ArcGIS Engine 编辑- ITask
- [转载][QT][SQL]sql学习记录3_sqlite之update delete like
- Java EE企业系统性能问题的原因和解决建议
- Common下MadieHelper.cs
- 数据库索引为什么会失效
- sql server2012 第一次访问慢_【共同学习】第1章 数据库和SQL (续)
- matlab yalmip cplex,关于 cplex+matlab+yalmip问题
- Edraw Max(亿图图示):新手如何快速美化思维导图?
- 一键去除照片水印—INpaint
- 栈帧 stack frame
- IPSEC over GRE
- MR:一:什么是MR混合现实技术?
- 天猫精灵打开电脑(网络唤醒)
- 机器学习数学基础-最大似然估计与贝叶斯法则