- 下载一个
docker
镜像
docker pull centos
- 创建
docker
容器:
创建一个命名为
baota
(名称自定义) 在后台运行,将宿主机的20,21,80,443,888,8888
这五个端口映射到docker
容器中去,并将宿主机的/home/www
文件夹映射到docker
容器的/www
上去(注意:文件目录如果不存在。宿主机和容器会自己创建,无需手动创建)。privileged
表示在运行容器的时候,给容器加特权,设置容器有写文件的权限。
[root@VM-0-6-centos ~]# docker run -i -t -d --name baota -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged=true -v /home/www:/www centos
b8132e3e001e1565777e4ad7caee8acf436c5052a6e3fa08f3f57ae0c30204de
- 进入容器:
-
docker ps
查看
[root@VM-0-6-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8132e3e001e centos "/bin/bash" 8 minutes ago Up 8 minutes 0.0.0.0:20-21->20-21/tcp, :::20-21->20-21/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:888->888/tcp, :::888->888/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp baota
- 进入:
docker exec
[root@VM-0-6-centos ~]# docker exec -it b8132e3e001e /bin/bash
[root@b8132e3e001e /]#
- 执行宝塔面板
Centos
安装命令
[root@b8132e3e001e /]# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
- 期间会有一个安装确认,输入
y
安装完成
==================================================================
Time consumed: 2 Minute!
[root@b8132e3e001e /]#
重启
Docker
测试,查看宝塔是否可正常运行
[root@VM-0-6-centos ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
- 查看容器
[root@VM-0-6-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 启动
baota
容器
[root@VM-0-6-centos ~]# docker start baota
baota
[root@VM-0-6-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8132e3e001e centos "/bin/bash" About an hour ago Up 5 seconds 0.0.0.0:20-21->20-21/tcp, :::20-21->20-21/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:888->888/tcp, :::888->888/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp baota
-
浏览器查看,提示错误
解决方法
- 关于
Docker
下Centos
安装宝塔,容器重启宝塔不启动的解决办法:
在该容器(baota
)目录"/etc/profile.d"
下新建一个.sh
文件,名称随意
建议.sh
文件写成这样:
#!/bin/bash
initDir="/etc/init.d/"
for file in `ls $initDir`
do
if [ x"$file" != x"README" ];then
if [ -f "$initDir/$file" ];then
$initDir/$file start
fi
fi
done
- Linux 新建空白文件命令:
touch
touch baota.sh
[root@VM-0-6-centos lib]# docker exec -it baota /bin/bash
[root@b8132e3e001e /]# ls
bin dev etc home install.sh lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var www
[root@b8132e3e001e profile.d]# touch baota.sh
[root@b8132e3e001e profile.d]# vi baota.sh
- 刷新浏览器,系统正常
特别注意:为了能够保存(持久化)数据以及共享容器间的数据,docker
一定使用-v挂载主机目录到容器,比如上面启动容器的docker -v
参数。