docker pull centos:7.9.20092.将拉取下的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
3.通过xshell连接docker容器其中的命令解释为:
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可以自己定义
启动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 -version5.在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.local6.在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.service7.使用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中访问
9.将当前运行容器制作为镜像将Idea打包的war包部署在webapps中,通过宿主机ip+8080+war包名称 方式进行访问
容器的生命周期
暂停: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 仓库名/生成的镜像名:TAG11.在仓库查看镜像,并拉取制作的镜像
https://hub.docker.com/
docker pull 仓库名/生成的镜像名:TAG总结:整理此博客主要为了记录流程,也是再一次加深了对docker镜像和容器的理解。希望能对刚入门docker的朋友们有所帮助,省下来踩坑的时间咱们开开心心打两把游戏不香吗!



