系统环境 :CentOS7
1、删除旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh
启动docker
systemctl start docker
测试安装结果
docker -v
1、卸载旧版本
2、安装docker-compase
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
将可执行权限应用于二进制文件
chmod +x /usr/local/bin/docker-compose
测试安装结果
docker-compose -v
----------application.yml的mysql名称注意和docker-compose.yml里的服务名保持一致----------
1、2制作路径 home/docker
3制作路径 home/docker/nginx
FROM java:8 是指含有jdk1.8的镜像
COPY index-0.0.1-SNAPSHOT.jar spring-cas.jar 意思是,将当前目录下面的 index-0.0.1-SNAPSHOT.jar复制命名为spring-cas.jar到容器中,复制后的名字可以自定义。
COPY application.yml prod.yml 复制配置文件到dockers容器中
EXPOSE 8994 意思就是开放内部端口8100,就是与springboot项目application.yml的项目端口号一致。
ENTRYPOINT [“java”,“-jar”,“/spring-cas.jar”,“–spring.config.location=/prod.yml”] 就是制作镜像完成最后执行的命令
# 环境
FROM java:8
# 暴露的端口
# EXPOSE 8080
# 将jar包添加到容器内并改名为app.jar
ADD docker-0.0.1-SNAPSHOT.jar app.jar
#运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
----------compose默认会找docker-compose.yaml和docker-compose.yml----------
images 镜像版本
ports 暴露端口
volumes 挂载
version: "3"
services:
nginx: # 服务名称,用户自定义
image: nginx:latest
ports:
- 9527:9527
volumes:
- /home/pro/workpase/nginx/html:/usr/share/nginx/html
- /home/pro/workpase/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
mysql:
image: mysql:5.7.27
ports:
- 3306:3306
environment: # 指定用户root的密码
- MYSQL_ROOT_PASSWORD=123456
volumes: # 持久化数据库数据
- /home/mysql/conf:/etc/mysql/conf.d
- /home/mysql/data:/var/lib/mysql
app:
image: app:latest #镜像来源 名字跟Dockerfilce保持
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8080:8080
volumes:
- /home/docker:/data
depends_on:
- mysql
#user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9527;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html last; # 别忘了这个哈
index index.html index.htm;
}
#跨域配置
location /api/{
proxy_pass http://192.168.136.132:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
1、打包vue项目dist内文件复制到home/docker/nginx/html
2、jar包复制到docker文件下
docker-compose up -d 开始编排
测试
linux
1、创建文件夹:mkdir
2、创建文件:touch
3、删除文件夹:rm -rf
4、重命名为nginx.conf:mv nginx nginx.conf
5、查看当前位置:pwd
docker
1、查看镜像:docker images
2、查看容器:docker ps
3、查看全部容器:docker ps -a
4、强制删除镜像:docker rmi -f [镜像名]
5、启动镜像:docker run -d -p 8080:8080 --name[运行时的容器名] [要启动的镜像]
6、强制删除所有镜像:docker rmi -f $(docker images -q)
7、启动一个伪终端以交互式的方式进入某个容器:docker exec -it [容器名] bin/bash(使用exit退出后容器不停止运行)
8、保存镜像: docker save -o [保存的文件名称] [要保存的镜像]
9、导入保存的镜像:docker load -i [保存的文件名称]
docker-compose
1、编排:docker-compose up -d
2、重新编排:docker-compose up -d --build
3、停止:docker-compose stop
4、删除容器:docker-compose rm
5、查看镜像:docker-compose images
6、查看运行的容器:docker-compose ps
7、重启compose服务:docker-compose restart
8、查看日志:docker-compose logs -f
1、docker容器正常运行但无法访问
1.最后一行添加:net.ipv4.ip_forward=1
vi /etc/sysctl.conf
2.重启network服务
systemctl restart network
3.查看是否修改成功
sysctl net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”则表示成功了
2、mysql不能远程连接问题
授权法
1.要求用户 ‘username’,使用密码 ‘password’ 可以从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
2.要求仅允许IP为192.168.0.1使用用户名 ‘username’,密码 'password’连接到mysq
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;
3.要求仅允许IP为192.168.0.1使用用户名 ‘username’,密码 'password’连接到mysql服务器的dbname数据库
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'192.168.0.1' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新特权
FLUSH PRIVILEGES;