通俗易懂了解什么是docker?以及docker的各种安装环境!

一、docker是什么?

1.Docker的三个基本概念:

Image(镜像)

Container(容器)

Repository(仓库)

Docker的思想来自于集装箱,集装箱解决了什么问题?

在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱.

还不懂得话,在这么理解,docker你理解为快递车.

那么快递车是不是有一个个包裹,包裹可以理解为一个镜像,镜像可以理解为一个Java类,而容器可以理解为Java类的实例。

类只有一个,但可以new出千千万万个实例对象。所以,镜像只是一个可以生成容器的东西,而容器才能让程序运行起来。

仓库的话,比如说,都应该用过git吧,完全可以理解为git,上传拉取操作

那么docker有什么好处呢?

最简单的一个例子,比如说,你在刚开始的一台服务器部署项目,那么部署项目一定要配置mysql等环境是吧

那么现在你要吧这个项目迁移到另一台服务器上,又要重写在另一台服务器上重写配置mysql等环境.可能会出现版本错乱等错误,很麻烦

那么现在第一次部署项目的时候,把项目等环境直接放进docker里面,下次你要迁移项目到另一台服务器上,自己把docker镜像上传到docker仓库上,然后再另一台服务器拉取就直接O了,这只是好处之一

二、Linux安装docker

安装docker

卸载旧版本

sudo yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

安装docker需要依赖的包

sudo yum install -y yum-utils

告诉Linux,Docker安装地址

sudo yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker引擎,客户端,容器

sudo yum install docker-ce docker-ce-cli containerd.io

启动

sudo systemctl start docker

设置开机自启

systemctl enable docker

配置阿里云镜像加速(CnetOS)

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

执行命令重启

创建文件夹

sudo mkdir -p /etc/docker

配置镜像加速器地址

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://这里需要登陆阿里云.com"]

}

EOF

重启docker的后台线程

sudo systemctl daemon-reload

重启docker的服务

sudo systemctl restart docker


docker安装mysq

安装镜像

docker pull mysql:5.7

查看docker中镜像

docker images

创建实例并启动

docker run -p 3306:3306 --name mysql \

-v /mydata/mysql/log:/var/log/mysql \

-v /mydata/mysql/data:/var/lib/mysql \

-v /mydata/mysql/conf:/etc/mysql \

-e MYSQL_ROOT_PASSWORD=root \

-d mysql:5.7

创建mysql配置文件

vi /mydata/mysql/conf/my.cnf

写入配置信息

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve


重启mysql容器

docker restart mysql


进入mysql容器内部,并查看文件目录

docker exec -it mysql /bin/bash

docker安装redis

下载最新镜像

docker pull redis

创建目录结构

mkdir -p /mydata/redis/conf

创建配置文件

touch /mydata/redis/conf/redis.conf

安装redis(并挂载配置文件)

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \

-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \

-d redis redis-server /etc/redis/redis.conf


连接到docker的redis

docker exec -it redis redis-cli

测试redis(exit:退出)

127.0.0.1:6379> set a b

OK

127.0.0.1:6379> get a

"b"

127.0.0.1:6379> exit

docker restart redis

修改redis配置文件(设置持久化)

appendonly yes

设置容器在docker启动的时候启动

docker update mysql --restart=always

docker update redis --restart=always

docker安装nginx

首先要cd到mydata文件夹下面,创建文件夹

mkdir nginx

下载并启动

docker run -p 80:80 --name nginx -d nginx:1.10

将容器内的配置文件拷贝到当前nginx目录(注意此时我们的位置在mydata文件夹下)

docker container cp nginx:/etc/nginx .

停止nginx容器

docker stop nginx

删除nginx镜像

docker rm nginx

重命名nginx文件夹为conf

mv nginx conf

再次创建nginx文件夹

mkdir nginx

将conf移动到nginx

mv conf nginx/

再次创建docker实例

docker run -p 80:80 --name nginx \

-v /mydata/nginx/html:/usr/share/nginx/html \

-v /mydata/nginx/logs:/var/log/nginx \

-v /mydata/nginx/conf:/etc/nginx \

