环境
Ubuntu 16.04
注意:我这里docker,mysql等都是安装最新版如果需要则在docker官网搜索相应版本安装
docker搜索对应网址:Docker Hub
步骤
1.更新apt包
注:apt用于软件安装的指令
sudo apt-get update
安装apt依赖 用于通过https获取仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加docker 官方GPG密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
设置稳定版仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \ $(lsb_release -cs) \ stable"
2.安装docker
获取最新的docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
查看docker,顺便看看docker版本
docker --version
2.1 docker常用命令
查看是否安装成功
举例是mysql 如果是其他 将mysql换成你下载的镜像
docker images 容器ID
效果如下就是安装成功
查看运行的容器
docker ps
查看所有容器(运行与没运行)根据status 判断是否运行
docker ps -a
停止运行容器
先找到容器运行的ID
docker ps -a
停止容器
docker stop 容器ID
删除容器
docker rm 容器id
删除镜像
删除镜像前先找到镜像id
docker images
删除镜像
docker rmi 容器id|容器名称
获取镜像ip
docker inspect 容器name or id | grep IPAddress
docker run 命令解析
-e 设置环境变量
-p 外部端口:内部端口
--name 给容器定义一个名字
-v 系统路径:docker 路径
就是将磁盘的文件挂载到容器相对应 使用挂载之前先检查对应文件夹是否存在,如果加上挂载运行报错可以先去除挂载的运行,然后再运行 docker cp 将 容器中的文件在系统中生成
docker cp 容器id or 容器name : 容器中路径 系统路径
例如:
docker cp nginx:/var/log/nginx /usr/local/nginx/logs
如果docker cp 无效 一般是文件位置不对 可以进入容器内部查看文件地址
//进入容器
docker exec -it 容器id or 容器名称 ls
3.docker安装mysql
docker pull mysql:latest
运行mysql 并且设置默认密码
docker run -itd --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai \
-v /usr/local/mysql/conf:/etc/mysql \ //将配置文件夹挂载到主机
-v /usr/local/mysql/log:/var/log/mysql \ //将日志文件夹挂载到主机
-v /usr/local/mysql/data:/var/lib/mysql/ \ //将配置文件夹挂载到主机
mysql
4.docker 安装redis
docker pull redis:latest
运行redis
docker run -itd --name redis \
-p 6379:6379 \
-v /usr/local/redis/data:/data \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
redis
5.docker 安装rabbitmq
docker pull rabbitmq:latest
运行rabbit
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 -e TZ=Asia/Shanghai rabbitmq
6.docker安装nginx
docker pull nginx:latest
运行nginx 挂载config文件 config文件参考网址:https://www.cnblogs.com/ausion/p/16457365.html
docker run --name nginx -p 80:80 \
-v /usr/local/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/cert:/etc/nginx/cert \
-e TZ=Asia/Shanghai \
-d nginx
7.部署web
7.1我一般将web站点放入/usr/local/web/admin文件下
所以我会在/usr/local文件下创建 /web/admin文件夹然后创建一个Dockerfile文件 文件内容如下
FROM java:8
ADD youyue-admin.jar app.jar
EXPOSE 8098
ENTRYPOINT ["java","-jar","app.jar","--spring.profiles.active=prod"]
from 是基于java8环境
Expose 是端口
--spring.profiles.active=prod 是我需要执行环境文件 如果不需要切换就删除
7.2 将jar包放入文件下,最后截图如下:
注:执行命令时需要注意文件位置是否正确
7.3 构建jar 镜像
docker build -t admin .
查看镜像是否构建成功
docker images admin
运行镜像
docker run -d -p 8098:8098 \
-v /usr/local/web/admin/file:/usr/local/web/admin/file \ //这个是我生成的项目文件如不需要可以去掉
-e TZ=Asia/Shanghai \
admin
查看镜像是否运行
docker ps
最后附一张我构建好运行的容器图