在docker容器中安装宝塔面板

用户环境

系统:Debian 10.2 64bit (腾讯云2核4GB轻量应用服务器)

工具:Docker Engine - Community Version: 20.10.11

用户:PENG (非root用户,有sudo权限)

安装过程

首先在用户目录下创建~/www的目录

PENG@VM-24-9-debian:~$ mkdir www

拉取一个centos7的镜像

PENG@VM-24-9-debian:~$ sudo docker pull centos:centos7

检查一下是否拉取成功

PENG@VM-24-9-debian:~$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       centos7   eeb6ee3f44bd   5 months ago   204MB

因为宝塔需要开20、21、80、443、888、8888这几个端口,我打算用10020、10021、80、10443、10888、18888做映射,可以提前检查一下端口占用

PENG@VM-24-9-debian:~$ netstat grep

现在我们使用该镜像创建一个名为PENG-baota的容器

PENG@VM-24-9-debian:~$ sudo docker run -i -t -d --name PENG-baota -p 10020:20 -p 10021:21 -p 80:80 -p 10443:443 -p 10888:888 -p 18888:8888 --privileged -v ~/www:/www centos:centos7 /sbin/init
4b9642722106a0b9aee7d198d8b1f86c81d4bd44c4d7ba85272e76f2f1086d9f

# -i 交互式操作
# -t 终端
# -d 后台运行容器,并返回容器ID
# --name 指定docker容器名称
# -p 端口转发
# --privileged 给予容器内部的写权限
# -v ~/www:/www 将主机~/www目录挂载到容器的/www
# /sbin/init 容器内部服务自启

已经能看到创建的容器PENG-baota

PENG@VM-24-9-debian:~$ sudo docker ps -a
CONTAINER ID   IMAGE            COMMAND        CREATED          STATUS          PORTS                    NAMES
4b9642722106   centos:centos7   "/sbin/init"   40 seconds ago   Up 40 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:10020->20/tcp, :::10020->20/tcp, 0.0.0.0:10021->21/tcp, :::10021->21/tcp, 0.0.0.0:10443->443/tcp, :::10443->443/tcp, 0.0.0.0:10888->888/tcp, :::10888->888/tcp, 0.0.0.0:18888->8888/tcp, :::18888->8888/tcp   PENG-baota

然后进入容器内部

PENG@VM-24-9-debian:~$ sudo docker exec -it PENG-baota /bin/bash
[root@4b9642722106 /]#

在容器内安装宝塔

[root@4b9642722106 /]# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
...
==================================================================
Congratulations! Installed successfully!
==================================================================
外网面板地址: http://[宿主机公网IP]:8888/2f****6f
内网面板地址: http://:8888/2f****6f
username: p******w
password: 7******2
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口
==================================================================
Time consumed: 1 Minute!

安装成功,然后记得在腾讯云上开端口18888

使用http://[宿主机公网IP]:18888/2f****6f连接,连接成功

在容器内为root用户设置密码

[root@4b9642722106 /]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

使用宝塔时发现,宝塔面板上终端功能无法连接,初步怀疑容器未安装ssh

考虑到后续可以用ssh直接登录容器,我们需要为容器添加22端口的映射

我们先将容器打包成镜像

PENG@VM-24-9-debian:~$ sudo docker commit -p -a "PENG" -m "pure version of baota with centos7" 4b9 peng-baota:v1

可以看到刚打包的镜像

PENG@VM-24-9-debian:~$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
peng-baota   v1        33ed5c531154   19 seconds ago   696MB
centos       centos7   eeb6ee3f44bd   5 months ago     204MB

停止旧容器并删除

PENG@VM-24-9-debian:~$ sudo docker stop 4b9
4b9
PENG@VM-24-9-debian:~$ sudo docker rm 4b9
4b9

创建新容器并多映射一个端口22

PENG@VM-24-9-debian:~$ sudo docker run -i -t -d --name PENG-baota-new -p 10020:20 -p 10021:21 -p 10022:22 -p 80:80 -p 10443:443 -p 10888:888 -p 18888:8888 --privileged -v ~/www:/www peng-baota:v1 /sbin/init
af4a67db86357cf2effb40b5ef30cc2e3d7b181d200973fd0e7caff84741e072

进入新容器内部,安装ssh

PENG@VM-24-9-debian:~$ sudo docker exec -it PENG-baota-new /bin/bash
[root@af4a67db8635 /]# yum install openssh-server

启动ssh服务,并设置开机自启

[root@af4a67db8635 /]# systemctl start sshd.service
[root@af4a67db8635 /]# systemctl enable sshd.service

最后在腾讯云上打开端口10022,然后就可以通过这个端口直接连接到容器了

ssh登录成功,同理宝塔面板上的终端也可以使用了

PENG@VM-24-9-debian:~$ ssh root@[宿主机公网IP] -p 10022
root@[宿主机公网IP]'s password:
[root@af4a67db8635 ~]# 
posted @ 2022-02-18 17:06  pjhui  阅读(911)  评论(0编辑  收藏  举报