Skip to main content

一些docker container的创建

本文不涉及 docker 的安装 只介绍一些 容器的初始化命令

MySQL

5.7

docker run \
--name mysql57 \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
-v /app/mujup/mysql5.7/data:/var/lib/mysql \
-v /app/mujup/mysql5.7/config:/etc/mysql/conf.d \
-v /app/mujup/mysql5.7/logs:/logs \
-d mysql:5.7

8

docker run \
--name mysql-8 \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
-v /usr/local/applications/mysql/data:/var/lib/mysql \
-v /usr/local/applications/mysql/config:/etc/mysql/conf.d \
-v /usr/local/applications/mysql/logs:/logs \
-d mysql:8

mariadb

docker run --detach \
-p 3306:3306 \
--name mariadb \
--env MARIADB_USER=maria \
--env MARIADB_PASSWORD=root \
--env MARIADB_ROOT_PASSWORD=root mariadb:10.7

consul

8500 为 ui 的端口

docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 -p  8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul

Kafka

  1. pull images
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
  1. run zk
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
  1. run kafka

    192.168.50.252 改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。
    默认目录: /opt/kafka_2.11-0.10.1.0

docker run -d \
--name kafka \
--publish 9092:9092 \
--link zookeeper \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.50.252 \
--env KAFKA_ADVERTISED_PORT=9092 \
--volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

Kafka compose

---
version: '2'
services:
kafka:
container_name: kafka
image: docker.mirrors.sjtug.sjtu.edu.cn/wurstmeister/kafka:latest
ports:
- 9092:9092
depends_on:
- zookeeper
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_HOST_NAME: 192.168.50.252
KAFKA_ADVERTISED_PORT: 9092
volumes:
- /etc/localtime:/etc/localtime

zookeeper:
image: docker.mirrors.sjtug.sjtu.edu.cn/wurstmeister/zookeeper:latest
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"

ceph

  1. 创建Ceph专用网络
sudo docker network create --driver bridge --subnet 172.20.0.0/16 ceph-network
  1. 拉取搭建用镜像
sudo docker pull ceph/daemon:latest-luminous
  1. 搭建mon节点
sudo docker run -d --name ceph-mon --network ceph-network --ip 172.20.0.10 -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_IP=172.20.0.10 -e MON_NAME=ceph-mon -e CEPH_PUBLIC_NETWORK=172.20.0.0/16 -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ -v /var/log/ceph/:/var/log/ceph/ ceph/daemon:latest-luminous mon
  1. 搭建osd节点
sudo docker exec ceph-mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

修改配置文件以兼容etx4硬盘

sudo vi /etc/ceph/ceph.conf

在文件最后添加:

osd max object name len = 256
osd max object namespace len = 64

分别启动三个容器来模拟集群

sudo docker run -d --privileged=true --name ceph-osd-1 --network ceph-network --ip 172.20.0.11 -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=ceph-mon -e MON_IP=172.20.0.10 -e OSD_TYPE=directory -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ -v /var/lib/ceph/osd/1:/var/lib/ceph/osd -v /etc/localtime:/etc/localtime:ro ceph/daemon:latest-luminous osd 
sudo docker run -d --privileged=true --name ceph-osd-2 --network ceph-network --ip 172.20.0.12 -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=ceph-mon -e MON_IP=172.20.0.10 -e OSD_TYPE=directory -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ -v /var/lib/ceph/osd/2:/var/lib/ceph/osd -v /etc/localtime:/etc/localtime:ro ceph/daemon:latest-luminous osd
sudo docker run -d --privileged=true --name ceph-osd-3 --network ceph-network --ip 172.20.0.13 -e CLUSTER=ceph -e WEIGHT=1.0 -e MON_NAME=ceph-mon -e MON_IP=172.20.0.10 -e OSD_TYPE=directory -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ -v /var/lib/ceph/osd/3:/var/lib/ceph/osd -v /etc/localtime:/etc/localtime:ro ceph/daemon:latest-luminous osd
  1. 搭建mgr节点
