docker—常用应用部署

这篇具有很好参考价值的文章主要介绍了docker—常用应用部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

部署MySQL

部署

拉取mysql镜像

docker pull mysql:5.7.33

准备数据卷目录

mkdir -p /usr/local/ProgramEnvir/mysql/docker_volume
cd /usr/local/ProgramEnvir/mysql/docker_volume

(可选)清空数据卷目录:如果是删除并创建新的mysql容器,需要删除数据卷目录的所以文件,因为之前的密码会被保留!

cd /usr/local/ProgramEnvir/mysql/docker_volume
rm -rf *

创建容器,设置端口映射、目录映射

docker run -d \
--name c_mysql \
-p 3306:3306 \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7.33
  • -p 3306:3306:将容器的3306(后)端口映射到宿主机的 3306(前)端口。
  • -v $PWD/conf:/etc/mysql/conf.d:将宿主机当前目录下的conf/my.cnf(前)挂载到容器的配置目录 /etc/mysql/my.cnf(后)
  • -v $PWD/logs:/logs:将宿主机当前目录下的logs(前)目录挂载到容器的日志目录/logs(后)
  • -v $PWD/data:/var/lib/mysql :将宿主机当前目录下的data(前)目录挂载到容器的数据目录/var/lib/mysql (后)
  • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码。

进入容器,操作mysql

docker exec -it c_mysql /bin/bash

退出mysql容器,但容器继续运行

exit

测试:
docker—常用应用部署,docker,docker,adb,容器

修改配置

直接在conf目录创建my.cnf文件

cd /usr/local/ProgramEnvir/mysql/docker_volume/conf
vim my.cnf

编辑如下内容

[mysqld]
# 最大连接数
max_connections = 1000

保存后重启mysql容器

docker restart c_mysql

报错解决1

以下报错:Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘bcdsystem.cities.city’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

这个错误发生在mysql 5.7 版本及以上版本会出现的问题:mysql 5.7版本默认的sql配置是sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。简单来说就是输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是group by后面跟着的字段。由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list 和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。

解决:编辑配置文件my.cnf

cd /usr/local/ProgramEnvir/mysql/docker_volume/conf
vim my.cnf

添加如下配置项:

# 解决报错:this is incompatible with sql_mode=only_full_group_by
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启mysql容器

docker restart c_mysql

部署Tomcat

拉取tomcat镜像

docker pull tomcat:8

设置端口映射、目录映射

mkdir -p /usr/local/ProgramEnvir/tomcat/docker_volume
cd /usr/local/ProgramEnvir/tomcat/docker_volume

创建容器并运行

docker run -d \
--name c_tomcat \
-p 8080:8080 \
-v $PWD/webapps:/usr/local/tomcat/webapps \
tomcat:8
  • **-p 8080:8080:**将容器的8080端口(后)映射到宿主机的8080端口(前)
  • **-v $PWD:/usr/local/tomcat/webapps:**将宿主机中当前目录(前)挂载到容器的webapps(后)

测试:浏览器访问 http://192.168.124.128:8080

docker—常用应用部署,docker,docker,adb,容器

部署Nginx

拉取nginx镜像

docker pull nginx:1.14.2

准备数据卷目录

mkdir -p /usr/local/ProgramEnvir/nginx/docker_volume
cd /usr/local/ProgramEnvir/nginx/docker_volume

初始化配置:

mkdir conf
vim conf/nginx.conf

在nginx.conf中粘贴下面内容

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid       /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include      /etc/nginx/mime.types;
    default_type application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log  main;
    sendfile        on;
    # tcp_nopush     on;
    keepalive_timeout  65;
    # gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

创建容器

docker run -d \
--name c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx:1.14.2
  • -p 80:80:将容器的80端口(后)映射到宿主机的80端口(前)
  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的/conf/nginx.conf(前)挂载到容器的配置目录/etc/nginx/nginx.conf(后)
  • -v $PWD/logs:/var/log/nginx:将主机当前目录下的logs(前)目录挂载到容器的日志目录/var/log/nginx(后)

测试:浏览器访问 http://192.168.124.128:80

docker—常用应用部署,docker,docker,adb,容器

部署Redis

拉取redis镜像

docker pull redis:6.2.6

创建容器并运行:

docker run -d \
--name c_redis \
-p 6379:6379 \
redis:6.2.6 \
--requirepass root
  • --requirepass要放在最后,用于指定redis密码

  • 修改现有redis容器的密码:

    # 进入容器
    docker exec -it c_redis /bin/bash
    # 进入redis目录
    cd /usr/local/bin
    # 启动客户端
    ./redis-cli
    # 验证身份(如果之前设置过密码)
    auth root
    # 修改密码
    config set requirepass 123abc
    # 查看是否修改成功
    config get requirepass
    

测试

