企业应用交付Docker镜像进阶实战笔记(下

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 企业应用交付Docker镜像进阶实战笔记(下

八、Portainer可视化工具


docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --priviledged=true port


访问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

20200729152840558.png

十、容器数据卷【数据同步】


10.1 概述


将应用打包成一个镜像

容器删除后,数据,数据持久化怎么办?

需求:MySql数据可以共享同步到本地

就是讲容器中的目录挂载到Linux中,多个容器也可以


20200729153713902.png


10.2 目录挂载


// 挂载
docker run -it -v 主机目录:容器目录 xxxxx  /bin/bash
// 查看容器信息
docker inspect 容器ID


20200729154214161.png

容器内外的目录数据 同步更新


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

20200729162338885.png

本地同步的数据,数据库数据同步:

20200729162431863.png

10.4 匿名挂载


// 会在本机自动创建一个目录进行同步
docker run -d -P --name nginx01 -v /etc/nginx  nginx
// 查看挂载情况
docker volume ls
// 查看卷
docker volume inspect juming-nginx


20200729163912861.png

20200729164005983.png

十一、Dockerfile构建镜像【命令脚本】


11.1 命令

FROM centos
VOLUNE ["volume01","volume02"]
CMD ECHO "====END===="
CMD /bin/bash
docker build -f /home/volume-test/dockerfil1 -t /wang/centos .

20200730082642711.png


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  .


20200730084604679.png


3.测试运行


docker images

20200730084723163.png

4.运行

docker run  -it  mycentos:0.1

20200730085124121.png


11.3 构建Tomcat镜像


1.准备工作: tomcat 压缩包 jdk压缩包


vim Dockerfile


20200730091548114.png


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 注册账号


https://hub.docker.com/


12.2 登录

20200730094238802.png

12.3 提交镜像


docker images
docker  push  wyn365/mytomcat01:1.0


20200730095005400.png

十三、发布到阿里云镜像服务中


13.1 登录阿里云控制台


13.2 找到镜像服务


20200730095220367.png


13.3 创建命名空间


20200730095314149.png


13.4 创建镜像仓库

20200730095641272.png


20200730095914706.png


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 images
REPOSITORY                                                         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



20200730102657157.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
937 29
|
29天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
98 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
2月前
|
缓存 监控 持续交付
|
20天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
25天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
112 2
|
27天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
68 1
|
7天前
|
JavaScript Linux 持续交付
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
31 0
|
28天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
1月前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
60 1
|
2月前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
981 2