dockerメモ

勉强能使用资料

 

只要使用boto3,就能从程序中获取信息。

需要Python3

import boto3

ec2 = boto3.client('ec2',
        aws_access_key_id='XXXXXXX',
        aws_secret_access_key='XXXXXXX' ,
        region_name='ap-northeast-1'
)
responce = ec2.describe_instances(
  Filters=[{'Name':'network-interface.addresses.private-ip-address','Values':["172.31.13.240"]}]
)

print(responce)
python test.py
$ cat .bashrc
~~~~~~~~~
alias python="python3"
alias pip="pip3"

如果模板变得太长

使用嵌套功能似乎可以进行分割。

AWSCLI 的初始设置

由於我做得很隨便,所以我決定將其方法整理一下。

云编排模板官方示例

以下是提供给中国用户的一份本地化的参考链接:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/sample-templates-services-us-west-2.html
https://github.com/watatahiki/aws/tree/master/CloudFormation-Templates

手动设置 CloudWatch(CPU 使用率监视)。

 

负载工具压力

https://go-journey.club/archives/6782

sudo yum install stress -y
    CPU1コアに対して3分間負荷を掛けます。
stress --cpu 1 --timeout 3m
top
    • メモリ負荷を掛けたい.3分間負荷

 

    4つのプロセスで,400MB使う
stress --vm 4 --vm-bytes 0.1G --timeout 3m
    • ディスクに負荷を掛けたい.2分間負荷

 

    1プロセスがディスクに対して1GBの書き込みを2分間行なって負荷を掛けます。
 stress --hdd 1 --hdd-bytes 1G --timeout 2m

云监控(云形成)

以下是一种可能的中文表达方式:

请访问以下链接查看:

1. https://engineers.weddingpark.co.jp/aws-cloudformation-cloudwatch-alarm/
2. https://github.com/watatahiki/aws/blob/master/CloudFormation-Templates/CloudWatch/CloudWatch-Alarm/CloudWatch-Alarm.yaml

CloudFormation代码生成工具

由于需要认证,所以没有使用。

让我们尝试创建一个没有使用Docker的CloudFormation版本。

不要再做这个了。如果要做的话,就与Ansible进行联动。

Slack 通知机器人


https://dev.classmethod.jp/articles/aws-chatbot-notification-cloudformation-stack-event/
使用 CloudFormation 的 SNS 主题
CloudFormation 通知角色

以下の設定をした。slackとの接続を全部やってくれる
事前準備:slackで部屋を作って起動していること

    • sns

 

    chabot

目前的策略是将Guardrail应用于arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess。

cloudformationの中に書く通知する設定がわからない
コマンドラインからNotificationARNsを設定してスタック作成する方法はあるみたい

 

サンプル

aws cloudformation deploy \
    --template-file datastore.yml \
    --stack-name DataStoreStack \
    --notification-arns arn:aws:sns:ap-northeast-1:1234567890:cloudformation-use-sns-topic 

要试试吗?

cd  ~/aws-study

aws cloudformation deploy \
    --template-file vpc-03_cloudfomation_ansible.yml \
    --stack-name test01 \
    --notification-arns arn:aws:sns:ap-northeast-1:1234567890:cloudformation-use-sns-topic \
    --capabilities CAPABILITY_NAMED_IAM

# 出力結果
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - test01

1234567890是什么意思?
那个只有12位的账号ID。可以在界面上查看,点击右上角的账号进行查看。

–capabilities CAPABILITY_NAMED_IAM はおそらく、UIでスタック作成するときの最後につけているチェックになると思われる

虽然现在有点晚了,但是和通过UI来执行创建指示相比,这样做非常轻松。
删除操作必须先清除日志,否则会失败,所以需要通过UI进行。

ディメンション Dimensions
https://dev.classmethod.jp/articles/amazon-cloudwatch-keywords/

答案只有一个选项:

Ansible 是一种自动化工具。

https://github.com/moritoki-study/prometheus-playbook
https://github.com/moritoki-study/prometheus-playbook-cloudformation
https://log.noid11.com/posts/how-to-ping-ec2-from-mac-using-ansible/
https://rurukblog.com/post/ansible-playbook-write/
https://qiita.com/ArimaRyunosuke/items/1f9d840311584d8160bc

【Ansible】メンテナンスしやすいPlaybookの書き方


https://qiita.com/makaaso-tech/items/0375081c1600b312e8b0

以下是两个GitHub链接:
1. Amazon EC2通过SSM协会:https://github.com/ot-nemoto/amazon-ec2-by-ssm-association/tree/4304cb468eda72d993fc77cf656dd0797ee5f3a6
2. Ansible Nginx:https://github.com/ot-nemoto/ansible-nginx

这是一个与CloudFormation实际连接的Ansible示例。

 

gitのファイル、ディレクトリかも、多いとcloudformationの制限にひっかかる。なので不要なものは削除する必要がある。
もしくはzipにしておく必要がある。zipはまだ試してない

问题:即使ansible出现错误,如果不查看日志就无法得知。我希望能够收到通知。

    macセットアップ
# 前提:awscliの設定して、接続できる状態
brew install ansible
ansible --version
brew install ansible-lint
mkdir ~/ansible

    • ec2作成、cloudformation

 

    • port解放、cloudformation

 

    実行コマンド
[12:51:16  ~/prometheus-playbook ]$ ansible-playbook -i host_vars/prod.yml site.yml
[13:44:47  ~/prometheus-playbook ]$ ansible-lint site.yml
    prometheus
