docker-compose编排

8.29 docker-compose编排

由于要使用python环境运行docker-compose,所以需要验证python

python --version

1、pip工具

是python的包管理工具,与yum和redhat的关系是一样的

pip

[root@dd ~]# yum -y install python2-pip

升级版本,没有指定源无法升级

[root@dd ~]# pip install --upgrade pip

临时使用,指定版本号,升级pip

[root@dd ~]# pip install --upgrade pip==20.3 -i Simple Index

查看pip版本号,升级到20.3

[root@dd ~]# pip list

安装docker-compose,忽略requests

[root@dd ~]# pip install docker-compose --ignore-installed requests -i Simple Index

查看docker-compose 版本(1.18版本以上即可),安装docker

pip list

拖包

harbor-offline-installer-v2.11.1.tgz

查看docker版本

[root@dd ~]# docker --versionDocker version 26.1.4, build 5650f9b

解压软件包

[root@dd ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz harbor/harbor.v2.11.1.tar.gzharbor/prepareharbor/LICENSEharbor/install.shharbor/common.shharbor/harbor.yml.tmpl[root@dd ~]# lsanaconda-ks.cfg harbordocker.sh harbor-offline-installer-v2.11.1.tgz

复制一份配置文件 ,修改

[root@dd harbor]# cp harbor.yml.tmpl harbor.yml[root@dd harbor]# lscommon.sh harbor.yml install.sh prepareharbor.v2.11.1.tar.gz harbor.yml.tmpl LICENSE

harbor的配置文件是harbor.yml,但是解压后的目录中只有harbor.yml.tmpl,复制后改名

[root@dd harbor]# vim harbor.yml

....

域名修改 hostname: 192.168.1.21

......

http注释 13行左右

....

密码 47行

...

修改配置文件,启动docker服务

[root@dd harbor]# vim /etc/docker/daemon.json // 把端口号5000删掉,IP改成本机的[root@dd harbor]# vim /usr/lib/systemd/system/docker.service //13行删掉一部分[root@dd harbor]# systemctl daemon-reload [root@dd harbor]# systemctl start docker.service

检查环境,下载镜像

[root@dd harbor]# ./prepare

查询端口号没有被占用

[root@dd harbor]# netstat -lnput |grep 80[root@dd harbor]# netstat -lnput |grep 5000

执行install.sh文件

[root@dd harbor]# ./install.sh

拉取镜像

[root@dd harbor]# docker pull centos

查看docker健康状态

[root@dd harbor]# docker ps -a

打标签,登录

[root@dd harbor]# docker tag centos:latest 192.168.1.21/library/lala:v0[root@dd harbor]# docker login http://192.168.1.21Username: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

上传镜像

[root@dd harbor]# docker push 192.168.1.21/library/lala:v0The push refers to repository [192.168.1.21/library/lala]74ddd0ec08fa: Pushed v0: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529

浏览器访问登录,查看项目

用户名:admin 密码:Harbor12345

正常推送即可

docker-compose编排_第1张图片

另一台机器,拉取镜像

[root@docker ~]# docker pull 192.168.1.21/library/lala:v0v0: Pulling from library/lalaDigest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dcStatus: Downloaded newer image for 192.168.1.21/library/lala:v0192.168.1.21/library/lala:v0[root@docker ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos nginx 1090369f02c7 47 hours ago 422MBcentos hppt0 f0a07f39abb1 2 days ago 338MB192.168.1.20:5000/centos hppt1 4e0fbeeb42a2 2 days ago 272MBcentos hppt1 4e0fbeeb42a2 2 days ago 272MBregistry latest cfb4d9904335 11 months ago 25.4MB192.168.1.21/library/lala v0 5d0da3dc9764 2 years ago 231MBcentos latest 5d0da3dc9764 2 years ago 231MB

docker-conpose容器编排

YAML注意事项

(1)不⽀持制表符 tab 键缩进,需要使⽤空格缩进。

(2)通常开头缩进 2 个空格。

(3)字符后缩进 1 个空格,如:冒号,逗号,横杠。

(3)⽤ # 表示注释。

(4)如果包含特殊字符⽤单引号引起来。

(5)布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起来,这样分析器会将它们解释为字符串。

列表和数组

在yaml中,可以使用“-”符号表示一个列表和数组

fruits: # fruits是⼀个键,它对应⼀个列表,包含三个元素:apple、banana、orange

  • apple # fruits为⼀个⼤项,下⾯的⼩项只需要缩进⼏个空格,与其他项⽬对⻬即可

  • banana

  • orange

嵌套数据结构

yaml支持嵌套数据结构,可以使用缩进来表示不同层级之间的关系,可以使用#来表示注释信息

person: name: 'Meng Mr' # 两个空格,name和age是person的⼀级⼦节点 age: "34" address: # address是person的⼆级⼦节点 street: '123 Main St' # address节点包含了street、city、state和zip四个⼀级⼦节点 city: 'Anytown' state: 'CA' zip: '12345'

docker compose命令选项

(1)build:重新构建服务

(2)ps:列出容器

(3)up:启动所有docker-compose服务

(4)up -d:启动所有docker-compose服务启动并后台运⾏

(5)exec:进⼊容器实例内部

(6)scale:指定⼀个服务器启动数量

(7)top:显示容器进程

(8)logs:查看容器输出⽇志

(9)down:停⽌并删除容器、⽹络、卷、镜像

(10)stop:停⽌服务

(11)start:启动服务

(12)restart:重启服务

(13)config:检查配置

(14)config -q:检查配置,有问题才有输出

(15)--version:查看版本

docker-compose实例

安装软件

[root@d3 ~]# yum -y install python2-pip

临时使用安装源,指定版本号,安装pip

[root@d3 test]# pip install --upgrade pip==20.3 -i Simple Index

查看pip版本

[root@d3 ~]# pip listpip 20.3

使用阿里云镜像源安装docker-compose,同时忽略已安装的requests库

[root@d3 test]# pip install docker-compose -i Simple Index

[root@d3 ~]# pip install docker-compose --ignore-installed requests  -i https://mirrors.aliyun.com/pypi/simple
 
# 具体解释如下:
 
# pip install:这是 Python 的包管理工具pip的安装命令。
 
# docker-compose:要安装的软件包名称。
 
# --ignore-installed requests:表示忽略已安装的requests库,只安装docker-compose。
 
# -i https://mirrors.aliyun.com/pypi/simple:指定使用阿里云的镜像源来加速安装过程。

安装docker,通过执行脚本

[root@d3 test]# sh docker.sh

创建目录,该目录是一个工程

[root@d3 test]# mkdir test

[root@d3 test]# cd test/

创建数据卷目录/root/test/html

[root@d3 test]# mkdir html

[root@d3 test]# echo "怎么回事" >./html/index.html //准备索引文件

[root@d3 test]# tree //用tree命令查看创建的卷目录

修改配置文件,docker环境搭建完成

[root@d3 test]# scp [email protected]:/etc/docker/daemon.json /etc/docker/

[root@d3 test]# vim /usr/lib/systemd/system/docker.service

... 删除dockerd后面的内容

13行 ExecStart=/usr/bin/dockerd

[root@d3 test]# systemctl daemon-reload

[root@d3 test]# systemctl start docker.service

创建yml文件

[root@d3 test]# vim docker-compose.yml

version: "3" # 指定文件版本services: nginx: # 这是service名 container_name: c1 # 这是容器名 image: "nginx:latest" ports: - "80:80" # 端口映射 volumes: - /root/test/html/:/usr/share/nginx/html/ #挂载[root@d3 test]# lsdocker-compose.yml html

启动compose集群

要在docker-compose.yml文件所在的目录下才能通过docker compose命令启动容器

[root@d3 test]# docker compose up -dWARN[0000] /root/test/docker-compose.yml: version is obsolete [+] Running 8/8 ✔ nginx Pulled 42.6s ✔ e4fff0779e6d Pull complete 10.7s ✔ 2a0cb278fd9f Pull complete 16.9s ✔ 7045d6c32ae2 Pull complete 17.0s ✔ 03de31afb035 Pull complete 17.0s ✔ 0f17be8dcff2 Pull complete 17.0s ✔ 14b7e5e8f394 Pull complete 17.0s ✔ 23fa5a7b99a6 Pull complete 17.2s [+] Running 2/2 ✔ Network test_default Created 0.3s ✔ Container c1 Started 0.6s

浏览器可以访问到编写的内容

查看镜像和验证

[root@d3 test]# docker images //创建了yml文件中的nginx镜像REPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 5ef79149e0ec 2 weeks ago 188MB[root@d3 test]# docker ps --all //创建了yml文件中编写的c1容器CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4a60cefd88bd nginx:latest "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp c1

你可能感兴趣的:(docker,容器,运维)