Docker 常见软件安装

94 阅读4分钟

docker相关配置

  • 镜像配置
[root@dawn docker]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://hub.atomgit.com",
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
     ]
}
EOF
[root@dawn docker]# systemctl daemon-reload
[root@dawn docker]# systemctl restart docker

mysql5.7安装

  • 下载镜像
[root@dawn docker]# docker pull mysql:5.7
  • 创建配置文件
[root@dawn mysql]# pwd
/root/docker/mysql
[root@dawn mysql]# tree
.
├── conf
│   └── my.cnf
└── data

[root@dawn mysql]# cat conf/my.cnf
[client]
default_character_set=utf8

[mysql]
default_character_set=utf8

[mysqld]
character_set_server=utf8

  • 启动容器
[root@dawn mysql]# docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=a123456 \
-v /root/docker/mysql/log:/var/log/mysql \
-v /root/docker/mysql/data:/var/lib/mysql \
-v /root/docker/mysql/conf:/etc/mysql/conf.d \
-dp 3306:3306 mysql:5.7
  • 进入mysql客户端,创建库
[root@dawn mysql]# docker exec -it mysql mysql -uroot -pa123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database nacos;
Query OK, 1 row affected (0.00 sec)

mysql> use nacos;
Database changed
  • 查看宿主机中挂载的目录
[root@dawn mysql]# cd /root/docker/mysql/data
[root@dawn data]# ls
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql       nacos               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       mysql.sock  performance_schema  public_key.pem   server-key.pem

安装nacos-1.4.1

  • 下载镜像
[root@dawn mysql]# docker pull nacos/nacos-server:1.4.1
  • 启动临时nacos镜像,复制配置内容到宿主机
[root@dawn mysql]# docker run --name nacos -dp 8848:8848  \
-e MODE=standalone \
nacos/nacos-server:1.4.1

[root@dawn nacos]# cd /root/docker/nacos/
[root@dawn docker]# mkdir nacos
[root@dawn docker]# cd nacos
[root@dawn nacos]# docker cp nacos:/home/nacos/conf/application.properties ./
  • 修改配置文件内容 image.png

  • 初始化nacos连接的数据库配置脚本 github.com/alibaba/nac…

  • 删除正在运行的临时容器

[root@dawn nacos]# docker rm -f nacos
  • 启动nacos容器
[root@dawn nacos]# docker run --name nacos \
-e MODE=standalone \
-v /root/docker/nacos/application.properties:/home/nacos/conf/application.properties \
-dp 8848:8848 \
nacos/nacos-server:1.4.1

Mongodb 安装

为了使用mongodb副本集的某些特性,通常需要启动多个mongodb服务作为副本集成员,而在学习或者开发阶段笔记本资源比较有限。鉴于此,官方文档给了解决办法,可以直接将一个单节点mongodb服务转换为单节点副本集(standlone replica set)www.mongodb.com/docs/manual…

  • 拉取镜像
[root@dawn vagrant]# docker pull mongo:6.0.2
  • 启动临时容器并复制配置文件
# 权限配置
[root@dawn conf]# chown -R 999:999 /root/docker/mongodb

# 启动临时容器copy配置文件
[root@dawn data]# docker cp mongo://etc/mongod.conf.orig /root/docker/mongodb/conf/
Successfully copied 2.56kB to /root/docker/mongodb/conf/

修改配置文件

[root@dawn data]# cd ../conf
[root@dawn conf]# mv mongod.conf.orig mongod.conf
[root@dawn conf]# vim mongod.conf
storage:
  dbPath: /srv/mongodb/db0
  journal:
    enabled: true

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
replication:
  replSetName: rs0

运行容器

docker run -itd --name mongo-rs \
-p 27017:27017 \
-v /root/docker/mongodb/log:/var/log/mongodb \
-v /root/docker/mongodb/data:/srv/mongodb/db0 \
-v /root/docker/mongodb/conf/mongod.conf:/etc/mongod.conf \
mongo:6.0.2 --config /etc/mongod.conf

配置副本集

docker exec -it mongo-rs mongosh
rs.initiate()
# ---
test> rs.initiate()
{
  info2: 'no configuration specified. Using a default configuration for the set',
  me: 'dc4482d574a9:27017',
  ok: 1
}

客户端无法连接问题

在单节点副本集下,本机既是主也是从,在容器的mongo shell中可进行查看, members只有一个成员,其name"dc4482d574a9:27017",而本地启动的这个副本集无法识别f76081e20602这个host

副本集成员host的识别问题,那么在初始化mongodb副本集时,我们可以显式的去指定成员host,不使用默认的副本集配置。具体而言,将启动步骤中的第三步更改为:

rs0 [direct: primary] admin> rs.status()
{
  ... ...
  members: [
    {
      _id: 0,
      name: 'dc4482d574a9:27017',
      health: 1,
      state: 1,
      stateStr: 'PRIMARY',
      uptime: 215,
      optime: { ts: Timestamp({ t: 1725725894, i: 1 }), t: Long("2") },
      optimeDate: ISODate("2024-09-07T16:18:14.000Z"),
      lastAppliedWallTime: ISODate("2024-09-07T16:18:14.042Z"),
      lastDurableWallTime: ISODate("2024-09-07T16:18:14.042Z"),
      syncSourceHost: '',
      syncSourceId: -1,
      infoMessage: '',
      electionTime: Timestamp({ t: 1725725683, i: 1 }),
      electionDate: ISODate("2024-09-07T16:14:43.000Z"),
      configVersion: 1,
      configTerm: 2,
      self: true,
      lastHeartbeatMessage: ''
    }
  ],
  ... ...
}

test> conf = {
   _id : "rs0",
   members: [
      { _id: 0, host: "192.168.10.200:27017" },
   ]
}
{ _id: 'rs0', members: [ { _id: 0, host: '192.168.10.200:27017' } ] }
test> rs.initiate(conf)
{ ok: 1 }

skywalking 安装

  • 拉取skywalking-oap、skywalking-ui镜像
docker pull apache/skywalking-oap-server:9.2.0 
docker pull apache/skywalking-ui:9.2.0
  • 启动oap
docker run -d --name skywalking-oap \
-p 12800:12800 \
-p 11800:11800 \
apache/skywalking-oap-server:9.2.0
  • 启动UI
docker run -d --name skywalking-ui \
-p 8080:8080 \
-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
--link skywalking-oap \
apache/skywalking-ui:9.2.0