docker 学习第一节课

首先,我们要了解,docker是一个类似于轻量化的虚拟机。但又和VM这样的虚拟机不一样。VM这样的虚拟机上占用了我们大量的物理内存和CPU 运算的。所以可以理解为是分钟级别。但是dcoker不是的,他是秒级别。启动起来只需要几秒就可以搞定。

docker有几个很重要的概念,就是容器,镜像,仓库。

我们实际在跑的都是一个一个的容器,他不会占用太多的CPU和内存。

常用命令:

docker version 查看版本

docker info 查看基本信息

docker help 帮助命令

docker 的安装

1 yum install -y yum-utils device-mapper-persistent-data lvm2
2  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3  yum-config-manager --enable docker-ce-nightly
4  yum-config-manager --enable docker-ce-test
5  yum install docker-ce docker-ce-cli containerd.io

docker images 查看现有的镜像文件

docker pull hello-world 从镜像源下载镜像,也可以下载centos nginx等等 后面加一个 : 可以标注版本号

docker rm -f (强制删除) filename

级联删除 docker rm -f $(docker ps -q)  

docker ps 列出当前容器

docker ps -a 列出所有容器

docker run -it myip/centos:latest /bin/bash 以前台交互模式允许一个容器

docker run -d --name web1 -p 80:80 nginx:latest /bin/bash 以后台模式运行 ,小p代表指定映射端口,latest是最后一个版本号。如果不需要前台运行的,可以后台模式运行。

重点:docker run -it -v /hostshare:/clientshare centos:latest 创建centos 容器并创建宿主机和容器间的共享文件夹

 如果加 :ro 就是仅只读

1.exit 退出并关闭容器

2、ctrl + p + q 不关闭容器退出

docker history 镜像tag --查看镜像包是如何一层一层包裹的

DockerFile体系结构:

FROM -基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER -镜像维护者的姓名和邮箱地址

RUN -容器构建时需要运行的命令

EXPOSE -当前容器对外暴露出的端口

WORKDIR -指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV -用来在构建镜像过程中设置环境变量

ADD -将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY -类似ADD,拷贝文件和目录到镜像中。

    将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

    COPY src dest

    COPY ["src","dest"]

VOLUME -容器数据卷,用于数据保存和持久化工作

CMD -指定一个容器启动时要运行的命令

   -Dockerfile 中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换

ENTRYPOINT -指定一个容器启动时要运行的命令

       -ENTRYPOINT 的目的和CMD 一样,都是在指定容器启动程序及参数

ONBUILD -当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

 

最简单的Dockerfile文件

FROM centos#基础镜像来自哪里MAINTAINER david.z<david.z@dgpm.co>#作者和邮箱,被谁维护ENV MYPATH /tmp#添加环境变量WORKDIR $MYPATH#工作目录RUN yum -y install vimRUN yum -y install net-tools#安装两个软件EXPOSE 80 443#开放 80 443端口CMD echo "successs------------ok"CMD echo $MYPATH#运行命令回显提示CMD /bin/bash#

 第二个Dockerfile

FROM centosMAINTAINER david.z<david.z@dgpm.co>#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下COPY c.txt /usr/local/cincontainer.txt#把java与tomcat添加到容器中ADD jdk-8u171-linux-x64.tar.gz /usr/local/ADD apache-tomcat-9.0.8.tar.gz /usr/local/#安装vim编辑器RUN yum -y install vim#设置工作访问时候的WORKDIR路径,登录落脚点ENV MYPATH /usr/local/WORKDIR $MYPATH#配置java与tomcat环境变量ENV JAVA_HOME /usr/local/jak1.8.0_171ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin#容器运行时监听的端口EXPOSE 8080#启动时运行tomcat#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh"]#CMD ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out

 

©著作权归作者所有:来自51CTO博客作者天天打老虎的原创作品,如需转载,请注明出处,否则将追究法律责任