六、微服务学习笔记-docker容器
一、docker优势
沙箱,进程间隔离
1、更快的启动时间
2、一致环境
3、持续交付和部署
(1)持续集成(Continuous integration)
(2)持续部署(Continuous Delivery/Deployment)
4、更轻松的迁移
5、更轻松的维护和扩展
二、传统的开发部署
开发环境、测试环境、预发布环境(生产演练)、生产环境
三、使用APT安装
#更新数据源 apt-get update #安装所需依赖 apt-get -y install apt-transport-https ca-certificates curl software-properties-common #安装GPG证书(验证软件来源) curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #新增数据源 add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
cd ect/apt/sources.list 查看数据源
lsb_release -a 查看变量
lsb_release -cs=codename bionic
#更新并安装
apt-get update && apt-get install -y docker-ce
#查看docker版本
docker --version
四、配置阿里镜像
一、阿里镜像加速器
二、配置daemon文件
/etc/docker/daemon.json
#daemon.json内容,直接复制运行就可以了 tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://XXXXXXX.mirror.aliyuncs.com"] } EOF #重启 Docker systemctl daemon-reload systemctl restart docker
#验证配置是否成功,查看镜像地址
docker info
三、docker常用命令
#获取软件镜像(版本号可以不填) docker pull tomcat:版本号 #查看软件安装状态 docker images
docker images -a
#运行软件
docker run -p 宿主端口:容器端口 tomcat
守护态运行:docker run -p 8080:8080 -d tomcat
docker run -p 8080:8080 --name 容器名字 -d 镜像名字
#镜像体积
docker system df
#删除镜像(标签)
docker rmi nginx:标签
#查看运行容器
docker ps
#查看所有运行容器
docker ps -a
#停止运行容器
docker stop 容器ID
#启动容器
docker start 容器ID
#删除容器
docker rm 容器ID
#强制删除容器
docker rm -f 容器ID
#交互命令
docker exec -it 容器ID/name /bin/bash
#删除所有容器
docker container prune
#清楚所有虚悬镜像
docker image prune
#查看容器运行日志
docker logs 容器ID
#查看容器网络
docker network ls
镜像(类) 容器(对象,镜像实例)
tomcat xxx 基于 tomcat 镜像
中间层镜像(不能删除)
虚悬镜像(可以删除)
宿主机端口映射到容器端口,外网才能访问到容器的端口
四、dockerfile 镜像定制
mkdir docker
mkdir myweb
vi dockerfile
vi index.jsp
docker build -t myweb .
.
1、在当前目录找到Dockerfile文件
2、指定我Dockerfile的上下文目录并打包->Docker Server
dockerfile内容:
FROM tomcat:latest
#移动文件命令
RUN mv webapps webapps2
RUN mv webapps.dist/ webapps
#执行删除命令
RUN rm -fr /usr/local/tomcat/webapps/Root
#复制到指定目录
COPY myweb.tar.gz /usr/local/tomcat/webapps/Root
#指定工作目录
WORKDIR /usr/local/tomcat/webapps/Root
#解压并删除
RUN tar -zxvf myweb.tar.gz \
&& rm -fr myweb.tar.gz
#回到tomcat目录
WORKDIR /usr/local/tomcat
#暴露端口
EXPOSE 8080
注:当前目录,不能使用上一级目录,如果需要分类在当前文件夹下创建文件夹
Dockerfile文件命令:
ADD:复制解压
CMD脚本:只允许用一次,以最后一次CMD为准
CMD ./startup.sh
ENTRYPOINT :跟CMD命令一样,只允许用一次
EVN:环境变量
EVN MYSQL_VERSION 5.7.22
EXPOSE:暴露端口
EXPOSE 8080 3306
WORKDIR:像cd,但不是
关键字:OpenStack 、c/s、守护进程
五、遇到问题
1、启动tomcat成功404
原因:由于原先tomcat目录下webapps是为空的,需要现将之前的webapps删除,将webapps.dist重命名为webapps即可解决。
命令如下:
#容器交互命令 docker exec -it 容器ID /bin/bash #删除webapps目录 rm -rf webapps #重命名webapps.dist目录 mv webapps.dist/ webapps
参考文章:https://blog.csdn.net/qq_40891009/article/details/103898876
2、打包项目镜像,启动镜像时出现404界面
原因:还是使用了tomcat镜像,镜像需要修改webapps目录
解决办法:通过将dockerfile文件中移动webapps.dist文件到webapps目录中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY