标签:区别 docke header png vim 仓库 tools min oca
当你发现自己的才华撑不起你的野心是,你就应该静下心来学习了
Docker是Docker.inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目.整个项目基于GO语言开发,通过分层镜像标准化和内核虚拟化技术,Docker使得开发者和运维工程师可以以统一的方式跨平台发布应用,并以几乎没有额外开销的情况下提供资源隔离的应用运行环境
轻量级虚拟机
? 每个容器共享宿主主机的内核 秒级启动
传统虚拟机
? 每台虚拟机拥有一个独立的内核 分钟级别
仓库(registry) --> Repository --> 镜像(按版本区分)
yum库 --> 不容repo --> 软件(按名称区分)
docker仓库:
? 共有 docker.io
国内:
? ali / 网易蜂巢 / daocloud
添加daocloud镜像
添加一个主机!
按照提示配置
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
docker是一个cs结构的系统,docker守护进程运行在主机上,然后通过socket连接从客户端访问,客户端接收命令并管理运行在主机上的寄存器, 容器,是一个运行时环境,就是一个集装箱
主要就是做数据持久化和数据共享,容器关闭后数据还可以继续使用
docker run -it -v /宿主机绝对路径目录:/容器内部目录 镜像名
#例子:
docker run -it -v /myDataVolume:/dataVolumeContainer ubuntu
docker inspect containerid #以json的方式查看docker信息
docker attach containerId #重新进入容器
# 带权限的命令
docker run -it -v /宿主绝对路径:/容器内目录:ro 镜像名 # :ro 只读命令
vim /docker/Dockerfile
_______________________________________________________
# volume test
FROM ubuntu
#VOLUME 用来给镜像添加一个或者多个数据卷
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,-------success1"
CMD /bin/bash
________________________________________________________
docker build /docker/Dockerfile wang/ubuntu . #生成新的容器
docker run -it wang/ubuntu /bin/bash # 创建并进入容器
#如果不指定主机的映射地址默认会在下面路径下
/var/lib/docker/volumes/8cfc9db73a5f24151e2501b594a95a4801e14db76b74c8d69ef4411c6e728914/_data
命名的容器挂载数据卷,其它容器通过挂载这个父容器实现数据共享,挂载数据卷的容器称为数据卷容器
容器间传递共享(volumes-from)
docker run -it --name dc02 --volumes-from dc01 wang/ubuntu #dc02继承dc01
容器间配置信息的传递,数据卷的生命周期一直持续到没有容器为止
dockerfile文件源码
FROM scratch # 类似于java中的obejct 源镜像
ADD centos-7-x86_64-docker.tar.xz /
# 说明
LABEL org.label-schema.schema-version="1.0" org.label-schema.name="CentOS Base Image" org.label-schema.vendor="CentOS" org.label-schema.license="GPLv2" org.label-schema.build-date="20191001"
# 命令
CMD ["/bin/bash"]
保留字指令
都必须为大写字母且后面要跟随至少一个参数#
表示保留字 | 作用 |
---|---|
FROM | 基础镜像,当前新镜像是基于哪个镜像的 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 容器构建的时需要运行的命令 |
EXPOSE | 暴露出该镜像的端口号 |
WORKDIR | 指定工作目录,登录时进入哪个文件夹 |
ENV | 用来在构建镜像是设置环境变量 |
ADD | 添加文件 加解压缩 |
COPY | 类似ADD只是复制作用 |
VOLUME | 指定映射 保存数据和持久化 |
CMD | 指定一个容器启动时要运行的命令,dockerfile可以指定多个cmd但只有最后一个生效 |
ENTRYPOINT | 指定一个容器启动时要运行的命令 |
OBBUILD | 触发器,当构建一个被继承的dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发 |
Docker Hub 中99% 的镜像都是通过base镜像中安装和配置需要的软件构建出来的
编写
FROM centos # 继承ubuntu镜像
MAINTAINER 366909600@163.com # 作者的信息 邮箱
ENV MYPATH /usr/local # 定义环境变量
WORKDIR $MYPATH # 指定运行容器是进入指定的文件夹
RUN yum -y install vim # 构建时安装vim
RUN yum -y install net-tools
EXPOSE 80 # 对外暴露的端口
CMD echo $MYPATH
CMD echo "success ......... ok"
CMD /bin/bash
------ubuntu--------
FROM ubuntu
MAINTAINER 366909600@163.com
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN apt-get update
RUN apt-get install -y vim
RUN apt-get install -y net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "success ......... ok"
CMD /bin/bash
构建
docker build -f /docker/Dockerfile -t myubuntu:1.1 . #‘.‘ 代表当前目录下 1.1 是版本号
运行
docker run -it myubuntu:1.1 /bin/bash
列出镜像的变更历史
docker history b263356c5274镜像id #列出该镜像的历史层级
mkdir -p /docker/tomcat9 && touch c.txt
拷贝jdk和tomcat的压缩包到tomcat9目录
在tomcat9目录创建Dockerfile
# 自定义tomcat9镜像
# 继承centos
FROM centos
MAINTAINER 366909600@163.com
# 把宿主机上下文的c.txt拷贝到容器的/usr/local路径下
COPY c.txt /usr/local/cincontainer.txt
# 将jdk与tomcat添加解压到容器中的/usr/local
ADD apache-tomcat-9.0.34.tar.gz /usr/local
ADD jdk-8u221-linux-x64.tar.gz /usr/local
# 安装vim编辑器
RUN yum -y install vim
# 设置工作访问时的落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置JDK与tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.34
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.34
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin
# 容器运行时监听的端口
EXPOSE 8080
# 启动时运行tomcat
#ENTRYPOINT ["$CATALINA_HOME/bin/startup.sh"]
#CMD ["$CATALINA_HOME/bin/catalina.sh","run"]
CMD $CATALINA_HOME/bin/startup.sh && tail -f $CATALINA_HOME/logs/catalina.out
docker build -f /docker/tomcat9/Dockerfile -t mytomcat9 .
docker run -d -p 9080:8080 --name myt9 -v /docker/tomcat9/test:/usr/local/apache-tomcat-9.0.34/webapps/test -v /docker/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.34/logs --privileged=true mytomcat9
-d 后台启动
-p 映射外部:内部端口
--name 自定义容器名称
-v 添加容器卷 宿主机目录:容器目录
--privileged=true 开启写权限
验证
结合容器卷将测试的web服务test发布
标签:区别 docke header png vim 仓库 tools min oca
原文地址:https://www.cnblogs.com/smallwolf/p/12769311.html