Docker 安装与使用

VMware 安装 CentOS 7.6

1. 安装 Docker

Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

本文介绍 Docker CE 的安装使用。

卸载旧版本。较旧版本的Docker被称为docker或docker-engine。如果已安装这些,请卸载它们以及相关的依赖项。

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

使用以下命令设置稳定存储库。这里使用阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

使用存储库安装。在新主机上首次安装Docker Engine - Community之前,需要设置Docker存储库。之后,可以从存储库安装和更新Docker。

设置存储库,安装所需的包。yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。

sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2

更新 yum 缓存:

sudo yum makecache fast

安装 Docker-ce:

sudo yum -y install docker-ce

启动 Docker CE

sudo systemctl enable docker
sudo systemctl start docker

测试运行 hello-world

docker run hello-world

测试运行 hello-world
设置镜像加速,在 /etc/docker/daemon.json 中写入如下内容,如果文件不存在请新建该文件。

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "http://hub-mirror.c.163.com"
  ]
}

重新启动服务。

sudo systemctl daemon-reload
sudo systemctl restart docker

2. 安装 Registry

registry是镜像仓库,用于存储和分发Docker镜像

docker run -d \
  --name registry \
  -p 5000:5000 \
  --restart=always \
  -v /mnt/docker/registry:/var/lib/registry \
  registry:2

--restart=always,随docker一起自动启动或关闭
-v /mnt/docker/registry:/var/lib/registry,自定义存储位置,将registry容器内/var/lib/registry文件夹挂载到/mnt/docker/registry下。

registry 使用
将拉取下来的mysql镜像上传到本地registry

拉取mysql镜像

docker pull mysql:5.7.27

拉取mysql镜像
标记镜像,将mysql:5.7.27标记为localhost:5000/mysql-5.7.27

docker image tag mysql:5.7.27 localhost:5000/mysql-5.7.27

标记镜像
上传镜像到仓库

docker push localhost:5000/mysql-5.7.27

进入到仓库容器中,查看镜像仓库;查看挂载的文件夹,同步了

docker exec -it registry /bin/sh

查看镜像仓库
查看镜像仓库
删除本地缓存mysql:5.7.27和localhost:5000/mysql:5.7.27的镜像,这不会将localhost:5000/mysql:5.7.27从registry中删除,再测试从registry中拉取。

docker image remove mysql:5.7.27
docker image remove localhost:5000/mysql-5.7.27

删除本地缓存镜像
从本地仓库中拉取镜像

docker pull localhost:5000/mysql-5.7.27

本地拉取镜像
要停止仓库,请使用docker container stop与任何其他容器相同的命令。

docker container stop registry

要删除容器,请使用docker container rm。

docker container stop registry && docker container rm -v registry

3. 安装 Portainer

Portainer是一个轻量级管理UI,可轻松管理Docker主机或Swarm集群,可以在任何Docker引擎上运行的单个容器组成,允许您管理Docker堆栈,容器,映像,卷,网络等等!它与独立的Docker引擎和 Docker Swarm兼容。

在独立的linux docker主机/单节点安装

docker run -d \
    --name portainer  \
    -p 8000:8000 -p 9000:9000 \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer

portainer_data 是数据卷volumes,不存在的话docker会自动创建在/var/lib/docker/volumes下

访问 http://ip:9000

4. 安装 MySQL

未自定义挂载
下面命令没有设置自定义挂载,会自动挂载在Docker生成的随机名称下。

docker run -d \
    --name mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    mysql:5.7.27

自动生成数据卷并挂在

自定义挂载
使用自定义 MySQL 配置文件

挂载/etc/mysql/my.cnf时要注意,它是文件,所以需要先在挂载的地方创建该文件,才能挂载,否则会报错

创建文件夹后再创建文件

mkdir -p /mnt/docker/mysql/conf
touch /mnt/docker/mysql/conf/my.cnf
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
docker run -d \
    --name mysql-5.7.27 \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=root \
    -v /mnt/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf  \
    -v mysql_data:/var/lib/mysql \
    mysql:5.7.27

自定义挂载
用户名root,密码root

开启binlog
修改挂载出来的my.cnf文件

[mysqld]
server-id = 1
log-bin = /var/lib/mysql/logs/mysql-bin
binlog_format = row
expire-logs-days = 7
max-binlog-size = 500M

/var/lib/mysql/ 为容器内路径,上面挂载到了mysql_data中,在Portainer中找到mysql_data的具体路径,创建logs文件夹,并在logs文件夹下创建mysql-bin.index文件。

时间不一致
Linux时间正确,时区没问题,但是MySQL的时间少了八个小时。
在my.cnf的[mysqld]添加。如果表中有存时间戳类型的字段,时间也会相应的改变,所以提前保证MySQL时间正确!

default-time-zone = '+08:00'

5 安装记录

5.1 安装 Zookeeper,Kafka

Kafka配置zookeeper地址和内外网监听地址

docker run -d \
    --name zookeeper \
    -p 2181:2181 -t \
    wurstmeister/zookeeper

docker run -d --name kafka \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.110.40:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.110.40:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    wurstmeister/kafka 

