引言:上篇文章介绍了docker在不同平台的安装方式,这篇文章来介绍一下,如何在docker中启动容器。并且!本次的目标不光要部署好!而且还要优雅!
首先来介绍一下我了解的目前启动docker容器的几种方法。我将其分为两大类:图形化界面操作和命令行操作。图形化界面我所了解到的目前有两种:一是群晖中提供的可视化面板,一是比较有名的portainer面板。(虽然我都不用哈哈哈哈哈哈!)而基于命令行操作可能有些小伙伴会觉得头疼,但是头疼的是最常见的简单粗暴法,另一种是我自己正在用的优雅部署法。具体操作方式且看我一一道来。
1 图形化界面操作
1.1 群晖提供的可视化面板
利用群晖系统提供的docker面板拉取和启动镜像,相信大家都比我熟悉。毕竟我只是个买不起nas的小菜鸡(之前用旧笔记本刷过黑裙,但是没有重点体验过群晖的docker)。这里为了我文章的完整性,就简单的说一下叭。参考的是小姐姐群晖青龙搭建教程的步骤[1]~
首先,拉镜像。在群晖docker中,点击左边的注册表标签,在顶上的搜索框中搜索需要拉取的镜像名。
接着,新建容器。下载完成后,点击左边映像,选择下载好的镜像,启动它。在高级设置中,将卷,端口和环境一一设置好。
最后,验证是否搭建成功。
优点:简单易上手,特别适合新手操作,部署的逻辑也很清楚,操作的时候自己知道自己在干啥。
缺点:很明显,需要一个群晖系统。这就劝退了我,至少3年以内我应该是用不上群晖了,哭唧唧。另外,作为一个文件存储设备,我还是觉得折腾得少些会比较安心。见过有人在群晖系统里折腾虚拟机的,感觉对系统整体的稳定性以及硬件性能的最大化调用是很有挑战的。
1.2 非常有名的一款可视化面板 portainer
这一款面板也是很多人都在使用的docker可视化面板。可惜在我知道它的时候我已经学会了利用docker-compose优雅部署docker容器的方式了。不然我应该爱上的会是它。
面板portainer本身也是一款docker应用,只要在docker中部署启动该容器,我们就可以通过浏览器在网页端可视化得实现其他docker应用的管理和部署。(感觉自己在套娃)
部署方式如下
官网提供的部署方式[2]
docker volume create portainer_data
这一步是创建一个名为portainer_data新卷,容器可以在其中使用和存储数据。利用docker volume create创建的卷,默认地址用docker inspect portainer_data命令可以查到。反正没法自己控制位置,所以并不推荐使用docker volume create命令新建卷。
docker run -d
-p 9000:9000
--name=portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer
docker run表示运行容器,-p设置端口映射(宿主机端口:容器端口),--name设置容器名,--restart设置重启方式,-v表示卷的映射,最后是镜像的作者及名称(默认会去docker hub拉取镜像)。
如果你想自定义卷的位置,可以自己在想要的位置新建一个文件夹,用来做映射。
这样就不需要利用docker volume create创建卷了!
参考步骤
mkdir docker
cd docker
mkdir docker-portainer
cd docker-portainer
mkdir config
cd config
mkdir portainer_data
在用户目录新建docker文件夹,以后所有docker项目都建在这个文件里,美滋滋
进入该文件夹,新建docker-portainer文件夹,该项目的映射文件可以放在这。
然后我在这个文件夹里新建了config/portainer_date作为映射卷。
最后只要把上述启动docker时的-v portainer_data:/data改为-v /home/pi(用户名,我这里是pi,一般是root)/docker/docker-portainer/config/portainer_data:/data即可。
启动成功后,在浏览器输入http://localhost:9000即可看到如下界面

那么恭喜你,面板安装好了。设置访问的用户名和密码。

选择管理本地的docker环境

本地的环境就获取到了,其实它还可以管理服务器上的docker,有兴趣可以自己研究一下。

然后就可以对当前docker中的容器进行管理了。
新建容器的步骤和在群晖中很类似,也是先拉取镜像,接着设置环境,最后运行并检查。

