数据卷挂载
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
- 编写dockerFile
- docker build成为一个镜像
- docker run 运行镜像
- 上传镜像
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