5.2 安装 PostgreSQL

docker run -d \
    --name postgres-9.6 \
    -p 5432:5432 \
    -e POSTGRES_USER=postgres \
    -e POSTGRES_PASSWORD=postgres \
    -e POSTGRES_DB=postgres \
    postgres:9.6

5.3 安装 FTP

mkdir -p /usr/local/downloads/ftp

docker run -d \
	--name vsftpd \
	-p 20:20 \
	-p 21:21 \
	-p 21100-21110:21100-21110 \
	-e FTP_USER=admin \
	-e FTP_PASS=admin \
	-e PASV_ADDRESS=192.168.110.40 \
	-e PASV_MIN_PORT=21100 \
	-e PASV_MAX_PORT=21110 \
	-v /usr/local/downloads/ftp:/home/vsftpd \
	--restart=always \
	fauria/vsftpd

挂载/home/vsftpd到/usr/local/downloads/ftp
安装完后默认会在/usr/local/downloads/ftp创建指定用户的文件夹,上传下载文件都在admin文件夹下

5.4 安装 Redis

使用自定义 Redis 配置文件,官网下载 redis.conf并修改

# 不限制ip访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 设置密码
requirepass redis
# 开启aof
appendonly yes
docker run \
-p 6379:6379 \
--name redis \
-v /mnt/docker/redis/redis.conf:/etc/redis/redis.conf \
-v redis_data:/data \
-d redis redis-server /etc/redis/redis.conf

5.5 安装 Prometheus

创建prometheus.yml文件

# 全局配置,单独配置会覆盖
global:
  # 多久收集一次数据
  scrape_interval: 15s
  # 每次收集数据的超时时间
  scrape_timeout: 10s
  # 多久评估一次规则
  evaluation_interval: 15s
alerting:
  alertmanagers:
  - static_configs:
    - targets: []
    scheme: http
    timeout: 10s
api_version: v1
# 收集数据配置
scrape_configs:
- job_name: prometheus
  honor_timestamps: true
  scrape_interval: 15s
  scrape_timeout: 10s
  metrics_path: /metrics
  scheme: http
  static_configs:
  - targets:
    - localhost:9090

docker安装

docker run -d \
--name prometheus \
-p 9090:9090 \
-v /usr/local/softwares/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:latest

访问 ip:9090/metrics ,这是Prometheus产生的数据,可在 ip:9090 中查看
访问 ip:9090/metrics
访问 ip:9090

5.6 安装 Grafana

创建grafana文件夹,设置权限

mkdir grafana
chmod 777 grafana

Docker 安装

docker run -d \
--name=grafana \
-p 3000:3000 \
-v /usr/local/softwares/grafana:/var/lib/grafana \
grafana/grafana:latest

访问 ip:3000 账号密码admin,admin

添加Data Sources
添加Data Sources
可在官方和社区构建的仪表板中查找已配置好的Dashboard
官方和社区构建的仪表板
再导入
再导入DashBoard

5.7 安装 ElasticSearch

docker run -d \
    --name elasticsearch \
    -p 9200:9200 \
    -p 9300:9300 \
    -e "discovery.type=single-node" \
    elasticsearch:7.13.2

5.8 安装 Kibana

docker run -d \
    --name kibana \
    -p 5601:5601 \
    --link elasticsearch:elasticsearch \
    kibana:7.13.2

5.9 安装 Zipkin

docker run -d \
    --name zipkin \
    -p 9411:9411 \
    openzipkin/zipkin

5.10 安装RabbitMQ

docker run -d \
    --name rabbitmq \
    -p 15672:15672 \
    -p 5672:5672 \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=admin \
    rabbitmq:management

6. 错误总结

1.docker: Error response from daemon: driver failed programming external connectivity on endpoint
解决方法:
docker服务启动时定义的自定义链DOCKER由于某种原因被清掉,重启docker服务及可重新生成自定义链DOCKER

systemctl restart docker

2.Centos7 终端报Message from syslogd :kernel:unregister_netdevice
关闭syslog

service rsyslog stop

关闭rsylog服务之后,终端打字就不会受到影响了,如果还要看日志信息,可以使用journalctl -f来进行查看。

7. 使用记录

将文件从计算节点复制到容器

docker cp FILE_PATH 容器ID:FILE_PATH

将文件从容器复制到计算节点

docker cp 容器ID:FILE_PATH FILE_PATH

参考:
Docker — 从入门到实践
Get Docker Engine - Community for CentOS
docker registry文档
hub.docker.com
portainer.io
Docker 命令大全
Docker常用命令
使用docker安装mysql,挂载外部配置和数据
docker 安装kafka
docker hub fauria / vsftpd
docker安装redis并以配置文件方式启动
Centos7 终端报Message from syslogd :kernel:unregister_netdevice
linux和mysql时间不同步解决

Prometheus 官方文档-配置详情
开源监控系统Prometheus配置说明
基于docker 搭建Prometheus+Grafana
【监控】Prometheus+Grafana监控简介
Grafana 官方和社区构建的仪表板

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值