Linux(CentOS)安装Docker

查看当前内核版本

[docker@localhost ~]$ uname -r

确保yum包更新到最新

[docker@localhost ~]$ sudo yum update

卸载旧版本的docker

[docker@localhost ~]$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装需要的软件包

# yum-util提供yum-config-manager功能
[docker@localhost ~]$ sudo yum install -y yum-utils

设置yum源

[docker@localhost ~]$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装docker

[docker@localhost ~]$ sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

[docker@localhost ~]$ sudo systemctl start docker

设置阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hiq0snpp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

加入开机启动

[docker@localhost ~]$ sudo systemctl enable docker
# 验证是否安装成功
[docker@localhost ~]$ docker version

docker安装MySQL

下载MySQL镜像

# 下载MySQL5.7镜像
[docker@localhost ~]$ docker pull mysql:5.7

创建MySQL实例并启动

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

参数说明

-p 3306:3306	将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/conf:/etc/mysql 将配置文件挂载到主机
-v /mydata/mysql/log:/var/log/mysql 将日志文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql 将数据文件挂载到主机
-e MYSQL_ROOT_PASSWORD=root 初始化root用户密码
-d mysql:5.7 以后台方式运行

进入MySQL容器

docker exec -it mysql /bin/bash

# 查看mysql位置
root@c34eeaabe727:/# whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql

更改MySQL配置

# 因为上面配置了挂载mysql配置文件,所以在外部配置文件目录更改配置就行	/mydata/mysql/conf
root@c34eeaabe727:/# cd /mydata/mysql/conf
# 修改my.cnf文件
root@c34eeaabe727:/# vi /mydata/mysql/conf/my.cnf

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服务

[root@localhost conf]# docker restart mysql
# 容器跟随docker启动
[root@localhost conf]# docker update mysql --restart=always

容器跟随docker启动

[root@localhost conf]# docker update mysql --restart=always

docker安装Redis

下载Redis镜像

[docker@localhost ~]$ docker pull redis

创建Redis实例并启动

注意之后文件夹挂载时会将redis.conf默认成文件夹,所以这个文件要先新建出来

mkdir -p /mydata/redis/conf
# 往redis.conf中添加 appendonly yes代表redis持久化
touch /mydata/redis/conf/redis.conf

启动

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

进入Redis容器

docker exec -it redis redis-cli # 打开redis客户端

docker安装elasticsearch

下载elasticsearch镜像

docker pull elasticsearch:7.4.2

创建elasticsearch实例并启动

注意:-e ES_JAVA_OPTS测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml # 运行elasticsearch
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-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

docker启动elasticsearch失败,使用

docker logs elasticsearch

命令查看启动日志,发现报错如下:

原因是因为外部挂载的data目录权限不足,更改elasticsearch目录下所有目录的权限

chmod -R 777 /mydata/elasticsearch/

重新启动elasticsearch

docker start elasticsearch
docker logs elasticsearch

浏览器访问elasticsearch9200端口,出现如下信息就好了。

elasticsearch常用命令

查看节点信息

请求路径:http://192.168.1.199:9200/_cat/nodes

查看健康状况

请求路径:http://192.168.1.199:9200/_cat/health

查看主节点信息

请求路径:http://192.168.1.199:9200/_cat/master

查看索引信息

请求方式:get

请求路径:http://192.168.1.199:9200/_cat/indices

保存数据(文档)

第一种方式:(必须带ID)

请求方式:put

请求路径:http://192.168.1.199:9200/customer/external/1

参数:

{
"name": "John Doe"
}

响应:

{
"_index": "customer",# 索引
"_type": "external",# 类型
"_id": "1",# id
"_version": 1,# 版本
"result": "created",# created代表新增,第二次请求的时候变成updated
"_shards": {# 分片信息
"total": 2,
"successful": 1,
"failed": 0
},
# 下面可做乐观锁
"_seq_no": 0,# 并发控制字段,每次更新就会+1
"_primary_term": 1# 同上,主分片重新分配,如重启机会变化
}

索引一条数据到指定索引(customer)下指定类型(external),唯一ID为1,用mysql来说就是插入一条数据到customer库的external表下

注意:当发送多次同一请求的时候会变成更新操作。

第二种方式:(可带可不带ID)

请求方式:post

请求路径:http://192.168.1.199:9200/customer/external/

注意:这个请求可带可不带ID,带ID第一次会新增数据,第二次会变成更新数据。

不带ID代表新增

{
"_index": "customer",
"_type": "external",
"_id": "QTUFC3cB3T_vFaLFpHJW",# 自动生成ID
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
查询数据(文档)

请求方式:get

请求路径:http://192.168.1.199:9200/customer/external/1

{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "John Doe"
}
}
更新数据(文档)

请求方式:post