sudo mkdir /etc/prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
sudo mv ~/prometheus-2.30.3.linux-amd64/* /etc/prometheus


# daemon(常駐プロセス)
$ sudo vi /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus - Monitoring system and time series database
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
Type=simple
ExecStart=/etc/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/etc/prometheus/data

[Install]
WantedBy=multi-user.target

$ sudo systemctl enable prometheus.service

# 最後に、アラートルールと、prometheus.yaml配置


# プロセス起動
 sudo systemctl start prometheus.service
http://<ホスト名>:9090

3.2. Prometheus导出器

3.3. 警报管理者

3.4. Grafana 可视化工具

    1. Go语言

 

    1. 4.3. 设置用于验证的HTTP服务器

 

    1. 设置Prometheus

 

    设置Alertmanager

做过的事情 de

項目

vpc○
ec2○オートスケールやってみたいelb

ecs

lamda

cloudwatch

cloudtrail

s3

rds

iam○
code4兄弟○
elastic beanstalk

opsworks

cloudformation○

我想使用IAM进行公钥设置。

在学习会上,让大家使用自己的账户进行操作吧。
默认情况下,创建IAM用户并不会自动在EC2上创建账户。

创建云形成后的修改方式

似乎有一种方法可以将手动添加的 EC2 实例等更改内容合并到模板中,例如在构建之后。

在VSCode中更新Qiita。

https://qiita.com/inayuky/items/48af9fb0b4280869cc8f 请点击此链接浏览
https://qiita.com/sakano/items/685b6a15dd600ccd34bd 请点击此链接浏览
cmd+q cmd+u cmd+q cmd+u

选项一:

标签问题
https://qiita.com/akumachan/items/ec32d9cdf4a07dc6cc68

土地整治

如果你认为通过Terraform创建的程序可以在AWS上使用任何东西,那就大错特错了。只有通过Terraform为AWS创建的程序才能在其上使用,每个平台都需要使用不同的语言编写程序。

你可以从容器中访问全球IP吗?

做不到。为什么呢???

总结情况

目前正在做的事情

    • aws環境にデプロイするcloudformationのテンプレート。インスタンス作成(1台)、各種カスタマイズ(ホスト名設定、IP設定、ロケール設定、dockerインストール、docker-composeインストール)。監視サーバの設定、起動まで一発でできる

 

    dockerイメージ作成をパイプラインでおこなっている。ECRに登録

必须做的事情 zuò de

    • 監視設定の理解

 

    • slack通知

 

    本ドキュメントの整理

警报的官方通知

 

解释说明警报规则的感觉很好。

https://www.techscore.com/blog/2017/12/07/prometheus-monitoring-setting/ –
https://qiita.com/noexpect/items/5faab079fbf700ae7eb3 –

如果

使用Alertmanager创建报警消息。

title: '{{ if eq .Status "firing" }}[FIRING]{{else}}[RESOLVED]{{end}} {{ .GroupLabels.alertname }}'
上記のメッセージを見やすくすると
title: '{{ if eq .Status "firing" }}  # .Statusはprometheusから送られてくる値
          [FIRING]
        {{else}}
          [RESOLVED]
        {{end}} 
        {{ .GroupLabels.alertname }}'  
        # タイトルには[FIRING]or[RESOLVED]のあとにアラート名がつく

text: '{{ if eq .Status "firing" }}{{ .CommonAnnotations.firing_text }}{{else}}{{ .CommonAnnotations.resolved_text }}{{end}}
上記のメッセージを見やすくすると
text: '{{ if eq .Status "firing" }}
         {{ .CommonAnnotations.firing_text }} # firing_textはpromeheusのアラートルールのannotationsで定義したプロパティ
       {{else}}
         {{ .CommonAnnotations.resolved_text }} # resolved_textはpromeheusのアラートルールのannotationsで定義したプロパティ
       {{end}}
    # 本文にはannotationsで定義したメッセージがセットされる。
       # prometheusからのデータを参照するときは、.CommonAnnotations.プロパティ名だということがわかる

    • {{}}の記法、yamlの中のifはbash?

 

    • yaml内の各項目を調べるマニュアルは?

 

    • httpserverの監視の意味

 

    • アラートは全部自分でyamlに書いて定義するしかないのか?画面から監視設定を入れるようなことはできないのか?

 

    1からアラートルールを作っていると何をつくっていいかわからない、おまかせでまとめて導入するサンプルみたいなものあるのか?

看起来有测试警报规则。

 

当想要查看yaml的结构时

 

我以后想要做的事情

    複数台インスタンス3、4台に機能を分割。複数台、コンテナ起動、ネットワークが別れるので難しくなる。いやグローバルIPがあれば、そんなことしなくてもいい?

 

    • S3 にログを記録

 

    • 各種カスタマイズの部分をansibleで実行する。s3かgithubにplaybookを置くだけで実行できるぽい。cloud-initで実施するのはあまりよくないらしい。処理を分けたい

 

    • awsの監視方法、cloudwatch、ログ監視、http監視

 

    • cloudformationで作成するサーバに自動停止ルールに適応cloudwatch

 

    awsコマンドでスタック作成

技术掌握程度

    • docker

 

    • docker-compose

 

    • dockerイメージ作成、aws codebuild

 

    • prometheus/garafa/alertmanager

 

    cloudformaiton、vscodeで開発

用户界面

在使用新实例时,尝试一次性替换DNS名称。

プロメテウスサーバ

    • prometheusUI

 

    • http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:9090

node-exporter
http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:9100/metrics

grafana
http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:3000
ぱすわーどadmin/admin
alertmanager
http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:9093

blackbox_exporter
http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:9115/
http://ec2-52-198-61-142.ap-northeast-1.compute.amazonaws.com:9115/metrics

测试_httpserver服务器

node-exporter
http://ec2-13-231-244-236.ap-northeast-1.compute.amazonaws.com:9100/metrics

grok_exporter用
http://ec2-13-231-244-236.ap-northeast-1.compute.amazonaws.com:9144/metrics

test_httpserver用
http://ec2-13-231-244-236.ap-northeast-1.compute.amazonaws.com:8080/hello
http://ec2-13-231-244-236.ap-northeast-1.compute.amazonaws.com:8080/world
http://ec2-13-231-244-236.ap-northeast-1.compute.amazonaws.com:8081/metrics

sudo systemctl status prometheus.service
sudo systemctl stop prometheus.service
sudo systemctl start prometheus.service

sudo systemctl status test_httpserver.service
sudo systemctl stop test_httpserver.service
sudo systemctl start test_httpserver.service

sudo systemctl status blackbox_exporter.service
sudo systemctl stop blackbox_exporter.service
sudo systemctl start blackbox_exporter.service

sudo systemctl status grok_exporter.service
sudo systemctl stop grok_exporter.service
sudo systemctl start grok_exporter.service

Slack 网页钩子

 

使ってないと無効になるらしい。このメッセージ出たら再発行してみよう
有効にするボタンとかないだろうか
alertmanager | level=error ts=2022-02-13T07:05:53.806Z caller=dispatch.go:354 component=dispatcher msg=”Notify for alerts failed” num_alerts=1 err=”slack/slack[0]: notify retry canceled due to unrecoverable error after 1 attempts: channel \”#notice\”: unexpected status code 403: invalid_token” a

追記、こっちをためしている
https://dev.classmethod.jp/articles/slack-incoming-webhook-by-slack-app/

この画面かもしれない、無効化どうかを確認
slackの画面で、設定と管理、APPの管理、画面右上のビルドをクリック、表示された画面のしたの方にexpireの文字あり
app名はalertmanager

使用ssh

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ec2-user@ec2-13-112-250-110.ap-northeast-1.compute.amazonaws.com

获取parametaer的例子

 

参数:
命令:
– !子 |

据说cloud-init已经过时了。(它是操作系统的初始设置功能)

 

可能不错

 

构图(通过设计师输出)

image.png

使用的地区

华东区-1
我一直以为这是在某个外国,但事实上这是东京。

 

需要導入資料嗎? (Do you need to import data?)

 

可用区域

 

也许有四个选择。使用两个区域时,只需要使用1a和1c即可。

    • ap-northeast-1a

 

    • ap-northeast-1b 1aと1bは同じっぽい

 

    • ap-northeast-1c

 

    ap-northeast-1d
AvailabilityZone: "ap-northeast-1a"
AvailabilityZone: "ap-northeast-1c"

内置函数

 

W3010 不要对 AvailabilityZones 固定为 ap-northeast-1a 进行硬编码 対策。

 

元数据

 

顺便提一下,你什么时候设定了sudo密码?

似乎没有默认选项。

设置主机名

 

用户数据执行日志

进入服务器

sudo cat /var/log/cloud-init-output.log
sudo less -N /var/log/cloud-init-output.log

 

启动模板

 

单个可用区(Single AZ)和多个可用区(Multi AZ)之间有什么区别?

 

看起来很不错的样本 de

 

    • マルチでやってみよう。webサーバを2つにするだけ

 

    最初はシングル

模板的本地检查

[14:22:15  ~/aws-study ]$  aws cloudformation validate-template --template-body file://test.yaml

An error occurred (ValidationError) when calling the ValidateTemplate operation: Template format error: YAML not well-formed. (line 2, column 25)

VSCode是一款强大的代码编辑器。

以下是两篇关于技术问题的中文摘要链接,提供两篇文章的原文和翻译。

1. 链接:https://qiita.com/Kouichi_Itagaki/items/31d640d708925c0ae838

这篇文章探讨了使用Python构建自动化交易系统的步骤和技巧。作者分享了自己的实践经验,重点介绍了如何利用Python编写交易策略、获取股票市场数据和执行交易等。该文章对于希望进一步了解自动化交易的人来说是非常有用的。

2. 链接:https://qiita.com/kojiro_ueda/items/15cd7cc2535fac61fcdd

这篇文章详细介绍了Web开发中的AJAX技术。作者解释了什么是AJAX以及如何使用它来实现动态网页和更好的用户体验。通过示例代码和说明,读者可以学习AJAX的基本用法和常见应用场景。对于对Web开发感兴趣的人来说,这篇文章是非常值得一读的。

这个工具看起来很方便。

 

用于制作aws图的工具。

 

云形成

https://qiita.com/tyoshitake/items/c5176c0ef4de8d7cf5d8
https://dev.classmethod.jp/articles/cloudformation-beginner01/
https://go-journey.club/archives/15974

请把这些链接分别翻译成中文:
https://qiita.com/tyoshitake/items/c5176c0ef4de8d7cf5d8
https://dev.classmethod.jp/articles/cloudformation-beginner01/
https://go-journey.club/archives/15974

设计师 (Designers)

最好不要使用。

亚马逊云工具包

最后没有使用

nginx测试

 

IP置換

sudo vim /data/docker/containers/prometheus/etc/prometheus/prometheus.yml
%s/172.31.13.240/3.112.52.64/g
%s/3.112.52.64/172.31.13.240/g
docker-compose up

可以将图像制作自动化吗?

在建立存储库时,应选择公共选项。如果选择私有选项,在使用时需要进行身份验证。

 

    AmazonElasticContainerRegistryPublicFullAccess

公式操作流程

 

## 图像制作流程
https://github.com/moritoki-study/test_httpserver_image

docker pull public.ecr.aws/l8s6z2n6/test_httpserver:latest

从代码部署到能够成功部署,不知道可以实现吗?

这篇文章感觉是在讨论后一个链接的内容。因为是关于Docker的,所以感觉不太可能与前一个链接的内容有关。现在在cloudinit的最后处理中,用tar xvf来解压数据。

建立环境

cd ~/
git clone https://github.com/moritoki-study/prometheus_setup.git
cd ~/prometheus_setup;sudo chown -R root:root data;sudo tar cvfz data.tar.gz data;sudo tar xfvz data.tar.gz -C /

# ルート直下に展開、。/data/....
# sudo tar xfvz data.tar.gz -C /

易于阅读

 

用户界面的使用方法

Prometheus を使ってみた


在Prometheus中,获取监控数据被称为”scrape”。
即使进行配置,但在重新创建堆栈后它会消失。

Docker-compose -> Docker容器编排

    • 実施したことがないので試してみる

 

    • 勉強用資料では、yum等をつかってpromethusをセットアップしている。

 

    以下の資料をもとにprometheusをdockerで動かしてみることにする。

以下是需要用中文进行的单一选项的释义:

http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-bea05a.html
http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-48c0e6.html
http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-e6a62e.html
http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-d18395.html

请参考以下:

http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-bea05a.html

http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-48c0e6.html

http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-e6a62e.html

http://sheepdogjam.cocolog-nifty.com/blog/2021/08/post-d18395.html

有像Prometheus这样的Docker镜像可用。

普罗米修斯社?因为他们制造的,所以可以放心。

prom/prometheus
https://hub.docker.com/search?q=prom%2Fprometheus&type=image
監視サーバ

prom/node-exporter (snode)
https://hub.docker.com/search?q=prom%2Fnode-exporter&type=image
リソース監視

prom/blackbox (snode)
https://hub.docker.com/search?q=prom%2Fblackbox&type=image
http/https/TCPなどの死活監視を実現できます。基本的には監視サーバ(prometheusがインストールされているサーバ)にインストールして利用します。

grok_exporter (snode)
公式イメージはないっぽい
https://hub.docker.com/search?q=grok_exporte&type=image
https://hub.docker.com/r/dalongrong/grok-exporter
ログ監視

grafana/grafana
https://hub.docker.com/search?q=grafana%2Fgrafana&type=image
メトリックスを可視化するツール

prom/alertmanager
https://hub.docker.com/search?q=prom%2Falertmanager&type=image
監視サーバと連携して、アラートをユーザに通知するツール

httpテストサーバ
自作した
https://github.com/moritoki-study/test_httpserver_image

当普罗米修斯处于正常状态时的日志

prometheus    | level=info ts=2022-01-31T11:13:59.238Z caller=main.go:796 msg="Server is ready to receive web requests."

确认联络

# ec2
nc -vz localhost 9090
# local
nc -vz ec2-18-183-247-78.ap-northeast-1.compute.amazonaws.com 8000

命令工具 jù)

# yaml作成
vi docker-compose.yml

# 起動
docker-compose up
# バックグラウンドで起動
docker-compose up -d

# 停止
docker-compose down

进入已启动的容器。

# sudo docker exec -it コンテナ名 /bin/sh
sudo docker exec -it prometheus /bin/sh
sudo docker exec -it node-exporter /bin/sh
sudo docker exec -it blackbox_exporter /bin/sh
sudo docker exec -it grok_exporter /bin/sh
sudo docker exec -it grafana /bin/sh
sudo docker exec -it alertmanager /bin/sh
sudo docker exec -it test_httpserver /bin/sh

tail -f /var/log/httpd/test_httpserver.log 

# sudo docker exec -it コンテナ名 ps -ef
sudo docker exec -it prometheus ps -ef

設置檔案目錄

# prometheus
sudo mkdir -p /data/docker/containers/prometheus/etc/prometheus/alerting_rules
sudo mkdir -p /data/docker/containers/prometheus/data

# node-exporter
いらない?

# blackbox_exporter
sudo mkdir -p /data/docker/containers/blackbox_exporter/data

# grok_exporter
sudo mkdir -p /data/docker/containers/grok_exporter/data

# grafana
sudo mkdir -p /data/docker/containers/grafana/data

# alertmanager
sudo mkdir -p /data/docker/containers/alertmanager/etc/alertmanager

配置文件

我們在初期搭建時,從Git獲取數據並進行設置。

# promethus
sudo vim /data/docker/containers/prometheus/etc/prometheus/prometheus.yml 
sudo vim /data/docker/containers/prometheus/etc/prometheus/node.yaml # 今回つくらない
sudo vim /data/docker/containers/prometheus/etc/prometheus/alerting_rules/alert_sample.yml

sudo vim /data/docker/containers/prometheus/etc/prometheus/alerting_rules/blackbox.yml
sudo vim /data/docker/containers/prometheus/etc/prometheus/alerting_rules/node_monitoring.yml
sudo vim /data/docker/containers/prometheus/etc/prometheus/alerting_rules/test_httpserver_log.yml
sudo vim /data/docker/containers/prometheus/etc/prometheus/alerting_rules/test_httpserver_request.yml


# alertmanager
sudo vim /data/docker/containers/alertmanager/etc/alertmanager/config.yml 

# Blackbox Exporter
sudo vim /data/docker/containers/blackbox_exporter/config.yml 

# grok_exporter
sudo vim /data/docker/containers/grok_exporter/config.yml 
sudo vim /data/docker/containers/grok_exporter/examples.log

# grafana
sudo vim /data/docker/containers/grafana/grafana.env 

请用中文翻译以下语句,只需要提供一个选项:

测试_httpserver.go备忘录

[ec2-user@ip-172-31-13-240 ~]$ wget https://raw.githubusercontent.com/kichiram/golang/main/testgo/test_httpserver.go
2022-02-05 02:04:23 (57.4 MB/s) - `test_httpserver.go' へ保存完了 [1328/1328]

[ec2-user@ip-172-31-13-240 ~]$ ls
bk  docker  docker-compose.yml  test_httpserver.go
[ec2-user@ip-172-31-13-240 ~]$ go get github.com/prometheus/client_golang/prometheus
[ec2-user@ip-172-31-13-240 ~]$ ls
bk  docker  docker-compose.yml  go  test_httpserver.go
[ec2-user@ip-172-31-13-240 ~]$ go build test_httpserver.go
[ec2-user@ip-172-31-13-240 ~]$ ls
bk  docker  docker-compose.yml  go  test_httpserver  test_httpserver.go
[ec2-user@ip-172-31-13-240 ~]$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal),992(docker)
[ec2-user@ip-172-31-13-240 ~]$ pwd
/home/ec2-user
[ec2-user@ip-172-31-13-240 ~]$ ls -l
合計 11860
drwxrwxr-x 3 ec2-user ec2-user       38  2月  2 11:19 bk
drwxrwxr-x 3 ec2-user ec2-user       98  2月  5 01:56 docker
-rw-rw-r-- 1 ec2-user ec2-user     2728  2月  2 11:09 docker-compose.yml
drwxrwxr-x 4 ec2-user ec2-user       28  2月  5 02:04 go
-rwxrwxr-x 1 ec2-user ec2-user 12132496  2月  5 02:05 test_httpserver # これでwebサーバ起動
-rw-rw-r-- 1 ec2-user ec2-user     1328  2月  5 02:04 test_httpserver.go

从这里开始使用Docker。

在EC2上安装Docker/Docker Compose。

# docker
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user

# docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version  # これはsudo不要

# docker-composeの2系は導入手順が違うらしいが手順がみつからない 
# https://docs.docker.com/compose/install/#install-compose-on-linux-systems

# 任意
alias d='docker'
alias dc='docker-compose'

创建Dockerfile

mkdir ~/docker
vim ~/docker/Dockerfile
vim ~/docker/index.html

主页.html

hello

试用docker build

 

sudo docker image build -t moritoki/sample:latest .
sudo docker image build -t test_httpserver:latest .

确认图像

sudo docker image ls

进入正在运行的容器。

docker exec -i -t CONTAINER_ID /bin/bash
docker exec -i -t CONTAINER_ID /bin/sh

获取图像并放入容器中。

sudo docker run -it --name test_dock moritoki/sample:latest /bin/bash
sudo docker run -it --name test_grok dalongrong/grok-exporter:latest /bin/bash
sudo docker run -it --name test_httpserver test_httpserver:latest /bin/bash

启动容器和后台启动

只需要一个选项,中文的本地化重述如下:
一旦超过10000,它就似乎无法运行。

### うごかん
sudo docker run -d --name test_dock -p 10080:80 moritoki/sample:latest  # 10080がダメなのか?

### コンテナを動かす(入らない)
sudo docker run -d --name test_dock -p 8000:80 tmoritoki0227/sample:latest 
sudo docker run -d --name test_dock -p 80:80 tmoritoki0227/sample:latest

sudo docker run -d --name test_httpserver -p 8080:8080 -p 8081:8081 test_httpserver:latest

确认通畅

# ec2
nc -vz localhost 8080
# local(Mac)
nc -vz ec2-18-183-171-149.ap-northeast-1.compute.amazonaws.com  8080
nc -vz ec2-13-230-253-219.ap-northeast-1.compute.amazonaws.com  8080

从浏览器中访问以下链接:
http://ec2-18-183-171-149.ap-northeast-1.compute.amazonaws.com:8080/hello
http://ec2-18-183-171-149.ap-northeast-1.compute.amazonaws.com:8080/world
http://ec2-18-183-171-149.ap-northeast-1.compute.amazonaws.com:8081/metrics

上传到 Docker Hub

 

docker login
  Username: 入力汁
  Password:  入力汁

sudo docker image build -t test_httpserver:latest .
docker image ls
docker tag test_httpserver tmoritoki0227/test_httpserver:latest
docker image ls
docker push tmoritoki0227/test_httpserver:latest

tmoritoki0227 必须与DockerHub仓库的名称保持一致
https://hub.docker.com/repository/docker/tmoritoki0227/test_httpserver

确认容器已启动


sudo docker ps
sudo docker ps -a # 停止中のコンテナも表示

进入集装箱

sudo docker attach CONTAINER ID

停止容器

sudo docker container stop

删除容器

sudo docker rm [コンテナID]

刪除圖像

sudo docker images で
sudo docker rmi イメージID

在不使用sudo的情况下执行Docker命令的方法是什么?

听起来似乎不被推荐

## dockerグループがなければ作る
sudo groupadd docker

## 現行ユーザをdockerグループに所属させる
sudo gpasswd -a $USER docker

## dockerデーモンを再起動する (CentOS7の場合)
sudo systemctl restart docker

## exitして再ログインすると反映される。
exit

请查看文件.

 

广告
将在 10 秒后关闭
bannerAds