Nginx
Docker运行的Nginx是在容器内的,表示如果要转发静态文件,一定要映射宿主机与容器的文件路径。
如果使用反向代理,因为nginx在容器而非在宿主机中,所以使用127.0.0.1转发会失败,暂时知道的有两种解决办法
1,可以在配置文件中转发使用宿主机ip进行配置。但这样就必须要开放宿主机的端口,是不安全的,如果是自己的虚拟机可以这样使用。
2,开放docker虚拟网卡
使用命令:firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“172.17.0.1/16” accept’
然后nginx的配置,使用 172.17.0.1 进行转发就可以;
拉取镜像
docker pull nginx:latest
简单启动nginx
docker run --name nginx -d -p 80:80 nginx:latest
挂载文件启动nginx
docker run --name nginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx nginx:latest
说明:
–name nginx
指定容器名为:nginx
-d
指定容器后台运行
-p 80:80
指定容器80端口映射到宿主机的80端口
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
指定容器/etc/nginx/nginx.conf文件,指向宿主机/data/nginx/conf/nginx.conf文件
-v /data/nginx/logs:/var/log/nginx
指定容器/data/nginx/logs文件夹,指向宿主机/var/log/nginx文件夹
RabbitMq
拉取镜像
docker pull rabbitmq:management
启动
docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
说明:
–name rabbitmq
指定容器名为:rabbitmq
-d
指定容器后台运行
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin
传递环境变量到容器,作为RabbitMq的账号密码(可选)
-p 15672:15672 -p 5672:5672
RabbitMq需要开放15672,5672端口,映射到宿主机
Redis
拉取镜像
docker pull redis:latest
启动
docker run -d --name redis -p 6379:6379 -v /data/redis/data:/data -v /data/conf/redis.conf:/usr/local/etc/redis/redis.conf redis:latest /usr/local/etc/redis/redis.conf --requirepass "123456"
说明:
–name redis
指定容器名为:redis
-d
指定容器后台运行
-p 6379:6379
redis需要开放6379端口,映射到宿主机
–requirepass “123456”
redis的密码(可选)
-v /data/redis/data:/data
挂载数据持久化数据(可选)
-v /data/conf/redis.conf:/usr/local/etc/redis/redis.conf
挂载配置文件(可选)
redis-server /usr/local/etc/redis/redis.conf
使用自己的配置文件启动redis(可选)
MinIo
拉取镜像
docker pull minio/minio
单机版启动,默认账号密码为: minioadmin=minioadmin
docker run --name=minio -p 9000:9000 minio/minio server /data
说明:
–name=minio
指定容器名为:minio
-p 9000:9000
minio默认已9000端口启动
server /data
启动指定文件储存在容器内的地址
指定账号密码,指定文件储存目录映射启动
docker run -p 9000:9000 --name minio1 \
-e "MINIO_ACCESS_KEY=admin123456" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server /data
说明:
-e “MINIO_ACCESS_KEY=admin123456”
-e “MINIO_SECRET_KEY=admin123456”
传递环境变量,指定ACCESS_KEY 和 SECRET_KEY,登录所用账号密码
-v /mnt/data:/data
-v /mnt/config:/root/.minio
映射容器地址到宿主机,/mnt/data 文件储存地址,/mnt/config 配置地址
MySQL
拉取镜像
docker pull mysql:8.0.16
mkdir -p /data/mysql/conf.d
vi mysql.cnf 内容
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
[mysqld]
max_connections = 1500
bind-address= 0.0.0.0
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#密码加密规则
default_authentication_plugin= mysql_native_password
# 表名不区分大小写
#lower_case_table_names=1
#server-id=1
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysqlx.sock
#symbolic-links=0
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
启动
docker run --name mysql \
--restart=always \
-p 3306:3306 \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/var/lib/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai \
-d mysql:8.0.16
说明:
–name mysql
指定容器名为:mysql(可选)
–restart=always
docker启动,容器自启动(可选)
-p 3306:3306
指定开放端口(必选)
-v /data/mysql/conf.d:/etc/mysql/conf.d
-v /data/mysql/var/lib/mysql:/var/lib/mysql
指定容器映射宿主机配置文件地址,以及数据地址(可选,正式环境必选)
-e MYSQL_ROOT_PASSWORD=123456
-e TZ=Asia/Shanghai
配置环境变量,数据库密码(必选)
-d
指定容器后台运行(可选)
Jenkins
拉取镜像
docker pull jenkins:latest
创建日志配置文件
mkdir -p /data/jenkins
cat > /data/jenkins/log.properties <<EOF
handlers=java.util.logging.ConsoleHandler
jenkins.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
EOF
启动
docker run --name jenkins --restart=always -d -p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins/log.properties" -v /data/jenkins/jenkins_home:/var/jenkins_home -v /data/jenkins/log.properties:/var/jenkins/log.properties jenkins
说明:
–name jenkins
指定容器名为:jenkins(可选)
–restart=always
docker启动,容器自启动(可选)
-p 8080:8080 -p 50000:50000
指定开放端口(必选)
-e JAVA_OPTS=“-Djava.util.logging.config.file=/var/jenkins/log.properties” -v
指定日志文件(可选)
-v /data/jenkins/jenkins_home:/var/jenkins_home -v /data/jenkins/log.properties:/var/jenkins/log.properties
指定存储位置和日志文件位置(可选,正式环境必选)
注:由于jenkins用户 -uid 1000,所以指定存储位置可能会报错,先给对应存储位置赋予权限,或者在启动命令后面跟 -u 参数 run -u 0
chown -R 1000:1000 /data/jenkins
Nexus
拉取镜像
docker pull sonatype/nexus3
启动
docker run -d -p 8081:8081 --name nexus --restart=always -u root -v /data/nexus/data:/nexus-data sonatype/nexus3
说明:
–name nexus
指定容器名为:nexus(可选)
–restart=always
docker启动,容器自启动(可选)
-p 8081:8081
指定开放端口(必选)
-u root
赋予容器root权限,避免启动失败(必选)
-v /data/nexus/data:/nexus-data
指定存储位置
nexus页面框架形式是以 iframe 作为支撑的,主体框架可以正常加载, 但是内部借口和 iframe 里面的内容以及静态资源全部报错,配置https注意在nginx中加配置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;