Docker安装
1.利用VMware Workstation软件安装Ubuntu虚拟机
2. 卸载旧版本Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
3.获取软件最新源
sudo apt-get update
4.安装apt依赖包
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
5.安装证书
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
6.设置仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
7.更新apt包索引
sudo apt-get update
8.安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
9.测试Docker
sudo docker run hello-world
sudo docker -v
sudo docker images
10.配置Docker镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2tc4kxop.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
编译打包springboot应用后通过docker在宿主机和外部机器访问容器
1.在本地测试springboot项目
2.将springboot项目打包
3.检测springboot项目能否独立运行
4.将springboot jar包传入虚拟机
设置共享文件夹
设置挂载
实现共享
5.将springboot jar包传至宿主机的根目录
mv 文件名/目录名 位置 #移动目录或文件
6.创建docker-files目录,并把springboot jar包传进去
mkdir 目录名 #创建工作目录
7.定义dockerfile
安装vim编辑器
sudo apt-get install vim
用vim编辑器编辑dockerfile
vim 文件名 #编辑文件
- 进入vim编辑器后按i进入输入模式,输入完按esc,再按:wq保存退出
- FROM 定义父镜像
- MAINTAINER 定义作者信息
- ADD 添加文件
- CMD 定义容器启动执行的命令
- RUN 执行命令
- WORKDIR 定义默认工作目录
8.根据dockerfile制作镜像
sudo docker build -f ./springboot_dockerfile -t shin . #-f 指定dockerfile文件路径 -t 指定新的镜像名称,版本
- 注意不要忘记docker build语句最后的空格点,用于指定路径
9.启动容器的同时设置端口映射
sudo docker run -id -p 8888:8080 shin
-将宿主机的8888端口映射到容器的8080端口,这样外部机器就可以通过访问宿主机间接访问容器
10.访问
在外部机器通过访问"宿主机ip:8888"端口映射到"shin容器ip:8080"间接访问shin容器
- 即外部机器不能直接访问容器,只能通过访问宿主机,端口映射,间接访问容器。
在宿主机通过访问"shin容器ip:8080"访问shin容器
sudo docker inspect 容器Id
-通过查询容器信息,查询容器的IP地址
使用docker compose编排springboot+nginx项目,然后在宿主机和外部机器访问容器
相关知识
Docker服务编排
- 微服务架构的应用系统中一般包括若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启动停止
- 维护的工作量会很大
- 要从Dockerfile build image 或者dockerhub拉取image
- 要创建多个container
- 要管理这些container(启动停止删除)
- 服务编排即按照一定的业务规则批量管理容器
Docker Compose
- Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动,停止。使用步骤
- 利用Dockerfile运行环境镜像
- 使用docker-compose.yml定义组成应用的各服务
- 运行docker-compose up启动应用
1.安装Docker-compose
- 根据官方文档安装docker时,同时安装了docker-compose。
docker compose version
2.部署nginx
拉取nginx映射
docker pull nginx:1.18
设置目录
- 在/root目录下创建nginx目录用于存储nginx数据信息
- 在~/nginx/conf/下创建nginx.conf文件,设置配置
设置配置
创建容器,设置端口映射、目录挂载
-
参数说明:
- -p 80:80:将宿主机的80端口映射到容器的80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将宿主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- -v $PWD/logs:/var/log/nginx:将宿主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
创建html文件,用于测试访问
在外部机器访问
3.创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
4.编写 docker-compose.yml 文件
- yml文件通过缩进区分子父集
- version:版本
- services:要启动哪些容器
- image:镜像
- ports:端口映射
- links:可以通过访问当前容器间接访问到另一个容器
- volumes:目录挂载
- expose:对外暴露的端口
5.设置nginx反向代理
创建./nginx/conf.d目录
进入./nginx/conf.d目录 编写nginx配置文件
- listen:监听的端口
- access_log off:关掉日志
- proxy_pass:配置反向代理,当访问80端口时,就会访问到"shin容器ip:8080"
6.在~/docker-compose 目录下 使用docker-compose 启动容器
sudo docker-compose up
- 依次创建了shin,nginx容器
7.访问
在外部机器通过访问"宿主机ip:80"端口映射到"nginx容器ip:80"端口映射到"shin容器ip:8080"间接访问shin容器
在宿主机通过访问"nginx容器ip:80"端口映射到"shin容器ip:8080"间接访问shin容器
sudo docker inspect 容器Id
-通过查询nginx容器信息,查询容器的IP地址