列出当前正在运行的容器

  1. dock ps

列出所有的容器

  1. dock ps --all

进入容器

  1. docker exec -it b92a82a86fcc /bin/bash

COPY本地文件到容器

  1. docker cp demos/02.js ${容器ID}:/app/demos

挂载文件

-v 本地绝对目录:容器目录 容器名

  1. docker run -it -v ${绝对路径}:/{容器的路径} ${容器名}

示例:docker run -it -v /home/docker/koa-demos/demos:/app/demos koa-demo

修改文件

  1. //copy出来. fdfs-tracker为容器名
  2. sudo docker cp fdfs-tracker:/etc/fdfs/client.conf ./
  3. //copy进去
  4. sudo docker cp ./client.conf fdfs-tracker:/etc/fdfs/

运行容器并同时映射本地目录到容器

  1. docker container run -d --rm -p 8080:3000 -it -v /home/koa-demos/demos:/app/demos koa-demo

容器通迅

  • 文件通过与宿主机共享文件(卷)来操作
  • 服务通过 link 方式

nginx

  • image
  1. docker image build -t nginx:v2 .
  • run container
  1. docker run -d --name nginx \
  2. -p 8001:8001 -p 8188:8188 \
  3. -p 80:80 -p 443:443 \
  4. -v /home/opt/fdfs/store_path:/fastdfs/store_path \
  5. -v /home/opt/fdfs/conf:/etc/fdfs \
  6. -v /home/opt/nginx/conf:/usr/local/nginx/conf \
  7. -v /home/opt/nginx/logs:/usr/local/nginx/logs \
  8. -ti nginx-back-1110
  • 配置fdfs的mod_fastfds.conf(多tracker的情况下) ```bash tracker_server=47.118.49.83:22122
  1. <a name="4a3894d0"></a>
  2. # fdfs
  3. - tracker
  4. ```bash
  5. docker run -it -d --name trakcer -v /home/opt/fdfs/data/tracker:/fastdfs/tracker -v /home/opt/fdfs/conf/tracker.conf:/fdfs_conf/tracker.conf --net=host tracker-fdfs-back-1110

修改 /home/opt/fdfs/conf/tracker.conf 文件,配置tracker的base_path

  1. base_path=/fastdfs/tracker

配置tracker的client.conf

  1. base_path=/fastdfs/tracker
  2. tracker_server=47.118.49.83:22122 # tracke所在的IP及端口
  • storage
  1. docker run -ti -d --name storage -v /home/opt/fdfs/data/storage:/fastdfs/storage/data -v /home/opt/fdfs/conf/storage.conf:/fdfs_conf/storage.conf -v /home/opt/fdfs/store_path:/fastdfs/store_path --net=host storage-fdfs-back-1110

修改 /home/opt/fdfs/conf/storage.conf 文件,配置storage

  1. tracker_server=172.17.111.93:22122
  2. base_path=/fastdfs/storage

mysql cluster

  • network
  1. docker network create cluster --subnet=192.168.0.0/16
  • mgmd
  1. docker run -d --net=cluster --name=management1 --ip=192.168.0.2 -v /home/opt/mysql/mysql-cluster.cnf:/etc/mysql-cluster.cnf mysql/mysql-cluster:7.5 ndb_mgmd

配置文件变更处理:

  1. 删除 mgmd容器 下的 /usr/mysql-cluster/ndb_1_config.bin.1 这个文件
  2. docker restart mgmd容器
  3. 依次重启各节点
  4. 重新对新节点分组
    ndb_mgm>CREATE NODEGROUP 4,5 //4与5为新节点的NODEID
  5. 重新分配节点内存,
    在MYSQL客户端执行:mysql> Alter online table ips reorganize partition;
    查看:ndb_mgm>ALL REPORT MEMORY
  • ndbd
  1. docker run -d --net=cluster --name=ndb-1 --ip=192.168.0.4 mysql/mysql-cluster:7.5 ndbd
  • mysqld
  1. docker run -d --net=cluster --name=mysql1 --ip=192.168.0.10 -e MYSQL_ROOT_PASSWORD=xwabcd mysql/mysql-cluster:7.5 mysqld
  • mgm 查看各节点与管理各节点
  1. docker run --rm -it --net=cluster --ip=192.168.0.15 mysql/mysql-cluster:7.5 ndb_mgm

tomcat

  1. docker run -d --name java-lightpole-backend -p 6080:6080 \
  2. -v /home/opt/tomcat/conf:/usr/local/tomcat/conf \
  3. -v /home/opt/tomcat/logs:/usr/local/tomcat/logs \
  4. -v /home/opt/tomcat/webapps:/usr/local/tomcat/webapps \
  5. tomcat:8

简单说明:
-p 是外端口与内端口映射
-v 是宿主服务器与容器目录的映射
tomcat:8 是tomcat的image,版本为8

如果出现不知明的错误,容器运行不起来,这时又进不了容器(没有实例化成功)。 这时可换成 bin/bash脚本实例化

  1. docker run -it --name java-lightpole-backend -p 6080:6080 \
  2. -v /home/opt/tomcat/conf:/usr/local/tomcat/conf \
  3. -v /home/opt/tomcat/logs:/usr/local/tomcat/logs \
  4. -v /home/opt/tomcat/webapps:/usr/local/tomcat/webapps \
  5. tomcat:8 /bin/bash

进去后的排除方法:

  1. 查看系统或者程序的启动日志。
  2. 可直接在容器里启动运行脚本看看报什么错

REDIS

  • redis.conf文件配置

    1. # bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
    2. daemonize no #指定配置文件方式启动需设置为no
    3. appendonly yes #redis持久化  默认是no
    4. tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
  • 镜像实例化运行

指定配置文件方式

  1. docker run -p 7000:6379 --name redis \
  2. -v /home/ubuntu/opt/redis/redis.conf:/etc/redis/redis.conf \
  3. -v /home/ubuntu/opt/redis/data:/data \
  4. -d redis:latest \
  5. redis-server /etc/redis/redis.conf --appendonly yes

-name redis //容器名
-v //挂载本地文件
-d //后台运行
redis:latest //镜像名与版本
redis-server /etc/redis/redis.conf //指定配置文件运行
—appendonly yes //持久化

  • 设置密码

如果指定了配置文件启动,以下可忽略。

  1. redis-cli -h 127.0.0.1 -p 6379 # 客户端登录
  2. config set requirepass my_redis # 设置你的密码
  3. config get requirepass # 查看设置的密码
  4. config rewrite

mysql主从

  1. docker run -p 3339:3306 --name mysql-master -v /home/opt/mysql/master.my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=ethome2020 -d mysql-master-back-1110
  2. docker run -p 3340:3306 --name mysql-slave -v /home/opt/mysql/slave.my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=ethome2020 -d mysql-slave-back-1110