./redis-cli -h 192.168.149.135 -p 6379

docker—常用应用部署,docker,docker,adb,容器

部署MongoDB

拉取镜像

docker pull mongo:5.0.5

准备数据卷容器

mkdir -p /usr/local/ProgramEnvir/mongodb/docker_volume
cd /usr/local/ProgramEnvir/mongodb/docker_volume

创建容器并运行

docker run -d \
--name c_mongodb \
-p 27017:27017 \
-v $PWD/data:/data/db \
-v $PWD/logs:/var/log/mongodb \
-v $PWD/mongod.conf:/etc/mongod.conf \
mongo:5.0.5 \
--auth

进入容器

docker exec -it c_mongodb /bin/bash

设置认证账号

# 进入admin数据库
mongo
> use admin
# 添加管理员,其拥有管理用户和角色的权限
> db.createUser({user: 'root', pwd: 'root', roles: [{role: "root", db: "admin"}]})
> exit
# 退出后进行认证
mongo -u root -p root --authenticationDatabase admin

(可选)添加普通用户

mongo -u root -p root --authenticationDatabase admin
# 通过admin添加普通用户
> use admin
> db.createUser({user: 'lzc', pwd: 'root', roles: [{role: "readWrite", db: "articledb"}]});
> exit
# 通过该用户登录进行测试
mongo -u lzc -p root --authenticationDatabase admin

部署RabbitMQ

拉取镜像

docker pull rabbitmq:3-management

(可选)也可以从本地加载mq镜像:

docker load -i mq.tar

准备数据卷目录

mkdir -p /usr/local/ProgramEnvir/rabbitmq/docker_volume
cd /usr/local/ProgramEnvir/rabbitmq/docker_volume

创建容器并运行

docker run -d \
--name c_mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-v mq-plugins:/plugins \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
rabbitmq:3-management

测试:浏览器访问 http://192.168.124.128:15672

部署ElasticSearch

部署ES

创建网络:因为还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

docker network create es-net

加载镜像:采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。不建议自己pull。课前资料提供了镜像的tar包:

docker—常用应用部署,docker,docker,adb,容器

mkdir -p /usr/local/ProgramEnvir/elasticsearch
cd /usr/local/ProgramEnvir/elasticsearch
mv /home/lzc/ftpdir/es.tar ./
mv /home/lzc/ftpdir/kibana.tar ./
mv /home/lzc/ftpdir/ik.zip ./

将其上传到虚拟机中,执行命令加载镜像压缩包

docker load -i es.tar

创建容器并运行

docker run -d \
--name c_es \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
elasticsearch:7.12.1
  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置

测试:在浏览器中输入:http://192.168.124.128:9200 即可看到elasticsearch的响应结果:

docker—常用应用部署,docker,docker,adb,容器

部署Kibana

将其上传到虚拟机中,执行命令加载镜像压缩包

docker load -i kibana.tar

创建容器并运行

docker run -d \
--name c_kibana \
--network=es-net \
-p 5601:5601  \
-e ELASTICSEARCH_HOSTS=http://c_es:9200 \
kibana:7.12.1
  • --network es-net:加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://c_es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名c_es直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,可以通过命令docker logs -f kibana查看运行日志,当查看到下面的日志,说明成功。此时在浏览器输入地址访问 http://192.168.124.128:5601,看到如下效果

docker—常用应用部署,docker,docker,adb,容器

安装ik分词器

在线安装

# 进入容器内部
docker exec -it elasticsearch /bin/bash
# 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
#退出
exit
#重启容器
docker restart elasticsearch

离线安装

  1. 查看数据卷目录:安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:

    docker volume inspect es-plugins
    

    显示结果如下,说明plugins目录被挂载到了/var/lib/docker/volumes/es-plugins/_data

    [
        {
            "CreatedAt": "2022-05-06T10:06:34+08:00",
            "Driver": "local",
            "Labels": null,
            "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
            "Name": "es-plugins",
            "Options": null,
            "Scope": "local"
        }
    ]
    
  2. 解压缩分词器安装包:把课前资料中的ik分词器解压缩,并上传到es容器的插件数据卷:

    docker—常用应用部署,docker,docker,adb,容器

    然后解压,重命名为ok:

    cd /var/lib/docker/volumes/es-plugins/_data
    unzip ik.zip
    
  3. 重启容器

    # 重启容器
    docker restart c_es
    # 查看es日志
    docker logs -f c_es
    
  4. 测试:IK分词器包含两种模式,

    • ik_smart:最少切分

    • ik_max_word:最细切分

    GET /_analyze
    {
        "analyzer": "ik_max_word",
        "text": "黑马程序员学习java太棒了"
    }
    

部署nacos

拉取镜像

docker pull nacos/nacos-server:1.4.0

创建容器并运行

