基本操作记录
准备一些基本镜像
| Bash |
|---|
| # 下载一些常用的镜像
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
|