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

本文由 @墨羽 发布。如若转载,请注明出处: 科技玩家 » 如何优雅地部署docker容器
教程玩家投稿

基于虚拟机挂机项目(每天收入有1块多)

2021-9-11 21:28:00

教程玩家投稿

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

2021-9-11 22:46:50

26 条回复 A文章作者 M管理员
  1. Rishon

    感谢大佬

  2. roundrun

    一入docker深似海

  3. LAzySneep

    之前我也有一个类似的想法,发一个涉及的docker的一些使用的。

    但是在TG呆了差不多3周,发现有些人是不会去看站长发的教程的,我也就放下这个计划了。 相信自己会想用的,都是自己去搜自己需要的, 最后再去求助。

    最后,也挺赞赏楼主发的内容。

    内容条理清晰。 我也属于工科类,和我写在印象笔记内的版式很像,哈哈。

    注:我不是站长小姐姐,站长小姐姐还是不错的。 爬山都不忘给我们找羊毛。 😂

    • LAzySneep

      在评论中 能帮上的,我就去帮一下。 毕竟,有些也超出了我的知识范围。

    • 墨羽

      哈哈,看出来了,高仿嘛~您之前说有没有Markdown格式导入的时候,我就在想您是不是写过blog~原来是笔记~我只是看站内好像这方面讲的少,怕一些新来的盆友没有需求强行创造需求去搞群晖。或者错过了咱这宝藏小站~
      毕竟在这里学到不少,我也想力所能及得给大家提供帮助~
      更重要的一点是,摸鱼使我快乐^_^

  4. myb

    后面用到了再来折腾

  5. gameboy

    清晰明了,赞。

  6. 我是小可爱

    追更了,赶紧收藏😁

  7. 悲喜

    庆幸啊

  8. YOYO

    优不优雅我不知道,反正就是一脸懵逼的成功了

  9. manxi

    谢谢分享

  10. sting

    学会这个,可以举一反三。楼主辛苦了

    • 墨羽

      感谢支持~

  11. 十一

    赶紧学习,缩小差距!

    • 墨羽

      不敢不敢,言重了~

  12. bingo

    好东西,收藏了😁

  13. 哒哒哒哒

    看看

  14. 大大的强

    收藏备用

  15. 十几天昏

    写的很不错,小白还是喜欢命令行,真简单粗暴!

    • 墨羽

      按照自己习惯来就好~感谢支持!

  16. LAzySheep

    这位哥哥你好棒啊,条理清晰,排版和参考文献都好专业,向你学习👀。🈶️科研人员参与分享,小姐姐我太太太荣幸了!🥰

    • 墨羽

      没啦,还是学生。摸鱼使我快乐~小姐姐也教会了我很多呢~

个人中心
今日签到
有新私信 私信列表
搜索