此博客参考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应用相关推荐

  1. Docker拉取RabbitMQ镜像运行启动

    Docker拉取rabbitmq镜像运行启动 RabbitMQ简介 一.命令拉取 二.获取镜像 三.运行命令参数 四.查看正在运行的容器 五.客户端访问 最后 RabbitMQ简介 以熟悉的电商场景为 ...

  2. docker拉取mysql镜像太慢的问题

    docker拉取镜像太慢的问题 docker拉取mysql镜像半个小时依然没有成功,改用阿里云镜像加速器. 1.进入阿里云平台 链接: 阿里云控制台,镜像搜索mysql 复制加速器链接 2.进入虚拟机 ...

  3. docker拉取RabbitMq镜像并安装

    RabbitMQ安装入门篇 文章目录 前言 一.Docker拉取RabbitMq镜像 二.docker下启动RabbitMq容器 三.查看RabbitMq是否启动 总结 前言 这篇文章为了方便初学者入 ...

  4. Docker拉取Mysql镜像并启动访问及docker常用命令介绍

    上篇文章介绍了 Centos7安装docker并修改成阿里云镜像源地址 可以参考使用: https://blog.csdn.net/weixin_44232093/article/details/12 ...

  5. docker拉取mysql镜像并启动

    1.安装Docker的依赖库 yum install -y yum-utils device-mapper-persistent-data lvm2 2.添加Docker CE的软件源信息 yum-c ...

  6. Window中的Docker 拉取Mysql镜像 并在本地Navicate链接

    首先本地   拉取mysql镜像 以下是所有mysql镜像 我自己下载的为5.6   下面 以5.6为例:(拉取mysql5.6镜像) docker pull mysql:5.6 创建一个容器 doc ...

  7. Docker拉取Redis镜像安装运行

    拉取镜像 输入命令 docker pull redis 运行镜像 docker run -d -p 6379:6379 --name myredis redis 查看容器 docker ps root ...

  8. Docker拉取splash镜像失败

    参考:https://www.jianshu.com/p/f07d2aeda698 问题: 环境:win10专业版.Docker for Windows 不管是网上docker run -p 8050 ...

  9. Docker拉取ZooKeeper镜像安装运行

    一.选择镜像版本 Docker镜像仓库,搜索ZooKeeper镜像版本 仓库地址 搜索zookeeper3.4.9版本,我选择的是这个版本. 二.Docker安装ZooKeeper 1.下载ZooKe ...

最新文章

  1. setPreferredSize和setSize的区别及用法
  2. winform_界面美化设计_显示/隐藏侧边栏
  3. 将InputStream写入本地文件
  4. 【Linux】1.shell各个命令
  5. 必须要熬夜的时候的最佳伴侣是什么?亲测有效
  6. miui12怎么自定义开机动画_MIUI12正式官宣,5天后发布!网友:发布是发布,12月才能更新?...
  7. ArcGIS Engine 编辑- ITask
  8. [转载][QT][SQL]sql学习记录3_sqlite之update delete like
  9. Java EE企业系统性能问题的原因和解决建议
  10. Common下MadieHelper.cs
  11. 数据库索引为什么会失效
  12. sql server2012 第一次访问慢_【共同学习】第1章 数据库和SQL (续)
  13. matlab yalmip cplex,关于 cplex+matlab+yalmip问题
  14. Edraw Max(亿图图示):新手如何快速美化思维导图?
  15. 一键去除照片水印—INpaint
  16. 栈帧 stack frame
  17. IPSEC over GRE
  18. MR:一:什么是MR混合现实技术?
  19. 天猫精灵打开电脑(网络唤醒)
  20. 机器学习数学基础-最大似然估计与贝叶斯法则

热门文章

  1. ERA5 积雪 降雪 区别_黑龙江漠河:迎入秋以来最大降雪?雪深超10厘米
  2. 中国剩余定理(孙子定理)+ exgcd求逆元
  3. gdpr隐私保护_GDPR来袭,你知道如何保护个人和企业的隐私吗?(第2期)
  4. 最小二乘法拟合三维直线
  5. 比特大陆斥资7亿买Dash,究竟看中了啥?
  6. 生活充满大量非理性,读《思考,快与慢》有感
  7. 【Java 责任链模式实例】
  8. 正则 包含多个关键词且不包含某些关键词,用户输入伪正则表达式,处理为正则表达式
  9. 2019IDC:是谁拿下中国机器学习平台市场份额第一?
  10. 背景调查市场现状及未来发展趋势