0.术语
Rancher:在真实环境中运行容器需要多种技术,这些技术必须在其整个生命周期中进行集成和管理。诸如Kubernetes之类的强大工具需要大量的安装和管理专业知识。 Rancher是一个完整的容器管理平台,可以非常轻松地管理和使用生产中的容器。 (来自官方)
目录:Rancher提供了一个应用程序模板目录,使您可以轻松地部署复杂的堆栈。库目录包含Rancher认证目录的模板,社区目录包含社区目录的模板。 Rancher仅在库中维护对认证模板的支持。 (来自官方)
私人目录:自制目录
堆栈:多个容器的集合
1.目的
我尝试使用Rancher,所以给自己准备了一份备忘录。
自从我开始使用Docker已经两周了,所以我对实际操作并不了解。
在Proxy环境中安装Docker,Docker-compose和Rancher,轻松使用它,并在Rancher中创建一个包含PostgreSQL pgAdmin4的私有目录。
2.环境
主机(物理服务器)
--OS:CentOS Linux 7(核心)
-有一个代理。如果您没有代理,请根据需要跳过代理部分。
-以root身份运行。除root以外,酌情添加sudo。
-防火墙,SElinux已禁用
3. Docker安装
说明物理服务器上的CentOS安装,操作系统更新等已完成。
假定yum.conf中的环境变量和代理设置也是可能的。
Docker正式安装过程:
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository
按照官方程序进行安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 # stableのレポジトリセットアップ $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # testとedgeリポジトリの有効?無効設定は公式ページを見ること。 # 上記コマンドではtestとedgeリポジトリは有効ではない。 $ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 17.09.ce-1.el7.centos docker-ce-stable # versionを正確に指定してもいい $ sudo yum -y install docker-ce $ sudo systemctl start docker # proxy環境だと以下のようなエラーがでてhello-world出来なかった。 # docker pullが出来ないみたい。 $ sudo docker run hello-world Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on <環境のIPアドレス:ポート>: no such host |
按照官方代理的说明进行设置。
https://docs.docker.com/engine/admin/systemd/#runtime-directory-and-storage-driver
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # ディレクトリ作成 $ sudo mkdir -p /etc/systemd/system/docker.service.d # http-proxy.conf と https-proxy.confファイルを作る $ touch /etc/systemd/system/docker.service.d/http{,s}-proxy.conf # めんどいので両方のファイルを同じ内容にして大丈夫。以下のような内容を書き込んで保存する。 $ cat /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=http://<ユーザ名>:<パスワード>@<proxyサーバ>:<ポート>/" "HTTPS_PROXY=http://<ユーザ名>:<パスワード>@<proxyサーバ>:<ポート>/" "NO_PROXY=localhost,127.0.0.1(,他にもあれば追加する)" # デーモン再起動 $ sudo systemctl daemon-reload # docker再起動 $ sudo systemctl restart docker # 2018/07/29追加 docker自動起動設定 $ systemctl enable docker.service # 設定確認 $ systemctl show --property=Environment docker # もしくは、 $ docker info |grep Proxy # あまり覚えてないけどIPv6設定はホストで無効化した気がする。 # この設定が必要かどうかは不明。設定しても私の環境では特に問題は起きてない。 $ sysctl -w net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.all.disable_ipv6 = 1 $ sysctl -w net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6 = 1 $ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 $ cat /proc/sys/net/ipv6/conf/default/disable_ipv6 1 |
4. docker-compose安装
按照官方程序进行安装。
https://docs.docker.com/compose/install/#install-compose
1 2 3 4 5 6 7 | # proxy環境の場合、curlのproxy設定をすること。 $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose # インストール確認 $ docker-compose --version |
如果需要,请设置命令行完成。
官方:https://docs.docker.com/compose/completion/
如果您构建的不是root用户环境,则会发生以下错误。
看来您可以通过下面描述的方法进行操作。 (未确认)
http://docs.docker.jp/compose/install.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $ docker-compose up -d ERROR: Couldn't connect to Docker daemon at http://127.0.0.1:8082 - is it running? If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable. $ sudo docker-compose up -d sudo: docker-compose: コマンドが見つかりません # 以下のようにsecure_pathを変更しておく。 $ sudo visudo ... Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin ... # うまくいった $ sudo docker-compose up -d Creating network "rancher_default" with the default driver Pulling rancher-server (rancher/server:latest)... ... |
5.尝试运行Docker
我创建了一个Dockerfile来启动httpd。
在Dockerfile中将
如果您收到一个错误消息,即无法在Dockerfile中找到该存储库,则似乎可以将yum clean all写出来,但是
Nginx没有工作,哭了,放弃了。 (是因为代理...)
创建
文件时,执行以下命令。 (您可以在docker-compose.yml中编写它)
test100的一部分是任意名称。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | # 適宜好きなディレクトリに変更してください。 $ mkdir -p /root/testweb/html $ cd /root/testweb # 以下のDockerfileを作成。 # /etc/yum.confを./にコピーしておく。 $ cat Dockerfile FROM centos:centos7.4.1708 MAINTAINER TestUser ENV container docker ENV HTTP_PROXY=${HTTP_PROXY} ENV HTTPS_PROXY=${HTTPS_PROXY} ADD yum.conf /etc/ RUN yum update -y && yum clean all RUN yum swap -y fakesystemd systemd && yum clean all RUN yum install -y httpd && yum clean all RUN yum install -y iproute RUN systemctl enable httpd EXPOSE 80 # test100は任意の名称 $ docker build -f Dockerfile -t centos:test100 --no-cache=true . ... # imageの確認 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos test100 6973673f976e 19 seconds ago 578MB ... # docker-compose.ymlでコンテナ起動(docker runでやってもいい) # 適宜、自分の環境にあうように書き換えてください。 # volumesでホストのボリューム/root/testweb/htmlを/var/www/htmlに見せる。 # 権限がおかしくpermission deniedになる場合は、ホスト側でchownしてやること。 # .envファイルでproxyの設定を書いている。ベタでenvironment:でproxy設定を書いても良い。 # ホストのポートを8040に指定。 # docker runの場合はproxy設定を--envで行う。以下に docker runの場合を示す(未確認)。 # docker run -d --privileged --name test -it -p 8040:80 centos:test100 /sbin/init \ # --env HTTP_PROXY=${HTTP_PROXY} --env HTTPS_PROXY=${HTTPS_PROXY} --restart=unless-stopped こんな感じ? $ cat docker-compose.yml version: '3' services: testweb: image: cenots:test100 container_name: test ports: - "8040:80" privileged: true hostname: testweb volumes: - /root/testweb/html:/var/www/html env_file: .env restart: unless-stopped command: /sbin/init # 適宜、自分の環境のproxy情報に書き換えてください。 $ cat .env http_proxy=http://xxxx https_proxy=http://xxxx HTTPS_PROXY=http://xxxx HTTP_PROXY=http://xxxx NO_PROXY="localhost,127.0.0.1" # コンテナ起動 $ docker-compose up -d # ちゃんと起動している。 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a7ccd8147c cenots:test100 "/sbin/init" 17 minutes ago Up 17 minutes 0.0.0.0:8040->80/tcp test # コンテナに入ってみる docker exec -it test /bin/bash # ホストで (./ = /root/testweb/) echo "hello" > ./html/index.html # ブラウザで"ホストIP:8040"を開くとhelloと表示される。 |
6.安装Rancher
由于我能够确认docker-compose的操作,因此将Rancher放入docker-compose。
由于未考虑HA配置,ACL等内容编写,因此请适当查看公式来重写它。
https://rancher.com/docs/rancher/latest/en/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # v1.6を入れる。rancher2.0が使いたい場合は、 imageで rancher/server:v2.0.0-alpha10を指定する(未確認) # https://github.com/rancher/rancher $ mdkir -p /root/rancher/ $ cd /root/rancher/ # 以下のファイルを作成。 # データボリュームをホストに作成して、Rancherを削除してもデータが消えないようにする。 # .evnは先程と同じ $ cat docker-compose.yml version: '3' services: rancher-server: image: rancher/server:latest container_name: rancher-server ports: - "8000:8080" environment: - CATTLE_DB_CATTLE_USERNAME=rancher - CATTLE_DB_CATTLE_PASSWORD=rancher volumes: - /root/rancher/rancher-server/mysql:/var/lib/mysql - /root/rancher/rancher-server/mysql-log:/var/log/mysql - /root/rancher/rancher-server/cattle:/var/log/cattle env_file: .env restart: unless-stopped # 実行 $ docker-compose up -d # ログを監視。立ち上がりを待つ。 $ docker-compose logs -f rancher-server |
从带有\\" Host IP:8000 \\"的浏览器访问。右下角有一个语言设置,因此,如果要使用日语,请进行设置。
在管理员→设置中检查主机注册URL是否正确。
此处的设置比较混乱,因为如果您使用Google,很容易提出其他设置。
输入主机服务器。 5.复制命令并在主机上运行。
您可以在
基础结构→主机中看到已添加主机,如下所示。
7.增加私人目录
根据以下公式创建。省略了对Git和存储库的说明。
创建一个运行PostgreSQL和pgAdmin4的私有目录。
https://rancher.com/docs/rancher/v1.3/en/catalog/private-catalog/
已创建以下目录结构。我将此添加到github存储库中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | $ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g' /root/rancher_catalog/templates/postgres_pgadmin |--0 | |--docker-compose.yml | |--rancher-compose.yml |--catalogIcon-cloudflare.png |--config.yml $ cat config.yml name: postgres_pgadmin description: "available postgreSQL&pgAdmin4" version: v0.1 category: "Web Apps" $ cat docker-compose.yml version: '2' services: postgres: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: changeme PGDATA: /data/postgres volumes: - /data/postgres:/data/postgres ports: - "5434:5432" networks: - postgres restart: unless-stopped pgadmin: links: - postgres:postgres image: fenglc/pgadmin4 volumes: - /data/pgadmin:/root/.pgadmin ports: - "5052:5050" networks: - postgres restart: unless-stopped networks: postgres: driver: bridge $ cat rancher-compose.yml version: '2' catalog: name: "PostgreSQL & pgAdmin4" version: "v1.0" description: "PostgreSQL & pgAdmin4" services: postgres: scale: 1 |
添加目录,添加名称,URL和分支并保存。
添加了自制目录。
关于Docker,Rancher
的说明
-
主机重新启动时启动容器
当使用systemctl enable docker 自动启动docker时,rancher及其管理目标似乎自动启动。重新设定?
但是,对于不由牧场主管理的独立容器,牧场主将不会启动,因此有必要单独设置自动启动。 -
数据持久性
如果您没有将数据保存在主机或容器中以获取具有大容量的数据,则将通过删除容器来删除数据。 -
牧场主更新
出于某种原因,Rancher 2.0无法正常工作。我没有时间,所以我会推迟。
s6-svscanctl:致命:无法控制/服务:主管未收听。这种事情不起作用。
如果数据具有持久性,则可以使用没有问题的剩余信息进行更新,而无需每次都添加主机。
删除ranchersvr不会删除堆栈。 (当然)
在更新时,可以在不进行任何特殊删除的情况下更新代理和其他牧场主的网络容器。 -
群集
只需增加规模即可增加容器数量和规模。
如果有多个主机,则将分配和分配容器。

如果主机死亡,它将在活动主机上的死主机上重建容器。
命令备忘录
- docker-compose build --no-cache#不带缓存的构建
我将来想知道的
- 牧场主CLI
- postgreSQL集群和rancher之间的关系(pgpool-II的构造)
- 牛→k8s
- 牧场主ACL设置
结束于
我想阅读正式文档,因为有很多部分我还不了解。
我正在学习,所以如果你说些奇怪的话,请告诉我。
私有目录无法按原样缩放,因此我们将在以后进行设置。
参考
- IT工程师的现场知识Docker实用指南(Masazumi Koga =作者)
- Docker官方网站
