如何优雅地部署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,有兴趣可以自己研究一下。

如何优雅地部署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容器

需要对容器进行重新部署时,只需要将该文件夹移动要合适的平台、位置。

进入该文件夹重新运行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.net)

[2] Docker - Documentation (portainer.io)

[3] windows10子系统Ubuntu20.04搭建青龙配置bot和傻妞 - 科技玩家 (kejiwanjia.net)

[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

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

    辛苦大佬分享了,我先学习一下

  2. 84896150

    感谢感谢

  3. 幻念

    mark一下。

  4. 七年

    感谢分享,让我好好学习一下

  5. 幻念

    真棒,感谢分享!

  6. 烟花易冷

    芝麻开门

  7. slimei

    mark一下。

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