如何优雅地部署docker容器

引言:上篇文章介绍了docker在不同平台的安装方式,这篇文章来介绍一下,如何在docker中启动容器。并且!本次的目标不光要部署好!而且还要优雅!

Linux平台和Windows平台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)

[4] Overview of Docker Compose | Docker Documentation

-> 加入科技玩家交流群组:点击加入 <-
注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @墨羽 发布。如若转载,请注明出处: 科技玩家 » 如何优雅地部署docker容器

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿精选文章

基于虚拟机挂机项目

2021-9-11 21:28:00

教程玩家投稿精选文章

比较傻妞简单亿点点的xdd-plus部署教程

2021-9-11 22:46:50

83 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. 傻子七

    前来学习 谢谢

  2. 海14356

    谢谢分享

  3. YANMING

    前来学习 谢谢

  4. JonyTaoerگق

    谢谢分享

  5. 萝卜头

    谢谢分享,学习了

  6. qinglong

    点赞。

  7. 羽博

    评论升级

  8. 听书人

    感谢大佬的分享,学习了

  9.  未

    爱快的 好像不好搞啊

  10. 萝卜头

    谢谢,分享学习了

  11. Jeanna

    谢谢分享

  12. 南笙

    感谢分享

  13. dreamer

    前来学习 谢谢

  14. Gaoswatou

    docker真不错

  15. 旋律

    学习一下

  16. 这把看我表演

    谢谢分享,学习了

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索