跳转至

基本操作记录

准备一些基本镜像

Bash
1
2
3
4
5
6
# 下载一些常用的镜像
docker pull nginx:1.24.0
docker pull tomcat:8.5.55
docker pull mysql:5.7.39
docker pull redis:4.0.14
docker pull rabbitmq:3.8.16-management

部署一个tomcat

Bash
# 创建本地文件目录
$ mkdir -p /opt/app/tomcat/ && cd /opt/app/tomcat/
# 启动一个临时容器
$ docker run -itd --name temp tomcat:8.5.55
# 进入容器,查看基本的文件位置等
$ docker exec -it temp /bin/bash
root@b8cf79449e35:/usr/local/tomcat# ls conf
# 退出,复制初始的配置文件及需要的内容
$ docker cp temp:/usr/local/tomcat/conf ./
$ docker cp temp:/usr/local/tomcat/webapps.dist ./
$ ls conf/
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
$ mv webapps.dist webapps

# 此时可以删除临时容器,将配置本地目录挂载
$ docker rm -f temp
$ docker run -itd --name mytomcat \
  -p 8080:8080 \
  -v /opt/app/tomcat/conf:/usr/local/tomcat/conf \
  -v /opt/app/tomcat/webapps:/usr/local/tomcat/webapps \
  -v /opt/app/tomcat/logs:/usr/local/tomcat/logs \
  tomcat:8.5.55
# 测试
$ mkdir myweb && echo "<h1> hello test </h1>" > myweb/index.html
$ curl http://localhost:8080/myweb/index.html

部署一个mysql

Bash
# 创建本地文件目录
$ mkdir -p /opt/app/mysql/ && cd /opt/app/mysql/
# 启动一个临时容器
$ docker run -itd --name temp -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.39
# 进入容器,查看基本的文件位置等
$ docker exec -it temp /bin/bash
# 查看读取的配置文件位置
bash-4.2# mysqld --verbose --help| grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

# 退出,复制初始的配置文件及需要的内容
$ docker cp temp:/etc/my.cnf ./
$ docker cp temp:/etc/mysql/conf.d ./
# 此时可以删除临时容器,将配置本地目录挂载
$ docker rm -f temp
$ docker run -itd --name mysql \
  -p 3306:3306 \
  -v /opt/app/mysql/my.cnf:/etc/my.cnf \
  -v /opt/app/mysql/conf.d:/etc/mysql/conf.d \
  -v /opt/app/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:5.7.39
# 测试
$ mysql -h127.16.1.27 -uroot -p123456
mysql> select user,host,authentication_string from mysql.user;

# 可以修改配置文件测试
$ vim my.cnf
log-error=/var/lib/mysql/logs/mysqld.log    # 打开日志,并修改下目录,或者之前就做好日志目录映射
$ mkdir data/logs
$ docker restart mysql
$ tail -20 data/logs/mysqld.log

部署一个redis

需要仔细调研下docker 下 redis 配置文件注意项

Bash
# 创建本地文件目录
$ mkdir -p /opt/app/redis/{conf,data} && cd /opt/app/redis/
# 因为redis镜像是没准备配置文件的,这里不需要临时启动容器,我们直接准备配置文件
$ vim conf/6379.conf
...
bind 0.0.0.0
protected-mode no
daemonize no    # 这里需要注意关闭守护进程,否则与-d 参数冲突
dir /data/
masterauth 123456
requirepass 123456
maxmemory 1g
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

# redis 核心就是配置文件,准备好后启动容器
$ docker run -itd --name redis \
  -p 6379:6379 \
  -v /opt/app/redis/conf/6379.conf:/etc/redis/6379.conf \
  -v /opt/app/redis/data:/data \
  redis:4.0.14 \
  redis-server /etc/redis/6379.conf
# 测试
$ docker exec -it redis redis-cli -a 123456 info

部署一个RabbitMQ

Bash
# 端口介绍
15672        HTTP API 和管理界面的端口
5672/5671    AMQP 0-9-1  1.0 协议的客户端连接端口,其中 5671 用于 TLS 加密连接
25672        节点间通信端口
4369         用于 Erlang 分布式节点间的通信(EPMD - Erlang Port Mapper Daemon)
61613/61614  STOMP 协议的客户端连接端口,其中 61614 用于 TLS 加密连接
1883/8883    MQTT 协议的客户端连接端口,其中 8883 用于 TLS 加密连接

$ docker run -d \
--hostname my-rabbit \
--name rabbit \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-p 15672:15672 \
-p 5672:5672 \
-p 25672:25672 \
-p 4369:4369 \
rabbitmq:3.8.16-management