请求路径:http://192.168.1.199:9200/customer/external/1/_update

参数:

{
"doc": {
"name": "John"
}
}

响应:

{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 3,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 1
}

再次请求的响应:

{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 3,
"result": "noop",# es对比参数完全一致时提示未做任何更改,版本号也不会增加
"_shards": {
"total": 0,
"successful": 0,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 1
}

这种更新会对比数据

删除数据(文档)

请求方式:delete

请求路径:http://192.168.1.199:9200/customer/external/1

响应:

{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 4,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 6,
"_primary_term": 1
}

注意:不支持删除类型,可删除索引文档

批量添加

支持以下方式做批量数据处理

  • index
  • create
  • delete
  • update

docker安装kibana

下载kibana镜像

docker pull kibana:7.4.2

创建kibana实例并启动

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

docker安装运行nginx

# 直接运行Nginx会自动下载
docker run -p 80:80 --name nginx -d nginx:1.10
# 将容器内的配置文件拷贝到当前目录
docker container cp nginx:/etc/nginx .
# 拷贝之后停止Nginx容器并移除
docker stop nginx
docker rm nginx
# 将/mydata/nginx更改为/mydata/conf
mv nginx conf
# 重新创建nginx目录并将conf移动到nginx目录下
mkdir nginx
mv conf nginx/
# 创建新的nginx
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

Linux(CentOS)下安装docker的更多相关文章

  1. linux centos下安装docker

    1.在vm中装好好centos后,更新内核 运行docker需要内核版本为3.8或者更高的版本,内核必须支持一种合适的存储驱动(Drivice Mapper.AUFS.vfs.btrfs.ZFS),默 ...

  2. docker学习之路-centos下安装docker

    前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...

  3. Centos下安装Docker,并配置国内docker源

    Centos下安装Docker 替换为国内的yum源(可选): mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.re ...

  4. Linux(CentOs)下安装Phantomjs + Casperjs

    Linux(CentOs)下安装Phantomjs + Casperjs 是参照cnMiss's Blog http://ju.outofmemory.cn/entry/70691的博客进行安装的 1 ...

  5. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

  6. Linux CentOS下安装Tomcat9

    本文讲解在Linux CentOS下安装Tomcat9,以及Web项目的部署发布. 环境:阿里云ECS 云服务器Linux CentOS 使用XShell客户端连接服务器,进行操作实践. 1.下载To ...

  7. Linux 64位 CentOS下安装 Docker 容器,启动、停止

    一.Docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器,是轻量级的“容器引擎+映像仓库”,在LXC(linux轻量级容器)的基础上构建,可以运行任何应 ...

  8. 在RedHat/CentOS下安装Docker(不升级内核)

    由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...

  9. CentOS下安装Docker CE教程

    一.安装前准备 1.硬件要求 CentOS 7(64-bit),内核版本不能低于3.10: CentOS 6.5(64-bit或更新的版本),内核版本为 2.6.32-431 或者更高版本,一般不建议 ...

随机推荐

  1. scala :: , +:, :+ , ::: , ++ 的区别

    4 种操作符的区别和联系 :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表.用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元 ...

  2. STM32定时器配置

    void TIM1_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDe ...

  3. PHP常用函数记录

    1.mixed print_r(mixed $expression [,bool $return=false ]) 打印变量信息. 相关的函数还有var_dump().var_export() $re ...

  4. 【Azure 事件中心】azure-spring-cloud-stream-binder-eventhubs客户端组件问题, 实践消息非顺序可达

    问题描述 查阅了Azure的官方文档( 将事件发送到特定分区: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-availability-and-c ...

  5. Python+Selenium - 一个元素有两个标签时:一个用于显示,一个用于底层

    如下图,这种一个元素由两个标签控制的,用js改值时需要两个标签的属性值都改 改值代码 js_code = 'a = document.getElementById("lostdate&quo ...

  6. TensorFlow用法

    TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...

  7. YOLOvi(i=1,2,3,4)系列

    YOLOvi(i=1,2,3,4)系列 YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf YOLOv4源码链接:https://github.com/Al ...

  8. python_selenium_键盘事件

    引言 ----在实际的web测试工作中,需要配合键盘按键来操作,webdriver的  keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl+a,Ctrl+v等. 举例: #cording ...

  9. IDEA骚技巧

    1. var 声明 2. null 判空 3. notnull 判非空 4. nn 判非空 5. for 遍历 6. fori 带索引的遍历 7. not 取反 8. if 条件判断 9. cast ...

  10. [Azure DevOps] 使用 Inno Setup 制作桌面软件安装包

    1. 桌面应用程序的 CI/CD 桌面应用程序的 CI/CD 过程和网站有一些不同,毕竟桌面应用程序的"部署"只是将安装包分发到目标位置,连应用商店都不用上,根据公司的管理流程可以 ...