这样,一个可视化的docker管理平台就搭好了。本次安装的是官方原版镜像,是英文的,docker hub中有大佬们制作的汉化版本,有兴趣的朋友可以自行寻找一下。
优点:你有一个可以图形化部署docker的平台了。想不出第二点了,帮帮我...
缺点:部署较为复杂。官方版本是英文。写教程很累。不优雅。
2 命令行操作
2.1 简单粗暴法
所谓简单粗暴法,就是直接通过官方提供的运行代码,一步搞定。以搭建青龙为例[3](这里直接从@扣你鸡娃 老哥的文章里复制来了,谢谢老哥)
docker run -dit
-v $PWD/ql/config:/ql/config
-v $PWD/ql/scripts:/ql/scripts
-v $PWD/ql/repo:/ql/repo
-v $PWD/ql/log:/ql/log
-v $PWD/ql/db:/ql/db
-v $PWD/ql/jbot:/ql/jbot
-v $PWD/ql/raw:/ql/raw
-p 5700:5700
--name qinglong
--hostname qinglong
--restart always
whyour/qinglong:latest
直接输入命令即可搭建成功,简单粗暴。
优点:简单粗暴,简单粗暴,还是简单粗暴。
缺点:学习门槛稍稍微微有点高(其实不)。不方便迁移。每次搭建需要找命令,万一某奇奇怪怪的项目,大佬删库临时找不到命令。需要输入的命令还是多了一些。(我承认,缺点都是强行找的)
2.2 优雅部署法
优雅部署法,这是我一直在用的部署方式,利用docker-compose程序来部署[4]。
安装步骤
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install docker-compose
安装完成后运行docker-compose -v显示版本号,即安装成功。
部署方式
在项目对应的文件夹中,编写docker-compose.yaml文件(直接新建即可)
cd docker/docker-qinglong
sudo nano docker-compose.yaml
复制以下代码填入
version: "3"
services:
qinglong:
image: whyour/qinglong:latest
container_name: qinglong
environment:
- ENABLE_HANGUP=true
- ENABLE_WEB_PANEL=true
volumes:
- ./config/config:/ql/config
- ./config/log:/ql/log
- ./config/db:/ql/db
- ./config/scripts:/ql/scripts
- ./config/jbot:/ql/jbot
ports:
- 5700:5700
restart: always
保存并退出
Ctrl+S
Ctrl+X
输入
docker-compose up -d
大功告成。
其中卷映射的路径部分,“./”表示在docker-compose.yaml所在的当前文件夹下的路径,是一种相对路径的写法,很方便。所有需要映射的文件夹不需要提前新建,运行程序会自己帮忙在对应位置建好。
docker-qinglong文件夹中,就只会有两个文件

需要对容器进行重新部署时,只需要将该文件夹移动要合适的平台、位置。
进入该文件夹重新运行docker-compose up -d即可。
只要保存好docker-compose.yaml文件,随时随地都可以实现一键部署。岂不美哉!
优点:优雅,优雅,还是优雅。方便迁移,搞好配置文件以后,十分方便容器的管理。
缺点:入门门槛又高了两点点。
Tips:常用docker-compose命令
docker-compose up #启动所有服务
docker-compose up -d #在后台所有启动服务
docker-compose stop [options] #停止所选容器
docker-compose down [options] #停止和删除容器、网络、卷、镜像。
其中的[options]可以填写容器名称或者容器编号,容器编号可以通过docker ps -a命令查看。
本次分享就到这里啦,谢谢大家支持~希望与大家共同进步~
本人才疏学浅,哪里说的不对,还请各位大佬多多指正!感谢!
Reference
[1] 群晖docker青龙面板 - 科技玩家 (kejiwanjia.com)
[2] Docker - Documentation (portainer.io)
[3] windows10子系统Ubuntu20.04搭建青龙配置bot和傻妞 - 科技玩家 (kejiwanjia.com)
辛苦大佬分享了,我先学习一下
感谢感谢
mark一下。