docker run -d \
--name c_nacos \
-p 8848:8848 \
-e MODE=standalone \
nacos/nacos-server:1.4.0

测试:浏览器访问 http://192.168.124.128:8848/nacos,账号密码都是nacos文章来源地址https://www.toymoban.com/news/detail-831919.html

到了这里,关于docker—常用应用部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker的常用命令||Docker是个流行的容器化平台,它允许你打包、分发和运行应用程序。

    Docker是一个流行的容器化平台,它允许你打包、分发和运行应用程序。以下是一些常用的Docker命令及其示例用法: 1. **docker run**: 用于运行一个新的容器实例。     例如,运行一个Nginx容器: 2. **docker stop**: 停止一个正在运行的容器。      例如,停止一个名为`my_nginx_conta

    2024年02月19日
    浏览(50)
  • docker - 常用容器部署命令大全(MySQL、MongoDB、Redis、RabbitMQ、ES、Kibana、Nacos、Sentine)

    目录 一、常用容器运行指令 MySQL Redis RabbitMQ ElasticSearch  kibana  Nacos Sentinel a)未持久化部署 b)持久化部署 a)未持久化部署: b)持久化部署:   a)为了 es 和 将来要下载的 kibana 进行互联,因此需要我们去创建一个网络. b) ES 部署 Ps:如果报错 \\\"Caused by: java.nio.file.Access

    2024年01月20日
    浏览(76)
  • docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile

    mysql部署 redis nginx 常用和不常用的命令 dockerfile构建一个django项目 docker私有仓库 镜像传到官方仓库 镜像分层 私有仓库搭建 新建flask项目app.py 编写Dockerfile 用于构建flask项目的镜像 编写dockercompose的yml文件dockercompose.yml dockercompose启动 项目目录结构 luffy_api/Dockerfile 构建uwsgi+dj

    2023年04月13日
    浏览(51)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(97)
  • Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

    目录 1.Docker安装与启动 1.1 安装Docker  1.2 设置ustc的镜像  1.3 Docker的启动与停止 2.常用命令 2.1 镜像相关命令 2.1.1 查看镜像 2.1.2 搜索镜像  2.1.3 拉取镜像 2.1.4 删除镜像 2.2 容器相关命令 2.2.1 查看容器 2.2.2 创建与启动容器 2.2.3 停止与启动容器 2.2.4 文件拷贝 2.2.5 目录挂载

    2024年01月22日
    浏览(55)
  • 四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

    现有环境如下: 1.工作目录下有若干个可执行的jar包:在工作目录下打开命令行进行操作(Windows和Linux版的docker均可,这里以Windows为例) 2.拉取任意一个能运行jar包的jdk镜像:我的是adoptopenjdk/openjdk12 3.已具备jar包所需的基本组件:例如mysql、redis、nacos等 假如我只想将nettys

    2024年02月04日
    浏览(51)
  • 【运维知识大神篇】运维人必学的Docker教程1(Docker安装部署+Docker镜像管理+容器管理常用命令+搭建docker的本地yum源+windows系统安装docker环境)

    本篇文章开始给大家介绍Docker,这个是我非常喜欢的一个服务,介绍给大家,希望大家也能喜欢! 目录 何为容器 Docker环境安装部署 一、yum安装(CentOS7.9) 二、rpm包安装(CentOS) 三、卸载docker环境 四、安装指定的docker版本 五、Ubuntu安装docker环境 六、使用deb安装docker 七、

    2024年01月18日
    浏览(104)
  • adb 常用命令---2:手机相关应用列表

    命令行参数列表 查看系统应用 💗 查看第三方应用 💗 其他一系列命令🌟 查看某个包名中包含指定字符的应用 命令行参数列表 参数 含义 -l 将应用安装到保护目录 /mnt/asec -r 允许覆盖安装 -t 允许安装 AndroidManifest.xml 里 application 指定android:testOnly=\\\"true\\\"的应用 -s 将应用安装到

    2024年02月09日
    浏览(34)
  • Docker 常用【容器】命令

    Centos7 下载|安装|配置|卸载 Docker:https://liush.blog.csdn.net/article/details/129664121 Centos7 常用【基础|镜像】命令:https://liush.blog.csdn.net/article/details/129665015 容器常用命令 docker run IMAGE 新建启动容器 docker ps   查看所有正在运行的容器 exit  停止并退出容器 ctrl + P + Q   不停止退出容器

    2024年02月14日
    浏览(44)
  • docker常用容器命令

    首先说下容器: 它是指当docker运行镜像时,创建了一个隔离环境,称之为 容器 。  这种方式优点:可以开启多个服务,服务之前是互相隔离的(比如:在一台服务器上可以开启多个mysql,可以是多个不同版本或者多个相同版本,这样如果多个项目依赖不同mysql版本,也可以部

    2024年02月19日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包