sudo docker run -d --privileged=true --name ceph-mgr --network ceph-network --ip 172.20.0.14 -e CLUSTER=ceph -p 7000:7000 --pid=container:ceph-mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph/:/var/lib/ceph/ ceph/daemon:latest-luminous mgr

开启管理界面

sudo docker exec ceph-mgr ceph mgr module enable dashboard
  1. 搭建rgw节点
sudo docker exec ceph-mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring 
sudo docker run -d --privileged=true --name ceph-rgw --network ceph-network --ip 172.20.0.15 -e CLUSTER=ceph -e RGW_NAME=ceph-rgw -p 7480:7480 -v /var/lib/ceph/:/var/lib/ceph/ -v /etc/ceph:/etc/ceph -v /etc/localtime:/etc/localtime:ro ceph/daemon:latest-luminous rgw
  1. 检查Ceph状态
sudo docker exec ceph-mon ceph -s
  1. 测试添加rgw用户
sudo docker exec ceph-rgw radosgw-admin user create --uid="test" --display-name="test user"

artifactory

8082 是 ui 的端口

docker pull docker.bintray.io/jfrog/artifactory-oss

docker run --rm --name artifactory -d
-v artifactory_data:/var/opt/jfrog/artifactory
-p 8081:8081 -p 8082:8082 docker.bintray.io/jfrog/artifactory-oss


### MongoDB
```shell
docker run -d --name mongo -p 27017:27017 \
-v /app/mongo/data/db:/data/db \
-v /app/mongo/data/configdb:/data/configdb \
-e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 \
mongo --auth

Redis5

docker run --name redis-5 -d -p 6379:6379 redis:5 redis-server --appendonly yes --requirepass 'password'
  • -p 6379:6379: 将容器内端口映射到宿主机端口(右边映射到左边)
  • redis-server –appendonly yes: 在容器执行redis-server启动命令,并打开redis持久化配置
  • requirepass “your passwd”: 设置认证密码
  • –restart=always: 随docker启动而启动

youtransfer

docker run -d -p 5050:5000 --name youtransfer --restart=always -v /tmp/youtransfer/uploads:/opt/youtransfer/uploads remie/youtransfer:stable

docker registry

docker run -d -p 5000:5000 --name registry-2.7 --restart=always -v /app/docker-registry:/var/lib/registry registry:2.7.1

WEB GUI

docker run -d -p 5001:8080 --name registry-web --link registry-2.7 -e REGISTRY_URL=http://registry-2.7:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web:v0.1.2
  • -e REGISTRY_NAME=localhost:5000 localhost 可以设定为 docker 主机 ip 使用起来会更方便

MinIO

默认 key: minioadmin

docker run -d --name minio -p 9000:9000 -v /app/minio/:/data minio/minio server /data
  • -e MINIO_ROOT_USER=minio (AK)
  • -e MINIO_ROOT_PASSWORD=minpassword (SK)

RabbitMQ

docker run -d -p 5672:5672 -p 15672:15672 --hostname some-hostname --name some-rabbit rabbitmq:3-management
  • -p 5672:5672 AMQP的server监听端口
  • -p 15672:15672 管理面板端口,(默认账号密码:guest guest)

PostgresSQL

PostgresSQL Exporter

docker run -d \
-p 9187:9187 \
-e DATA_SOURCE_NAME="postgresql://enterprisedb:yyy&[email protected]:5432/adb?sslmode=disable" \
quay.io/prometheuscommunity/postgres-exporter

Clickhouse

docker run -d -p 18123:8123 -p 19000:9000 --name clickhouse-server \
-v $(realpath ./ch_data):/var/lib/clickhouse/ \
-v $(realpath ./ch_logs):/var/log/clickhouse-server/ \
-v /path/to/your/config.xml:/etc/clickhouse-server/config.xml \
-e CLICKHOUSE_DB=my_database \
-e CLICKHOUSE_USER=clickhouse \
-e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
-e CLICKHOUSE_PASSWORD=clickhouse \
registry.dockermirror.com/clickhouse/clickhouse-server