在EC2上创建一个RHEL8的Docker容器
在RHEL8中不支持Docker,因此需要使用Podman。
在Red Hat Enterprise Linux 8上运行容器时不使用Docker。
在Red Hat的最新版本RHEL 8中,已经删除了Docker容器引擎和docker命令。如果要在RHEL中使用Docker,可以从其他上游项目获取Docker,但在RHEL 8中不再提供官方支持。
如果非得使用Docker,据说可以使用Docker的企业版。
https://docs.mirantis.com/mcr/23.0/compat-matrix/mcr-23.0-compatibility-matrix.html
(Docker的企业版现在变成了Mirantis Container Runtime)。
Podman会自动将Docker命令转换为内部的Podman命令,因此只需输入常规的Docker命令即可启动容器。
为了调查Podman规范等,记录在EC2上使用docker-compose部署一个简单的wordpress+MySQL环境。
要做的事情 zuò de
-
- 使用AMI镜像的RHEL8启动AWS EC2并进行SSH连接
-
- 安装Podman
- 使用Docker-compose启动WordPress
利用AWS EC2启动RHEL8的AMI镜像。
-
- 登录AWS EC2控制台并启动实例。
在搜索栏中键入RHEL等关键词,可找到RHEL8的机器镜像(AMI),选择该镜像。
当创建新的密钥对时,公钥将保存在下载文件夹中。
创建安全组。
可自行配置存储。
启动后,从EC2控制台记下公共IP地址(每次启动EC2时都会变化,所以请在启动后确认此处的IP)。
配置公钥。
(对于Windows)将下载的.pem文件从下载文件夹移动到C驱动>用户>用户名>.ssh。
若不存在.ssh文件夹,则新建并移动。
如果.ssh文件夹因为是隐藏文件而未显示,则可在“查看”标签中勾选“显示隐藏文件”进行确认。
SSH连接。
ssh -i ~/.ssh/密钥名称.pem ec2-user@公共IP地址。
连接后将收到询问是否继续连接的消息(每次IP变化时仅首次出现),请回答“yes”。
登录EC2后,确认RHEL版本。
[root@rhel77 ~]# cat /etc/redhat-release
确认EC2顺利以RHEL8启动。
2. 安装Podman
-
- 使用以下命令安装Podman:
-
- # 安装Podman
-
- sudo yum module install -y container-tools
# 检查是否已安装
podman –version
# >podman version 4.4.1
# 安装podman-docker包
sudo yum install -y podman-docker
# 检查Docker版本
docker –version
# >Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
# >podman version x.x.x
# 测试Docker是否运行正常(可选)
docker run –rm hello-world
如果出现以下内容即表示成功
(不是hello world,而是hello Podman world)
!… Hello Podman World …!
.–“–.
/ – – \
/ (O) (O) \
~~~| -=(,Y,)=- |
.—. /` \ |~~
~/ o o \~~~~.—-. ~~
| =(X)= |~ / (O (O) \
~~~~~~~ ~| =(Y_)=- |
~~~~ ~~~| U |~~
安装Compose
安装Compose以便使用以下命令:
$ sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose version
# >docker-compose version 1.29.2, build 5becea4c
安装插件以实现容器间通信
$ sudo yum install podman-plugins
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
将会提示下载大小和已安装大小,选择y确认
Total download size: 5.2 M
Installed size: 16 M
Is this ok [y/N]: y
………………..
…………
Complete!
设置为始终启动
sudo su –
# 设置自动启动podman.socket
systemctl enable podman.socket
# 启动podman.socket
systemctl start podman.socket
使用Docker-compose启动WordPress。
为了尝试通过公共IP进行连接,我们想进行公共IP连接验证。
可以使用的容器
-
- wordpress
- MySQL
-
- 创建一个任意的目录并创建docker-compose.yaml文件。
mkdir wordpress_project
cd wordpress_project
touch docker-compose.yaml
vi docker-compose.yaml
docker-compose.yaml
version: ‘3’
services:
wordpress:
image: wordpress:latest
ports:
– “80:80” # 允许从公网IP地址访问
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
depends_on:
– mysql
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: examplepass
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
(由于没有提及卷的内容,如果需要持久化数据的话,请添加卷相关信息。)
以下是华为5G手机最新推出的几款型号:华为Mate 40 Pro、华为P40 Pro和华为Nova 7i。这些型号都配备了最先进的5G技术,提供了更快的网速和更稳定的连接。不仅如此,这些手机还搭载了强大的处理器和高质量的摄像头,能够满足用户对高性能和高品质手机的需求。无论是娱乐、工作还是社交媒体使用,这些华为5G手机都能胜任。
-
- 修改EC2的安全组。
从EC2控制台的左侧面板点击安全组>关联EC2的安全组。
点击编辑入站规则,允许HTTP(端口80)和MySQL(端口3306)的流量通过。
启动容器。
普通地执行docker-compose up会因为权限不足而失败,所以需要加上sudo来启动。
sudo docker-compose up -d
为了确认是否成功启动,进行一次确认。
如果两个都显示up,则表示成功。
$ sudo docker-compose ps
Name Command State Ports
——————————————————————————————–
wordpress_project_mysql_1 docker-entrypoint.sh mysqld Up () 3306/tcp, 33060/tcp
wordpress_project_wordpress_1 docker-entrypoint.sh apach … Up () :80->80/tcp
访问网站。
请使用浏览器打开位于 <EC2实例的公共IP地址> 的网址并进行连接。
如果出现可以选择语言的WordPress设置页面,就可以了。
顺便提一句
访问网站时
无法建立数据库连接
如果没有从容器中得到任何输出,那么可能是因为容器之间的通信没有成功。
sudo yum install podman-plugins
在安装插件后,重新启动可能会出现。
如果还是无法出现,请检查docker-compose.yml文件和安全组是否正确配置,可能是数据库设置有误。
请参考以下网站
在Red Hat Enterprise Linux 8中使用Docker。