八、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
十、容器数据卷【数据同步】
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 images docker 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 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