docker日常使用记录

一、常见容器的启动

"registry-mirrors": ["https://inhj05a1.mirror.aliyuncs.com"]


1.0elasticsearch:8.1.0

docker pull elasticsearch:8.1.0

1.1启动 elasticsearch 容器:

docker run --restart=always -p 9200:9200 -p 9300:9300 -e  "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m"  --name elasticsearch --cpuset-cpus="1" -m 2G -d elasticsearch:8.1.0

1.2 ik 插件安装

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.1.0/elasticsearch-analysis-ik-8.1.0.zip

2.0 portiner:
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name huskyyue-portainer portainer/portainer

2.1 redis
docker run -d -p 6379:6379 --restart=always --name redis -v /d/docker/redis/redis.conf:/etc/redis/redis.conf -v /d/docker/redis/data:/data -d redis:latest redis-server --appendonly yes

3.0 mysql5.7:时间一致,
docker run -p 3306:3306 --name mysql5.7 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -lower_case_table_names=1 -v /etc/localtime:/etc/localtime:ro mysql:5.7
docker run -d --name mysql5.7 -it -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=huskyyue123456 -v /d/docker/dockermysql57/data:/var/lib/mysql -v /d/docker/dockermysql57/logs:/logs -v /d/docker/dockermysql57/conf:/etc/mysql/conf.d -d -lower_case_table_names=1 -v /etc/localtime:/etc/localtime:ro mysql:5.7

docker run -d --name mysql80 -it -p 3307:3306 --restart=always -e MYSQL_ROOT_PASSWORD=huskyyue123456 -v /d/docker/dockermysql80/data:/var/lib/mysql -v /d/docker/dockermysql80/logs:/logs -v /d/docker/dockermysql80/conf:/etc/mysql/conf.d -d -lower_case_table_names=1 -v /etc/localtime:/etc/localtime:ro mysql:8.0
对容器数据卷添加只需读不可写的操作,命令:
docker run -it -v 宿主机文件/目录:容器里对应的文件/目录:ro centos
目录后面添加 :ro 即可
mysql区分大小写 lower_case_table_names 参数
unix默认是0,windows默认是1,mac是2

windows:启动案例


docker run -d --name mysql5.7 -it -p 3307:3306 --restart=always -e MYSQL_ROOT_PASSWORD=123456 -v /f/dockermysql57/data:/var/lib/mysql  -v /f/dockermysql57/logs:/logs -v /f/dockermysql57/conf:/etc/mysql/conf.d -lower_case_table_names=1 -v /etc/localtime:/etc/localtime:ro mysql:5.7

在容器内进入MySQL
mysql -uroot -proot

查看容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql5.7
redis:启动后做数据持久化
docker run -p 6379:6379 --restart=always --name redis -d redis:latest
docker run -p 6379:6379 --restart=always --name redis -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes

每次执行镜像都是一个新的容器
docker ps -a
docker restart id

docker 基本命令
1、使用docker search 关键词 在Docker Hub中搜索镜像
2、使用docker pull命令去下载镜像,docker rmi命令去删除镜像,加参数-f表示强制删除,尽量先删除容器再删除镜像
3、使用docker run命令去启动镜像,-d表示后台运行,-P表示随机端口,-p指定端口映射,格式为:ip:hostPort:containerPort。
4、使用docker ps命令列举出所有运行中的Docker容器,该命令参数比较多,-a列表所有的容器,-f过滤,-q只列表容器的id。
5、docker kill 容器id,docker start/stop/restart 容器id 启动、停止和重启指定的容器。docker rm 移除容器
6、docker build -t 标签名称 目录,构建Docker镜像,-t表示指定一个标签。docker tag 为镜像打标签
7、docker tag 镜像id 新的镜像名称

4.0 zookeeper:

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper


https://blog.youkuaiyun.com/bufegar0/article/details/107988187

4.1 kafka:

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.18.216:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.18.216:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e TZ="Asia/Shanghai" wurstmeister/kafka
docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka

docker run -d --name tencent-kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=127.0.0.1:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
参数说明:
-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e KAFKA_ZOOKEEPER_CONNECT=127.0.0.1:2181/kafka 配置zookeeper管理kafka的路径127.0.0.1:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

kafka:
首先进入kafka容器,切换到kafka所在的目录

docker exec -it kafka /bin/bash

查看生产者

/opt/kafka/bin/kafka-console-producer.sh --topic=test --broker-list localhost:9092

查看消费者

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 -from-beginning --topic test

