docker 学习-卷挂载与部署,发布

本文详细介绍了如何使用Docker进行数据卷挂载,实现容器内外数据的同步,包括安装MySQL并解决不同版本冲突问题。还探讨了通过DockerFile创建自定义镜像的过程,并展示了如何构建Tomcat镜像,最后讲解了如何将镜像推送到Docker Hub和阿里云镜像仓库。
摘要由CSDN通过智能技术生成

数据卷挂载

 docker run -it -v /media/shj:/home centos /bin/bash

在linux下的/media/shj 目录和centos的/home 挂载

 docker inspect 26b22f2d2a1e
 

 容器内外实现数据互联

在容器内修改, linux上也会修改

linux修改,即使容器关闭,依然会同步

安装mysql

docker pull mysql:5.7

官方文档

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

注意: 如果安装过最新版的mysql, 会一直启动失败,因为有mysql8的数据,mysql5.7 启动不了

需要将mysql8删除,然后再运行5.7

启动并挂载

docker run -d -p 3310:3306 -v /media/mysql/conf:/etc/mysql/conf -v /media/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql --name mysql01 mysql:5.7

可以远程链接到即可

多个容器间挂载

--volumes-from 

docker run -d -p 3315:3306 -v /media/mysql/conf:/etc/mysql/conf -v /media/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql --name mysql03 --volumes-from mysql01  mysql:5.7

DockerFile

  1. 编写dockerFile
  2. docker build成为一个镜像
  3. docker run 运行镜像
  4. 上传镜像 

dockerFile命令

1 都是大写的

2 # 标识注释

From  #基础镜像
MAINTAINER # 作者,一般是名称+邮箱
RUN   # 构建时需要执行的命令
ADD   # 添加内容
WORKDIR # 工作目录
VOLUME # 卷
EXPOSE  # 端口
CMD # 指定容器启动时运行的命令,只有最后一个生效,可被替换
ENTRYPOINT # 指定容器启动时运行的命令, 可追加
ONBUILD  # 当构建一个被继承DockerFile时,会执行,属于触发指令
COPY #类似ADD,将文件拷贝到镜像中
ENV #构建时,设置环境变量

编写一个DockerFile

 vim shjDockerFileCentos


FROM centos

MAINTAINER  shj<15893165@163.com>
#设置环境变量
ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 9999

CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash

构建

docker build -f shjDockerFileCentos -t mycentos:0.1 .

 

 

可以通过docker history 查看构建历史

生成tomcat镜像

需要准备tomcat,jdk

编写Dockerfile 

建议使用官方命名 Dockerfile

vim Dockerfile

FROM centos
MAINTAINER  shj<15893165@163.com>
COPY readme.txt /media/tomcat/readme.txt

ADD jdk-8u301-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.52.tar.gz /usr/local/

RUN yum -y install vim


ENV MYPATH /usr/local
WORKDIR  $MYPATH


ENV JAVA_HOME /usr/local/jdk1.8.0_301
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.52
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.52
ENV PATH $PATH;$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

# 启动tomcat
CMD /usr/local/apache-tomcat-9.0.52/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.52/bin/logs/catalina.out

ADD  添加压缩包会直接解压缩

构建

docker build -t mytomcat .
 

启动

 docker run -d -p 5556:8080 --name shjtomcat -v /media/tomcat/test:/usr/local/apache-tomcat-9.0.52/webapps/test -v /media/tomcat/logs/:/usr/local/apache-tomcat-9.0.52/logs mytomcat

 curl localhost:5556

可以访问到

远程也可以访问到

可以直接修改本地的test文件,就可以实现镜像的发布

[root@-03 tomcat]# clear
[root@-03 tomcat]# cd test
[root@-03 test]# ls
[root@-03 test]# mkdir WEB-INF
[root@-03 test]# cd WEB-INF/
[root@-03 WEB-INF]# vim web.xml
[root@-03 tomcat]# cd test
[root@-03 test]# vim index.jsp

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello shj</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("shj -web-log " );
%>
</body>
</html>

访问test

查看日志

tail -f catalina.out
 

发布自己的镜像

1 登录https://hub.docker.com/ 注册账号

2 使用docker login 登录


[root@tanhu-03 WEB-INF]# docker login -u dockershj86
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

3 docker push 

[root@tanhu-03 tomcat]# docker push shj/shjtomcat:1.0
The push refers to repository [docker.io/shj/shjtomcat]
df082fd0db31: Preparing
55df31d48e74: Preparing
b88cefac6311: Preparing
3b846b695811: Preparing
2653d992f4ef: Preparing
denied: requested access to the resource is denied

push 失败,刚开始以为可能是国外网站,没法上传,后来发现是tag不对, 

docker push dockershj86/shj:tagname

格式需要 用户名/仓库名:tag

 docker tag 7d807ac1d9b9 dockershj86/shj:1.0

docker push dockershj86/shj:1.0

即可成功

上传到阿里云镜像

找到阿里云的镜像仓库服务

创建命名空间

创建镜像仓库, 选择本地仓库

 

 

[root@-03 tomcat]# docker login --username=shj registry.cn-beijing.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

 上传镜像一直失败 

原因是名称格式的问题, 将镜像的tag修改为对应的格式即可

aliyun

 docker tag 7d807ac1d9b9 registry.cn-beijing.aliyuncs.com/tanhukeji/test:1.0
[root@-03 tomcat]# docker push registry.cn-beijing.aliyuncs.com/tanhukeji/test:1.0
The push refers to repository [registry.cn-beijing.aliyuncs.com/tanhukeji/test]
df082fd0db31: Pushed
55df31d48e74: Pushed
b88cefac6311: Pushed
3b846b695811: Pushed
2653d992f4ef: Pushed
1.0: digest: sha256:a432d733a500e2b9e88d881b22419b2ed630530d91f3a922ad28729990b057ca size: 1373

hub.docker

将镜像标签修改为  dockershj86/shj:1.0

docker push dockershj86/shj:1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hero_孙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值