-d nginx:1.10

设置开机启动

docker update nginx --restart=always

访问http://http://30.37.112.250/

默认访问html文件夹,在html文件夹下创建index.html,并写入<h1>hello</h1>,再次访问就可以访问到

在html文件夹下创建文件夹es,在es文件夹创建test.text,写入张三

页面访问http://30.37.112.250/es/test.text即可访问到

docker安装RabbitMQ


Producer:消息生产者,负责生产和发送消息到Broker;

Broker:消息处理中心,负责消息存储、确认、重试等;

Consumer:消息消费中心,负责从Broker中获取消息并处理

异步性:将耗时的同步任务通过发送消息的方式进行异步处理,减少等待时间。

松耦合:不同系统、服务之间可以通过消息队列进行通信,不用关心彼此的实现细节,数据格式一致。

分布式:为了防止消息堵塞,可以对消费者集群进行横向扩展,避免单点故障,同样队列本身也可以。

可靠性:将接收到的消息落盘,就算服务器重启或者发生故障,恢复之后也能重新加载。

下载并且启动

docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management

开机自启动

docker update rabbitmq --restart=always

访问rabbitmq

192.168.43.128:15672

账号:guest

密码:  guest


查看 docker 容器使用的资源(占用CPU,内存的情况)

docker stats

docker 安装elasticsearch

下载镜像

docker pull elasticsearch:7.4.2

创建挂载目录

mkdir -p /mydata/elasticsearch/config

mkdir -p /mydata/elasticsearch/data

写入文件,可被远程任何机器访问

echo "http.host: 0.0.0.0" > /mydata/elasticsearch/config/elasticsearch.yml

运行,暴漏两个端口  9200 访问端口 9300 节点通信端口  单节点启动

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 --privileged=true \

-e ``"discovery.type=single-node"`  `\

-e ES_JAVA_OPTS=``"-Xms64m -Xms128m"`  `\

-``v` `/mydata/elasticsearch/config/elasticsearch``.yml:``/usr/share/elasticsearch/config/elasticsearch``.yml  \

-``v` `/mydata/elasticsearch/data``:``/usr/share/elasticsearch/data`  `\

-``v` `/mydata/elasticsearch/plugins``:``/usr/share/elasticsearch/plugins`  `\

-d elasticsearch:7.4.2

需求给挂载文件夹授予权限

chmod -R 777 /mydata/elasticsearch

否则没法启动

docker start 26baf8009232

设置开启自启动

docker update Id号 --restart=always

如此就可以访问了,但是虚拟机需要设置网络端口 阿里云服务器需要设置 安全组 开发9200端口

访问: 虚拟机ip地址加上 9200

http://192.168.56.1:9200/

安装kibana

下载镜像

docker pull kibana:7.4.2

# 一定记得改成自己的虚拟机(服务器地址)

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.1:9200 -p 5601:5601 -d kibana:7.4.2

设置开启自启动

docker update Id号 --restart=always

设置虚拟机地址映射

访问 192.168.56.1:5601

需要等一会才能访问成功


几个cat命令

GET /_cat/nodes: 查看所有节点

GET /_cat/health: 查看es健康状况

GET /_cat/master: 查看主节点

GET /_cat/indices: 查看所有索引

分词器 Ik 支持中文分词

https://gitee.com/jowell-jiawei/elasticsearch-analysis-ik-7.4.2

下载zip直接解压 放到挂载的plugins文件夹下面

最后重启Electicsearch

测试如下:

虚拟机平不同外网

1、开启密码登录

vi /etc/ssh/sshd_config

修改 PasswordAuthentication yes

重启服务 service sshd restart  这样就可Xshell登录了

2、修改网卡

cd /etc/sysconfig/network-scripts/

修改eth1

NM_CONTROLLED=yes

BOOTPROTO=none

ONBOOT=yes

IPADDR=192.168.56.1

NETMASK=255.255.255.0

GATEWAY=192.168.56.1

DNS1=114.114.114.114

DNS2=8.8.8.8

DEVICE=eth1

PEERDNS=no

#VAGRANT-END

重启网卡

service network restart

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容