创建topic
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test`

本汪亲测可用:
https://blog.youkuaiyun.com/weixin_42697074/article/details/103088929

5.0 rabbitmq 去你的有道云找
docker run -d --name rabbitmqmaster -p 15672:15672 -p 5672:5672 --restart=always rabbitmq:management
docker run -d --name rabbitmqcluster -p 15673:15672 -p 5673:5672 --restart=always rabbitmq:management
docker run -d -p 8999:8999 -p 5678:5678 -p 8001:8001 --name haproxy -v /d/docker/dockerrabbitmq/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:1.6.15

5.1 rabbitmq haproxy 代理

6.0 nacos
docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true --restart=always -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /d/docker/dockernacos/conf/application.properties:/home/nacos/conf/application.properties nacos/nacos-server:2.0.3
配置文件消息:
文件名:application.properties
内容如下:

# spring
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://192.168.19.122:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

# nacos.cmdb.dumpTaskInterval=3600
# nacos.cmdb.eventTaskInterval=10
# nacos.cmdb.labelTaskInterval=300
# nacos.cmdb.loadDataAtStart=false


# metrics for prometheus
#management.endpoints.web.exposure.include=*

# metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

# metrics for influx
management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
# default current work dir
server.tomcat.basedir=

## spring security config
### turn off security
#spring.security.enabled=false
#management.security=false
#security.basic.enabled=false
#nacos.security.ignore.urls=/**

nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**

# nacos.naming.distro.taskDispatchPeriod=200
# nacos.naming.distro.batchSyncKeyCount=1000
# nacos.naming.distro.syncRetryDelay=5000
# nacos.naming.data.warmup=true
# nacos.naming.expireInstance=true

nacos.istio.mcp.server.enabled=false


7.0 MQTT服务器
在浏览器输入IP:18083 就可以进入emqtt页面
账号 admin 密码 public
7.1拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

7.2 构建 mqtt 容器

docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6

7.3 使用自定义桥接网络

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名字(mysql57)新网址 172.17.0.2
# bridge:默认网络驱动程序,如果您未指定驱动程序,则这是您正在创建的网络类型
# host:对于独立容器,去掉容器与docker 主机之间的网络隔离,直接使用主机的网络
# none: 对于这个容器,禁用所有网络

当需要多个容器在同一个Docker 主机上进行网络通信时,用户子自定义桥接网络是最佳选择。
7.4 通过ping 来确认容器之间网络通信是否正常
进入容器内部,docker exec -it kafka /bin/bash , apt update, apt install iputils-ping , apt install net-tools

7.5 docker 启动DC3-rabbitmq docker-compose.yml 内容:

version: '3'
services:
  rabbitmq:
    image: registry.cn-beijing.aliyuncs.com/dc3/dc3-rabbitmq:2023.4.0.dev
    restart: on-failure
    ports:
      - '8083:5672'
      - '1883:1883'
      - '8883:8883'
      - '61613:61613'
      - '6001:15672'
    container_name: dc3-rabbitmq
    hostname: dc3-rabbitmq

二、常见容器的使用

docker 中 redis 容器,使用 redis-cli 进行 访问
使用客户端,执行清空 redis 命令
1、docker exec -it myredis[容器名称] redis-cli
(1)检查是否连通,并执行清空命令

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty array)

(2)清除某个键数据

127.0.0.1:6379> del park_coupon_template_code_12
(integer) 1

三、文件挂载
即使是windows 下的目录,也必须使用linux 形式的目录结构
1、正确挂载外部目录
docker run -p 6379:6379 -v /c/docker.image.data/redis/data:/data -d redis:5.0.5 redis-server --appendonly yes
2、比如你的目录是
C:\docker.image.data\redis\data
则需要写成
/c/docker.image.data/redis/data
3、启动后进行文件映射
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

三、编辑容器内文件

1、vi 没有
apt-get update
apt-get install vim

四、常见容器的使用

1、切换root账号

 sudo su root 

2、查询docker 的启动方式

docker inspect imntiananboruicom-livekit-1

在这里插入图片描述
可以看到docker compose文件的位置
3.1、docker compose 启动docker程序
docker-compose-meeting.yml 实例

version: '3.3'
services:
  renren-meeting:
    image: renren_io:2.0
    container_name: renren-meeting
    restart: always
    ports:
      - "8093:8093"
    environment:
      - SW_AGENT_NAME=renren-meeting
    env_file:
      - common.env
    volumes:
      - ./jar/renren-meeting-server.jar:/app/app.jar

3.2、docker compose启动命令

docker-compose -f docker-compose-meeting.yml
down
up -d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡汪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值