背景
因为最近在学docker,而且有oracle的免费机,就像测试测试docker安装宝塔面板的效果。其实通过一系列操作可以学习到挺多docker命令。
安装Docker
首先你的机器上要有docker,如果没有安装的话可以通过下面的命令安装docker。
安装前的准备
这里用的是Oracle免费机来测试,系统为Ubuntu 通过以下命令可以查看OS信息。
root@instance:/home/ubuntu# uname -a
Linux instance 4.15.0-1021-oracle #23-Ubuntu SMP Wed Aug 7 16:35:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
root@instance:/home/ubuntu# cat /proc/version
Linux version 4.15.0-1021-oracle (buildd@lgw01-amd64-030) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #23-Ubuntu SMP Wed Aug 7 16:35:09 UTC 2019
root@instance:/home/ubuntu# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
Docker 要求 Ubuntu 系统的内核版本高于 3.10 通过以下命令查看
root@instance-20190921-1119:/home/ubuntu# uname -r
4.15.0-1021-oracle
这个机器是4.15 可以安装。
安装Docker的命令
然后这里用的是以下的命令安装docker。官方是使用这里的方法,比较麻烦
#先更新下ubuntu软件库
apt-get update
#通过apt-get安装docker
apt-get install docker.io
查看Docker版本
接着查看docker版本,能显示就是安装成功
root@instance:/home/ubuntu# docker version
Client:
Version: 18.09.7
API version: 1.39
Go version: go1.10.1
Git commit: 2d0083d
Built: Fri Aug 16 14:20:06 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.09.7
API version: 1.39 (minimum version 1.12)
Go version: go1.10.1
Git commit: 2d0083d
Built: Wed Aug 14 19:41:23 2019
OS/Arch: linux/amd64
Experimental: false
Docker内安装宝塔
拉取系统镜像
先拉取一个系统镜像。这里选了debian,好用又比较小。
docker pull debian
创建运行容器
接着创建和运行容器
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 debian
上面命令的意思是创建一个docker容易命名为baota(名称大家自定义)让他后台运行,然后将宿主机的20,21,80,443,888,8888这五个端口映射到docker容器中去。 并且将宿主机的/home/www文件夹映射到docker容器的/www上去(注意:文件目录如果不存在。宿主机和容器会自己创建,无需手动创建)。privileged表示在运行容器的时候,给容器加特权,设置容器有写文件的权限。
查看容器的运行状态和ID
docker ps
进入该容器
docker exec -it d497dcfd6062 /bin/bash(这里也可以直接用 bash)或者下面都行
docker exec -it baota /bin/bash
exec 为在进入容器进行操作
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
这里的
d497dcfd6062
为上面docker ps
得到的容器ID
执行上进入容器命令后会显示下面这样,就是进入了这个Debian容器了
root@e27df07f4a6d:/#
容器内安装宝塔
接着用宝塔官方的安装命令,这里用的是Debian系统下的宝塔安装命令。
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
会让你输入y来确认安装,然后就等着装好。
错误信息
错误信息内容
但是这里我最后出现错误
------------------------------------------------------
Error: BT-Task service startup failed.
username: ed5ymzfg
Stopping Bt-Tasks.../etc/init.d/bt: line 76: ps: command not found
done
Stopping Bt-Panel.../etc/init.d/bt: line 86: ps: command not found
done
/etc/init.d/bt: line 23: ps: command not found
Starting Bt-Panel.. done
/etc/init.d/bt: line 53: ps: command not found
Starting Bt-Tasks... /etc/init.d/bt: line 58: ps: command not found
failed
------------------------------------------------------
--2019-09-30 02:25:28-- http://103.224.251.67/stop.html
Connecting to 103.224.251.67:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3460 (3.4K) [text/html]
Saving to: '/www/server/stop/index.html'
0K ... 100% 484M=0s
2019-09-30 02:25:28 (484 MB/s) - '/www/server/stop/index.html' saved [3460/3460]
--2019-09-30 02:25:29-- http://103.224.251.67/stop.html
Connecting to 103.224.251.67:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3460 (3.4K) [text/html]
Saving to: '/www/server/stop/index.html'
0K ... 100% 568M=0s
2019-09-30 02:25:29 (568 MB/s) - '/www/server/stop/index.html' saved [3460/3460]
------------------------------------------------------
Error: BT-Task service startup failed.
install.sh: line 478: ps: command not found
ERROR: The BT-Panel service startup failed.
============================================
错误原因
我简单看了下,搜索网上解决办法,一个是 https://blog.csdn.net/weixin_42453905/article/details/89399089 和 https://www.daniao.org/3790.html
解决错误
好像是python版本还是python public包和面板冲突的原因,看了下本机python版本为2.7,然后就用下面的命令安装了python3
apt install python3.6
然后解决下public包冲突,接着重启宝塔
pip uninstall public
bt restart
#或者
/etc/init.d/bt restart
但是这里还是提示错误
Stopping Bt-Tasks.../etc/init.d/bt: line 76: ps: command not found
done
Stopping Bt-Panel.../etc/init.d/bt: line 86: ps: command not found
done
/etc/init.d/bt: line 23: ps: command not found
Starting Bt-Panel.. done
/etc/init.d/bt: line 53: ps: command not found
Starting Bt-Tasks... /etc/init.d/bt: line 58: ps: command not found
failed
------------------------------------------------------
--2019-09-30 02:25:28-- http://103.224.251.67/stop.html
Connecting to 103.224.251.67:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3460 (3.4K) [text/html]
Saving to: '/www/server/stop/index.html'
0K ... 100% 484M=0s
2019-09-30 02:25:28 (484 MB/s) - '/www/server/stop/index.html' saved [3460/3460]
--2019-09-30 02:25:29-- http://103.224.251.67/stop.html
Connecting to 103.224.251.67:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3460 (3.4K) [text/html]
Saving to: '/www/server/stop/index.html'
0K ... 100% 568M=0s
2019-09-30 02:25:29 (568 MB/s) - '/www/server/stop/index.html' saved [3460/3460]
------------------------------------------------------
Error: BT-Task service startup failed.
现在没了之前的BT-panel无法启动的错误,但是还有ps命令没找到的错误。所以需要安装下ps。 这里参考了这里 https://www.imooc.com/qadetail/217173
apt-get install procps
正常安装后测试一下ps命令,显示以下内容就是安装成功
root@e27df07f4a6d:/# ps
PID TTY TIME CMD
8 pts/1 00:00:00 bash
5593 pts/1 00:00:03 python
5669 pts/1 00:00:03 python
6483 pts/1 00:00:01 python
6553 pts/1 00:00:01 python
6653 pts/1 00:00:01 python
6737 pts/1 00:00:01 python
6823 pts/1 00:00:01 python
6899 pts/1 00:00:01 python
6971 pts/1 00:00:00 ps
然后再重启下宝塔面板试试看
root@e27df07f4a6d:/# /etc/init.d/bt restart
Stopping Bt-Tasks... done
Stopping Bt-Panel... done
Starting Bt-Panel....... done
Starting Bt-Tasks... done
没有提示错误可以启动。
获取宝塔面板入口
但是这里因为刚才安装没有正常结束,应该最后没有正常显示面板入口 登录用户名密码等信息。
如果你直接进入 https://IP地址:8888 就会显示下面的内容
请使用正确的入口登录面板
错误原因:当前宝塔新安装的已经开启了安全入口登录,新装机器都会随机一个8位字符的安全入口名称,亦可以在面板设置处修改,如您没记录或不记得了,可以使用以下方式解决
解决方法:在SSH终端输入以下一种命令来解决
1.查看面板入口:/etc/init.d/bt default
2.关闭安全入口:rm -f /www/server/panel/data/admin_path.pl
注意:【关闭安全入口】将使您的面板登录地址被直接暴露在互联网上,非常危险,请谨慎操作
根据提示内容,在容器内操作下面的命令来查看面板入口信息。
/etc/init.d/bt default
会显示以下信息,然后用这个地址,用户名密码登陆就可以了
==================================================================
BT-Panel default info!
==================================================================
Bt-Panel-URL: http://IP地址:8888/2bdsdb7ca
username: edsdmzfg
password: 6c750614
Warning:
If you cannot access the panel,
release the following port (8888|888|80|443|20|21) in the security group
==================================================================
设置容器自启
这里我们开头并没有对容器设置了自动启动参数。 如果一开始要设置重启后自动启动容器的话,可以用下面的命令
初次运行时
docker run --restart=always -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 debian
其实就是docker run
的时候加入--restart=always
运行后的容器更新自启设置
如果前面运行的时候没设置自动启动,但是现在想设置的话,可以用下面的命令
docker update --restart=always <CONTAINER ID>
容器ID可以通过docker ps -a
或者 docker container ls
来查看
root@instance:/home/ubuntu# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e27df07f4a6d debian "bash" 2 hours ago Up 2 hours 0.0.0.0:20-21->20-21/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:888->888/tcp, 0.0.0.0:8888->8888/tcp baota
root@instance:/home/ubuntu# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e27df07f4a6d debian "bash" 2 hours ago Up 2 hours 0.0.0.0:20-21->20-21/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:888->888/tcp, 0.0.0.0:8888->8888/tcp baota
退出容器等操作
退出并停止容器
最后如果要退出容器可以使用
Ctrl+D
或者exit
root@e27df07f4a6d:/# exit
exit
但是这样退出后会停止容器。
退出但是不停止容器
想要退出但是不停止容器就要用
Ctrl+P+Q
这样的话容器还在继续运行中。
停止容器
想要停止运行中的容器就用
docker stop 容器名或者容器ID
运行就用
docker start 容器名或者容器ID
进入容器
如果要进入正在运行的容器就用
docker attach 容器名或者容器ID
或者
docker exec -it 容器名或者容器ID /bin/bash
例如
root@instance:/home/ubuntu# docker exec -it e27 /bin/bash
root@instance:/home/ubuntu# docker attach baota
注:docker的容器ID可以用只取前几位能定位到容器就可以。