安装docker
安装yum-utils
yum install -y yum-utils
设置docker下载仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
yum install -y docker-ce docker-ce-cli containerd.io
查看docker版本是否安装成功
docker version
启动docker
systemctl start docker
开机自启动
systemctl enable docker
ubuntu系统普通用户添加docker权限(执行以后命令不用添加sudo)
sudo chmod a+rw /var/run/docker.sock
配置docker镜像仓库(这里使用腾讯的仓库)
打开仓库配置文件
vim /etc/docker/daemon.json
设置仓库地址
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
刷新配置文件(不知道为什么有时候刷新没有效果我一般在执行一次重启)
systemctl daemon-reload
重启docker
systemctl restart docker
查看仓库地址是否设置成功
docker info
拉取java环境
docker pull java:8
docker pull tomcat:8
docker pull nginx
docker pull redis
docker pull mysql:5.7
java环境
Dockfile文件(只需要改文件名字和端口)
FROM java:8
VOLUME /tmp
ADD jar包名字.jar app.jar
#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN bash -c 'touch /app.jar'
#端口
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app.jar" ]
打包成镜像(将jar文件和Dockerfile放在同一文件夹,注意命令最后的点)
docker build -t 镜像名称 .
运行命令
如果有文件上传注意使用-v挂载文件夹
/usr/local/docker/java/uploadPath是外部地址外部可以固定地址
/home/uploadPath是镜像内部的地址这个按照代码中的位置修改
docker run -d --name 运行名称 -p 8080:8080 -v /usr/local/docker/java/uploadPath:/home/uploadPath 镜像名称
查看运行日志
docker logs -f 运行名称
mysql环境
新建文件夹/usr/local/docker/mysql/data放数据库文件
新建文件夹/usr/local/docker/mysql/conf放配置文件
配置文件mysqld.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
default-time-zone='+08:00'
lower_case_table_names = 1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
symbolic-links=0
运行命令
docker run -d --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf mysql:5.7
开启远程访问
进入镜像
docker exec -it mysql /bin/bash
登录mysql
mysql -uroot -p密码
开启远程访问
grant all privileges on *.* to root@'%' identified by "密码";
刷新配置
flush privileges;
退出mysql
exit;
退出镜像
exit
redis环境
运行命令
docker run -d --name redis --restart=always -p 6379:6379 redis
nginx环境
新建文件夹/usr/local/docker/nginx/conf放主配置文件
新建文件夹/usr/local/docker/nginx/conf/conf.d放次配置文件
新建文件夹/usr/local/docker/nginx/html放前端文件
新建文件夹/usr/local/docker/nginx/logs放日志文件
新建文件夹/usr/local/docker/nginx/ssl放证书文件
主配置文件nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
次配置文件http
server {
listen 80;
listen [::]:80;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
次配置文件https
server {
listen 443 ssl;
server_name www.域名.com;
root /usr/share/nginx/html/m;
index index.html Index.html;
ssl_certificate /etc/nginx/cert/www.域名.com.pem;
ssl_certificate_key /etc/nginx/cert/www.域名.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html/m;
index index.html Index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#设置http自动跳转https
server {
listen 80;
server_name www.域名.com; #需要将yourdomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html Index.html;
}
}
运行命令
docker run -d -p 80:80 -p 443:443 --restart=always --name nginx -v /usr/local/docker/nginx/html:/usr/share/nginx/html -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /usr/local/docker/nginx/ssl:/etc/nginx/cert -v /usr/local/docker/nginx/logs:/var/log/nginx nginx
tomcat环境
新建文件夹/usr/local/docker/tomcat/webapps放war文件
运行命令
docker run -d --name tomcat -p 8080:8080 -v /usr/local/docker/tomcat/webapps/:/usr/local/tomcat/webapps/ tomcat:8