- Install / Initial Config
- NTP / SSH Server
- DNS / DHCP Server
- Storage Server
- Virtualization
- Container Platform
- Cloud Compute
- Directory Server
- Web Server
- Database
- FTP / Samba / Mail
- Proxy / Load Balance
- Monitoring
- Security
- Lang / Development
- Desktop / Others
- Others #2
- Bacula - Backup
- Memcached - Memory Cache
- RabbitMQ - Message Broker
- Git - Revision Control
- Subversion - Revision Control
- Ansible - Config Manage
- PXE Boot- PXE Server
- Pacemaker - HA Cluster
- OpenVPN - VPN Server
- WireGuard - VPN Server
- Rsyslog - Syslog Server
- LVM - LVM Manage
- NextCloud - Cloud Storage
- Dockerfile To Install Tomcat On Centos Virtualbox
- Install Tomcat On Ubuntu
- Install Tomcat On Centos Docker
- Install Tomcat Windows
- Dockerfile To Install Tomcat On Centos Command
一.Docker概述
33 centos /python-35-centos7 Platform for building and running Python 3.5 30 centos /postgresql-96-centos7 PostgreSQL is an advanced Object-Relational 29 kinogmt /centos-ssh CentOS with SSH 22 OK openshift /jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w. 前回、CentOSコンテナ起動後に、コンテナにログインしてTomcatインストールを行い、そのコンテナからDockerイメージを作成しました。 今回は、それをDockerfileで記述して、TomcatのDockerイメージを作成します。. On December 2020, CentOS Project announced that they shifts focus to CentOS Stream and CentOS Linux 8, as a rebuild of RHEL 8, will end at the end of 2021. So CentOS 8 users must migrate to CentOS Stream 8 or other Operating Systems till the end of 2021. It's possible to get ISO file or RPM packages for CentOS Stream from the link below.
1.Docker简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像;运行中的这个镜像称为容器,容器启动是非常快速的。
对比传统虚拟机总结:
2.Docker术语
- docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
- docker客户端(Client):连接docker主机进行操作; docker仓库(Registry):用来保存各种打包好的软件镜像;
- docker镜像(Images):软件打包好的镜像;放在docker仓库中;
- docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
二.Docker安装
1.安装linux虚拟机
1)、VMWare、VirtualBox(安装); VirtualBox下载地址: https://www.virtualbox.org/wiki/Downloads
2)、安装linux系统CentOS7;
3)、双击启动linux虚拟机;使用 root/ 123456登陆
4)、使用客户端连接linux服务器进行命令操作;
5)、设置虚拟机网络;桥接网络=选好网卡接入网线;
6)、设置好网络以后使用命令重启虚拟机的网络 service network restart ip addr
2.linux上安装docker
1、检查内核版本,必须是3.10及以上 uname ‐r ,如果不是需要 yum update升级软件包及内核
2、安装docker ,输入y确认安装
yum方式安装的docker不是最新版的,通过下面方式安装最新版的docker
3、启动docker 查看docker版本号
4、设置开机启动docker
5、停止docker
6、查看docker帮助
帮助命令如下:
三.Docker镜像操作
操作 | 命令 | 说明 |
检索 | docker search 关键字 eg:dockersearchmysql | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest(最新的) |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
1.检索镜像
默认会去 https://hub.docker.com/ 搜索,搜过结果如下
- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARS:用户评价,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.拉取镜像
拉取镜像默认是从docker hub拉取,这是docker默认的公用仓库,不过缺点是国内下载会比较慢。这里设置从ustc拉取镜像(建议使用)。
在宿主机器编辑文件:vi /etc/docker/daemon.json,在该配置文件中加入(没有该文件的话,请先建一个):
最后,需要重启docker服务 systemctl restart docker.service 执行拉取镜像命令
3.列表镜像
- REPOSITORY:镜像所在的仓库名称
- TAG:镜像标签
- lMAGE ID:镜像ID
- CREATED:镜像的创建日期(不是获取该镜像的日期)
- SIZE:镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
4.删除镜像
四.Docker容器操作
操作 | 命令 | 说明 |
运行 | docker run --name container-name -d image-name eg:docker run –name myredis –d redis | --name:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps(查看正在运行中的容器); | docker ps -a:查看历史运行过的容器 docker ps -l:查看最近运行过的容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动容器 |
删除 | docker rm container-id | 删除指定容器 |
端口映射 | -p 6379:6379 eg:docker run -d -p 6379:6379 --name myredis docker.io/redis | -p: 主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id | |
更多命令 |
1.启动容器
1)以交互方式启动容器:docker run -it --name 容器名称 镜像 /bin/bash;
- -i:表示以'交互模式'运行容器
- -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- --name :为创建的容器命名。
- -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
- -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
- -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
创建一个交互式容器并取名为mycentos
2)以守护进程后台方式启动容器:docker run -d --name 容器名称 镜像
2.停止容器
docker stop 容器名称或者容器ID
3.重启容器
Dockerfile To Install Tomcat On Centos Virtualbox
docker start 容器名称或者容器ID
4.删除容器
删除容器必须是已经停止的容器,删除指定容器:docker rm 容器名称或者容器ID;删除所有容器:docker rm ‘docker ps -a -q'
五.Docker下部署应用程序
1. 构建镜像方案
- 方案一:直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。
- 方案二:通过dockerfile制作自己的应用程序镜像
- 方案三:根据系统镜像创建Docker容器,这个时候Docker就相当于一个虚拟机,然后进入容器部署对应的应用。具体步骤如下:
- 启动Centos系统镜像的容器my_container;
- 在该容器中部署应用程序,例如:Tomcat、Nginx等;
- 将部署完的my_container提交为新的镜像;
- 然后根据新的镜像去创建容器;
- 这个镜像可以打包,导入到其他的Docker服务器上
2. 构建MySQL镜像
1、 获取基础镜像CentOS
[root@localhost ~]# docker pull centos
2、 启动容器并且在容器内部安装MySQL
docker run -i -t --name mycentos-mysql centos /bin/bash(通过下面的命令运行centos容器。否则安装后的mysql无法启动。)
[root@localhost ~]# docker run -it --privileged --name=mycentos-mysql centos /usr/sbin/init
另起一个窗口进入容器:[root@localhost ~]# docker exec -it mycentos-mysql /bin/bash
[root@53ee11bff386 /]# yum install -y wget net-tools
[root@53ee11bff386 /]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
[root@53ee11bff386 /]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@53ee11bff386 /]# yum install mysql-community-server
3、 启动mysql,并设置密码
[root@53ee11bff386 /]# systemctl start mysqld
[root@53ee11bff386 /]# mysql -uroot -p 回车
Install Tomcat On Ubuntu
mysql> SET PASSWORD = PASSWORD('123456');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;
4、 提交为新镜像
[root@localhost ~]# docker commit mycentos-mysql mysql5.6
[root@localhost ~]# docker images
Install Tomcat On Centos Docker
5、 启动mysql容器
[root@localhost ~]# docker run -d -e 'container=docker' --privileged=true --name mysql5.6 -p 3306:3306 mysql5.6
6、 进入容器启动MySQL服务
[root@localhost ~]# docker exec -it mysql5.6 /bin/bash
[root@6dda80c75bfc /]# systemctl start mysql
7、 Navicat连接
8、 上传镜像到Docker hub
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
二.Docker安装
1.安装linux虚拟机
1)、VMWare、VirtualBox(安装); VirtualBox下载地址: https://www.virtualbox.org/wiki/Downloads
2)、安装linux系统CentOS7;
3)、双击启动linux虚拟机;使用 root/ 123456登陆
4)、使用客户端连接linux服务器进行命令操作;
5)、设置虚拟机网络;桥接网络=选好网卡接入网线;
6)、设置好网络以后使用命令重启虚拟机的网络 service network restart ip addr
2.linux上安装docker
1、检查内核版本,必须是3.10及以上 uname ‐r ,如果不是需要 yum update升级软件包及内核
2、安装docker ,输入y确认安装
yum方式安装的docker不是最新版的,通过下面方式安装最新版的docker
3、启动docker 查看docker版本号
4、设置开机启动docker
5、停止docker
6、查看docker帮助
帮助命令如下:
三.Docker镜像操作
操作 | 命令 | 说明 |
检索 | docker search 关键字 eg:dockersearchmysql | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest(最新的) |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
1.检索镜像
默认会去 https://hub.docker.com/ 搜索,搜过结果如下
- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARS:用户评价,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.拉取镜像
拉取镜像默认是从docker hub拉取,这是docker默认的公用仓库,不过缺点是国内下载会比较慢。这里设置从ustc拉取镜像(建议使用)。
在宿主机器编辑文件:vi /etc/docker/daemon.json,在该配置文件中加入(没有该文件的话,请先建一个):
最后,需要重启docker服务 systemctl restart docker.service 执行拉取镜像命令
3.列表镜像
- REPOSITORY:镜像所在的仓库名称
- TAG:镜像标签
- lMAGE ID:镜像ID
- CREATED:镜像的创建日期(不是获取该镜像的日期)
- SIZE:镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
4.删除镜像
四.Docker容器操作
操作 | 命令 | 说明 |
运行 | docker run --name container-name -d image-name eg:docker run –name myredis –d redis | --name:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps(查看正在运行中的容器); | docker ps -a:查看历史运行过的容器 docker ps -l:查看最近运行过的容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动容器 |
删除 | docker rm container-id | 删除指定容器 |
端口映射 | -p 6379:6379 eg:docker run -d -p 6379:6379 --name myredis docker.io/redis | -p: 主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id | |
更多命令 |
1.启动容器
1)以交互方式启动容器:docker run -it --name 容器名称 镜像 /bin/bash;
- -i:表示以'交互模式'运行容器
- -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- --name :为创建的容器命名。
- -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
- -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
- -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
创建一个交互式容器并取名为mycentos
2)以守护进程后台方式启动容器:docker run -d --name 容器名称 镜像
2.停止容器
docker stop 容器名称或者容器ID
3.重启容器
Dockerfile To Install Tomcat On Centos Virtualbox
docker start 容器名称或者容器ID
4.删除容器
删除容器必须是已经停止的容器,删除指定容器:docker rm 容器名称或者容器ID;删除所有容器:docker rm ‘docker ps -a -q'
五.Docker下部署应用程序
1. 构建镜像方案
- 方案一:直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。
- 方案二:通过dockerfile制作自己的应用程序镜像
- 方案三:根据系统镜像创建Docker容器,这个时候Docker就相当于一个虚拟机,然后进入容器部署对应的应用。具体步骤如下:
- 启动Centos系统镜像的容器my_container;
- 在该容器中部署应用程序,例如:Tomcat、Nginx等;
- 将部署完的my_container提交为新的镜像;
- 然后根据新的镜像去创建容器;
- 这个镜像可以打包,导入到其他的Docker服务器上
2. 构建MySQL镜像
1、 获取基础镜像CentOS
[root@localhost ~]# docker pull centos
2、 启动容器并且在容器内部安装MySQL
docker run -i -t --name mycentos-mysql centos /bin/bash(通过下面的命令运行centos容器。否则安装后的mysql无法启动。)
[root@localhost ~]# docker run -it --privileged --name=mycentos-mysql centos /usr/sbin/init
另起一个窗口进入容器:[root@localhost ~]# docker exec -it mycentos-mysql /bin/bash
[root@53ee11bff386 /]# yum install -y wget net-tools
[root@53ee11bff386 /]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
[root@53ee11bff386 /]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@53ee11bff386 /]# yum install mysql-community-server
3、 启动mysql,并设置密码
[root@53ee11bff386 /]# systemctl start mysqld
[root@53ee11bff386 /]# mysql -uroot -p 回车
Install Tomcat On Ubuntu
mysql> SET PASSWORD = PASSWORD('123456');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;
4、 提交为新镜像
[root@localhost ~]# docker commit mycentos-mysql mysql5.6
[root@localhost ~]# docker images
Install Tomcat On Centos Docker
5、 启动mysql容器
[root@localhost ~]# docker run -d -e 'container=docker' --privileged=true --name mysql5.6 -p 3306:3306 mysql5.6
6、 进入容器启动MySQL服务
[root@localhost ~]# docker exec -it mysql5.6 /bin/bash
[root@6dda80c75bfc /]# systemctl start mysql
7、 Navicat连接
8、 上传镜像到Docker hub
- 注册Dockerhub账号,在Docker Hub注册后创建private/public的Repository。
- 登录docker login [root@localhost ~]# docker login
- tag修改镜像名称 [root@localhost ~]# docker tag mysql5.6 frank409167848/centos7-mysql5.6
- 推送docker push [root@localhost ~]# docker push frank409167848/centos7-mysql5.6
- Docker hub 查看
- 下载
六.报错问题
1.启动docker报错
查看docker状态
Solutions:根据高亮的错误日志得知,此linux的内核中的SELinux不支持 overlay2 graph driver ,解决方法有两个,要么启动一个新内核,要么就在docker里禁用selinux,--selinux-enabled=false
如上改为--selinux-enabled=false后保存,重启docker,搞定!
2.启动mysql报错
Install Tomcat Windows
[root@dfb1cc594f9b /]# systemctl start mysql
Failed to get D-Bus connection: Operation not permitted
解决办法:
生成容器: # docker run -d -e 'container=docker' --privileged=true --name mysql5.6 -p 3306:3306 mysql5.6
进入容器: # docker exec -it mysql /bin/bash
这样可以使用systemctl启动服务了。