在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 ~]#