企业应用交付Docker镜像进阶实战笔记
一、准备工作
1.1 查看内核
// 保证内核 3.10 以上 uname -r
1.2 卸载旧版docker
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
// docker默认工作路径 rm -rf /var/lib/docker
1.3 安装依赖
yum -y install yum-utils
1.4 设置国内阿里云镜像仓库
yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.5 更新yum
yum makecache fast
1.6 安装Docker
// docker-ce 社区版本 docker-ee 企业版 yum install docker-ce docker-ce-cli containerd.io
1.7 启动Docker测试
// 启动 systemctl start docker // 查看信息 docker version // 测试helloword docker run helloword
1.8 查看镜像
docker images
二、阿里云镜像加速
2.1 登录阿里云账号
2.2 镜像加速
2.3 配置加速
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://e5yl33pf.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
三、Docker命令
docker info docker 命令 --help
3.1 镜像命令
// 查看本地所有的镜像 docker images// 搜索 镜像 docker search mysql // 下载默认最新的镜像 分层下载Docker的核心 文件系统 docker pull mysql // 下载指定版本的镜像 docker pull mysql:5.7 // 删除镜像 docker rmi -f imageID // 删除所有镜像 docker rmi -f $(docker images -aq)
四、容器命令
4.1 常用命令
docker run [可选参数] imageid --name="名字" tomcat01 tomcat02 -d 后台方式运行 -it 进入容器交互运行 -p 主机端口:容器端口 指定容器端口
4.2 运行centos镜像
docker pull centos docker run -it centos /bin/bash
// 列出所有运行的Docker docker ps // 删除容器 docker rm 容器ID // 强制删除所有,包括运行的容器 docker rm -f $(docker ps -aq)
4.3 Docker容器启动停止
docker start 容器ID docker restart 容器ID docker stop 容器ID docker kill 容器ID
4.4 日志,元数据,进程
// 后台运行 docker run -d 镜像名/镜像ID // 查看日志 docker logs -t -f --tail 10 容器ID // 进程信息 docker top 容器ID // 元数据 docker inspect 容器ID
4.5 进入运行容器修改配置
// 1:进入运行容器 docker exec it 容器ID /bin/bash // 2.进入正在运行容器 docker attach 容器ID /bin/bash
4.6 拷贝命令
// 从容器内部拷贝到主机 // 1.进去容器 docker attach 容器ID // 2.需要拷贝的内容 touch test.txt // 3.退出容器 exit // 4. 拷贝到主机 docker cp 容器ID:/home/test.txt /home
五、Docker部署Nginx
docker search nginx docker pull nginx docker imagesdocker run -d --name nginx01 -p:3344:80 nginx docker ps
// 进入容器才可以修改文件配置 重启!!! docker exec -it nginx01 /bin/bash -v 数据卷的技术可以解决
六、Docker部署Tomcat
docker pull tomcat docker run -d -p 8081:8080 --name tomcat01 tomcat
七、Docker部署ES+Kibana
7.1 部署ElasticSearch 7.6.2
// es 端口多 // es 耗内存 // es 的数据一般要放置到安全目录 挂载 docker run -d --name elasticsearch01 -p 9200:9200 -e "discovery.type=single-node" elasticsearch:7.6.2
7.2 【解决卡顿 内存消耗问题】
ES默认启动1G内存,我的阿里云是1核2G内存,这是原因。
// 查看cpu docker stats
// 关闭 docker stop 容器ID // 增加内存限制 docker run -d --name elasticsearch02 -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
问题解决!!!
7.3 Docker部署Kibana
问题思考?
可以通过localhost 链接ES吗??
八、Portainer可视化工具
docker run -d -p 8088:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock --priviledged=true portainer/portainer
访问http://localhost:8088
九、Commit镜像【保存当前状态或者打包】
// 提交容器成为一个新的副本 docker commit docker commit -m="提交的描述信息" -a="作者" 容器ID 目标镜像名:[tag]
9.1 测试
// 启动Tomcat docker run -it -p 8080:8080 tomcat // 进入容器 docker exec -it 容器ID /bin/bash cd /usr/local/tomcat cp -r webapps.dist/* webapps // 现在这个镜像我修改了 想要提交 docker commit -a="古力娜扎" -m="add webapps app" 容器ID tomcat02:1.0
十、容器数据卷【数据同步】
10.1 概述
将应用打包成一个镜像
容器删除后,数据,数据持久化怎么办?
需求:MySql数据可以共享同步到本地
就是讲容器中的目录挂载到Linux中,多个容器也可以
10.2 目录挂载
// 挂载 docker run -it -v 主机目录:容器目录 xxxxx /bin/bash // 查看容器信息 docker inspect 容器ID
容器内外的目录数据 同步更新
10.3 Docker实现Mysql数据同步
如何实现数据持久化,数据同步?
docker pull mysql:5.7 docker images// 运行并挂载配置目录 数据目录 密码 docker run -d -p 3307:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
本地同步的数据,数据库数据同步:
10.4 匿名挂载
// 会在本机自动创建一个目录进行同步 docker run -d -P --name nginx01 -v /etc/nginx nginx // 查看挂载情况 docker volume ls // 查看卷 docker volume inspect juming-nginx
十一、Dockerfile构建镜像【命令脚本】
11.1 命令
FROM centos VOLUNE ["volume01","volume02"] CMD ECHO "====END====" CMD /bin/bash
docker build -f /home/volume-test/dockerfil1 -t /wang/centos .
11.2 构建自己的Centos镜像
1. 构建文件
mkdir /home/dockerfile
vim mydockerfile-centos
FROM centos MAINTAINER wang<123456789@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "===end===" CMD /bin/bash
2.构建
docker build -f mydockerfile-centos -t mycentos:0.1 .
3.测试运行
docker images
4.运行
docker run -it mycentos:0.1
11.3 构建Tomcat镜像
1.准备工作: tomcat 压缩包 jdk压缩包
vim Dockerfile
FROM centos MAINTAINER wang<123456789@qq.com> COPY readme.txt /usr/local/readme.txt ADD jdk-8ull-linux-x64-tar.gz /usr/local/ ADD apache-tomcat-9.0.22.tar.gz /usr/local/ ENV MYPATH /usr/local WORKDIR $MYPATH ENV JAVA_HOME /usr/local/jdk1.8.0_11 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME//lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22/ ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22/ ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin RUN yum -y install vim EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out
2.构建镜像
docker build -t mytomcat01 .
3.启动
docker run -d -p 8081:8080 --name mytomcat01 \ -v /home/wang/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test \ -v /home/wang/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.22/logs
4.发布项目
卷挂载,在本机进行操作就可以了。
十二、发布镜像到DockerHub
12.1 注册账号
12.2 登录
12.3 提交镜像
docker imagesdocker push wyn365/mytomcat01:1.0
十三、发布到阿里云镜像服务中
13.1 登录阿里云控制台
13.2 找到镜像服务
13.3 创建命名空间
13.4 创建镜像仓库
13.5 推送
1. 登录阿里云Docker Registry
$ sudo docker login --username=算法算法算法 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号]
3. 将镜像推送到Registry
$ sudo docker login --username=算法算法算法 registry.cn-hangzhou.aliyuncs.com$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号] $ sudo docker push registry.cn-hangzhou.aliyuncs.com/wyn-365/mydocker:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB $ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用"docker images"命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。
$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
- 轻量级Java EE 企业应用实战-JSP笔记(二)-JSP对象介绍
- 【Docker】企业进阶实战Docker网络【太神奇啦】
- 【Docker】企业进阶实战【Docker-Compose/Stack/Secret/Swarm/Config】
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- 《Spring 3.x 企业应用开发实战》学习笔记 第四章
- Spring3企业应用开发实战笔记-->MySQL安装
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- 《Spring 3.x 企业应用开发实战》学习笔记 第四章
- Spring 入门实例 简易登录系统(精通Spring+4.x++企业应用开发实战 学习笔记一)
- 最新《 从Docker到Kubernetes企业应用实战课程》(完整)
- 视频教程-Docker技术进阶与应用实战视频教程-Docker/K8S
- 精通Spring 4.x企业应用开发实战——笔记(二)
- 学习Spring3.X 企业应用开发实战笔记(一)
- 视频教程-Docker 企业应用实战系列课程【精编新版】-Docker/K8S
- 轻量级Java EE 企业应用实战JSP笔记(一)-JSP语法
- CentOS学习笔记 - 9. docker maven编译基于gofabric8的java应用镜像
- 轻量级Java EE 企业应用实战-JSP笔记(三)-servlet
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- 实战docker,编写Dockerfile定制tomcat镜像,实现web应用在线部署
- 从Docker到Kubernetes企业应用实战