Docker 安装启动各种程序软件方法及问题

18 篇文章 1 订阅

一、docker 在线安装 :CentOS Docker 安装 | 菜鸟教程

#安装
curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
#启动
systemctl start docker
#关闭
systemctl stop docker
#重启
systemctl restart docker
#卸载
#删除安装包:
yum remove docker-ce
#删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker

二、docker 安装 mysql 8 版本 Docker 安装 MySQL | 菜鸟教程

# docker 中下载 mysql
docker pull mysql

#启动
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

#进入容器
docker exec -it mysql /bin/bash

#登录mysql
mysql -u root -p

#查看用户信息
select host,user,plugin,authentication_string from mysql.user;

#添加远程登录用户
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

docker中修改mysql8.0密码 

1.进入mysql8.0容器

docker exec -it mysql8.0 /bin/bash

2.进入mysql

mysql -u root -p

3.先进入 mysql 数据库

use mysql;

4.修改密码

ALTER USER 'root'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;

5.修改本地密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';

6.退出

exit;

 

三、Docker安装Zookeeper

docker pull zookeeper

##存储配置文件和数据
## mkdir -p /root/dev/zookeeper/conf
mkdir -p /root/dev/docker/zookeeper/data

# 启动

docker run -d \
-p 2181:2181 \
-v /root/dev/docker/zookeeper/data/:/data/ \
--name=zookeeper  \
--privileged zookeeper

#zoo.cfg
## admin.serverPort=9999

## 进入zookeeper
docker exec -it 6ccc990d22b6 /bin/bash    

## 客户端启动
./bin/zkCli.sh
##查看当前节点列表
ls /
##创建节点
create /test "test"
##设置节点数据
set /test "666666"
##查看节点数据
get /test
##删除节点
delete /test

 问题:

./zkServer.sh启动报错,看不到原因:

Using config: /conf/zoo.cfg Starting zookeeper ... FAILED TO START

使用下列命令启动,查看报错原因

./zkServer.sh start-foreground

问题:

2021-07-14 15:33:43,745 [myid:1] - INFO  [main:NIOServerCnxnFactory@660] - binding to port /0.0.0.0:2181
2021-07-14 15:33:43,746 [myid:1] - ERROR [main:ZooKeeperServerMain@91] - Unexpected exception, exiting abnormally
java.net.BindException: Address already in use
	at java.base/sun.nio.ch.Net.bind0(Native Method)
	at java.base/sun.nio.ch.Net.bind(Unknown Source)
	at java.base/sun.nio.ch.Net.bind(Unknown Source)
	at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
	at java.base/sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
	at java.base/sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
	at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:662)
	at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:160)
	at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:113)
	at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:68)
	at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:141)
	at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91)

从错误信息来看,是端口被使用了,但我用netstat -lntup|grep 2181 是没被使用的,再用 lsof -i:2181,发现了2181端口果然被占用了
在zoo.cfg 中更改2181的端口为2281

四、docker 安装 consul 

docker pull consul

##启动第一个节点,叫 consul1

docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect=1 -ui -bind=0.0.0.0 -client=0.0.0.0

#端口详解:
#8500 : http 端口,用于 http 接口和 web ui访问;
#8300 : server rpc 端口,同一数据中心 consul server 之间通过该端口通信;
#8301 : serf lan 端口,同一数据中心 consul client 通过该端口通信; 用于处理当前datacenter中LAN的#gossip通信;
#8302 : serf wan 端口,不同数据中心 consul server 通过该端口通信; agent Server使用,处理与其他#datacenter的gossip通信;
#8600 : dns 端口,用于已注册的服务发现;

#查看consul集群信息
docker exec -it consul1 consul members

#开浏览器: http://localhost:8500 来查看整个集群的信息

五、docker 安装 rabbitmq

#1
docker pull rabbitmq
#2
#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

#方式二:设置用户名和密码
docker run -di --name rabbitmq -e RABBITMQ_DEFAULT_USER=daniel -e RABBITMQ_DEFAULT_PASS=daniel -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq


说明:

-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

#3  启动rabbitmq_management
docker exec -it rabbit rabbitmq-plugins enable rabbitmq_management
或者 
docker exec -it 镜像ID /bin/bash
rabbitmq-plugins enable rabbitmq_management

#4 开启防火墙15672端口,浏览器打开web管理端:http://ip:15672

#5 遇到问题:我使用chrome 浏览器无法登陆,换个浏览器就可以,神奇

六、docker 安装 zipkin

docker search zipkin

docker pull openzipkin/zipkin

docker run -d --restart always -p 9411:9411 --name zipkin openzipkin/zipkin

七、docker 安装单机版Nacos

docker pull nacos/nacos-server

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

# 登录密码默认nacos/nacos
# standalone代表着单机模式运行,非集群模式

docker nacos+mysql :

nacos-mysql :nacos/nacos-db.sql at master · alibaba/nacos · GitHub


docker run -d \
--name nacos-mysql \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=106.15.38.88 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--restart=always \
nacos/nacos-server

其它安装方法可参见:Docker安装Nacos(详细教程) - Liaty - 博客园1、拉取镜像 docker pull nacos/nacos-server 2、挂载目录,用于映射到容器,目录按自己的情况创建 mkdir -p /mydata/nacos/logs/ #新建logshttps://www.cnblogs.com/laity353/p/15338581.html 

八、docker 安装 Sentinel

docker pull bladex/sentinel-dashboard

docker run --name sentinel -d -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -p 8858:8858 -d bladex/sentinel-dashboard

## 默认账号密码 sentinel

## -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime  加入时区,让容器与宿主机时间一致

九、docker 安装 seata

官网下载地址:下载中心  查看各版本

docker pull seataio/seata-server:1.4.2

 创建配置文件目录,位置自定

mkdir /root/dev/docker/seata/seata-config

 mkdir /root/dev/docker/seata/logs

目录seata-config下创建注册文件 registry.conf(以下使用nacos做demo)和file.conf 两个配置文件

自定义配置文件需要通过挂载文件的方式实现,将宿主机上的 registry.conf 和 file.conf 挂载到容器中相应的目录

指定 registry.conf
使用自定义配置文件时必须指定环境变量 SEATA_CONFIG_NAME, 并且值需要以file:开始, 如: file:/root/seata-config/registry

$ docker run --name seata-server \
        -p 8091:8091 \
        -e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
        -v /User/seata/config:/root/seata-config  \
        seataio/seata-server
其中 -e 用于配置环境变量, -v 用于挂载宿主机的目录

指定 file.conf
如果需要同时指定 file.conf 配置文件,则需要在 registry.conf 文件中将 config 配置改为以下内容,name 的值为容器中对应的路径

config {
  type = "file"

  file {
    name = "file:/root/seata-config/file.conf"
  }
}

registry.conf:

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
 
type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "192.168.1.23:8848"
    group = "SEATA_GROUP"
    namespace = ""
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}
 
config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "file"
file {
    name = "file:/root/dev/docker/seata/seata-config/file.conf"
  }

}

file.conf:

## transaction log store, only used in seata-server
store {
  ## store mode: file、db、redis
  mode = "db" ## 原来为file
 
  ## file store property
  file {
    ## store location dir
    dir = "sessionStore"
    # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
    maxBranchSessionSize = 16384
    # globe session size , if exceeded throws exceptions
    maxGlobalSessionSize = 512
    # file buffer size , if exceeded allocate new buffer
    fileWriteBufferCacheSize = 16384
    # when recover batch read size
    sessionReloadReadSize = 100
    # async, sync
    flushDiskMode = async
  }

  ## database store property
  db {
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    ## 因为设置为db,所以需要选择数据库,这里设置数据库及密码,seata是需要创建的,默认的表是通过脚本运行得到的
    url = "jdbc:mysql://106.15.38.88:3306/seata"
    user = "root"
    password = "123456"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }

}

 创建数据库和表,全局事务会话信息由3块内容构成,全局事务-->分支事务-->全局锁,对应表global_table、branch_table、lock_table,库名自定,与file.conf的mysql 配置信息要一致

mysql.sql传送门

 
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;
 
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;
 
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(96),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

启动:

docker run -it -d   -p 8091:8091 \
-v /root/dev/docker/seata/seata-config/registry.conf:/seata-server/resources/registry.conf \
-v /root/dev/docker/seata/seata-config/file.conf:/seata-server/resources/file.conf \
-v /root/dev/docker/seata/logs:/root/logs \
--restart=always \
--name seata1.4.2  seataio/seata-server:1.4.2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Docker 是一种容器化技术,可以在 Windows 操作系统上运行各种应用程序软件。使用 Windows Docker 安装软件可以提供更高效、更稳定的运行环境。下面是使用 Windows Docker 安装软件的步骤: 1. 首先,确保你的 Windows 系统已经安装Docker。你可以从 Docker 官方网站上下载并安装最新版的 Docker Desktop for Windows。 2. 安装完成后,打开 Docker Desktop for Windows,并在系统托盘找到 Docker 图标。单击图标,确认 Docker 已经成功启动。 3. 打开命令行终端(如 PowerShell 或命令提示符),输入以下命令来检查 Docker 是否安装成功: ``` docker version ``` 如果正确显示了 Docker 的版本信息,则说明 Docker 已经安装成功。 4. 在终端,使用以下命令来搜索并下载你需要的软件镜像。例如,如果你想安装一个名为 "software" 的软件,可以使用以下命令: ``` docker search software ``` 然后,选择一个合适的镜像,记下该镜像的名称。 5. 使用以下命令来下载并创建容器: ``` docker run -it --name mycontainer software ``` 其,"mycontainer" 是容器的名称,"software" 是你选择的软件镜像名称。这个命令将会下载镜像并创建一个容器。 6. 运行以下命令来进入容器的命令行界面: ``` docker exec -it mycontainer bash ``` 这个命令将进入容器,并提供一个命令行界面,你可以在其执行各种操作。 7. 在容器的命令行界面,可以按照软件安装步骤来安装软件。这可能包括下载、解压、配置等步骤。 8. 当软件安装完成后,退出容器的命令行界面,使用以下命令停止和删除容器: ``` docker stop mycontainer docker rm mycontainer ``` 这样就完成了使用 Windows Docker 安装软件的过程。使用 Docker 可以大大简化软件安装和部署过程,并提供一致性的运行环境,确保软件能够在不同的系统正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值