docker入门笔记

本文详细介绍了在CentOS6.8上安装Docker,更换阿里云镜像加速,运行Hello World,理解容器数据卷的使用,以及Dockerfile的基础命令。通过实例操作,包括数据卷的创建与挂载,以及Dockerfile中ENV、WORKDIR、RUN、EXPOSE、CMD、ENTRYPOINT等命令的使用,帮助读者快速掌握Docker基本操作。
摘要由CSDN通过智能技术生成

1.安装docker,基于centOS6.8

首先执行命令,类似于安装docker所需要的一个环境或者说依赖吧

yum install -y epel-release

接下来安装docker,执行命令

yum install -y docker-io

在这里遇到了一个坑,会提示 ”no package docker-io available", 于是执行了以下命令

yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

安装docker成功,具体可以执行以下 docker version 命令,如果返回的是以下界面,证明安装成功,用service docker start启动。

2.更换阿里云镜像加速

因为docker默认的是国外的docker hub,我们去访问的话速度是特别慢的,因此我们需要将镜像换成我们国内的活雷锋 ---- 阿里云镜像加速。访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors ,注册登录等一系列流程跳过,点击镜像加速器,去获取自己的镜像加速地址。

我用的是centOS6.8,因此需要修改/etc/sysconfig/docker文件,将加速器的地址配置到文件中。如果是centOS7,阿里云的镜像加速器页面会有介绍改如何配置。

可以用 ps -ef|grep docker查看镜像是否替换成功。命令行 service docker restart,重启docker.

3.hello world

docker run hello-world

可以看到,1)docker会现在本地寻找有没有‘hello-world'镜像,2)发现没有之后,会去阿里云镜像pull到本地,3)接下来在本地 ,docker进程会根据这个拉下来的镜像生成新的docker容器实力并运行。

如果本地有该镜像,则直接跳到第三步。如果阿里云镜像中未找到该镜像,则返回失败。

一些些常用又没记住的命令

#在外面对容器里面进行操作
docker exec 容器id ls -l
#后台执行-d
docker run -d -p 9080:8080 tomcat
 

4.容器数据卷

1)用-v命令添加数据卷

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it -v /myDataVolume:/dataVolumeContainer centos

执行完命令之后,可以看到本机的根目录下多了一个myDataVolume的目录,对应的,宿主机下会多一个dataVolumeContaioner的目录,这两个目录之间可以实现数据共享。

也可以用docker inspect 容器id  命令,查看是否挂载成功。 在容器停止和退出后,主机修改的依然可以进行同步。以上对于容器内的目录是可读写的,如果想要容器内的目录只读,可以加上ro(read only )

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

2)用dockerFile添加

DockerFile是用来构建镜像的构建文件,是一系列命令和参数组成的脚本。相当于镜像image模板的描述文件,类似于Java的calss文件。

首先构建一个DockerFile

接下来去build它来生成镜像

docker build -f /mydocker/Dockerfile -t lyw/centos .

当运行run我这个名字叫lyw/centos的镜像生成容器的时候,就会新建两个容器卷。主机对应默认的地址,同样用inspire命令查询。

3)容器间的传递共享 volume-from

docker run -it --name dc01 --volume-from dc02 lyw/centos

相当于用容器dc02继承容器dc01,可以再新建一个容器dc03继承dc02,容器之间配置信息的传递,会一直持续到没有容器使用它,可以一直进行全量的备份。

5.Dockerfile命令

1)ENV、WORKID、RUN、EXPOSE、CMD、ENTRYPOINT命令

FROM centos

#环境变量
ENV MYPATH /tmp
#创建容器之后默认登录进来的工作目录
WORKDIR $MYPATH

#给简易版的centos安装vim ipconfig命令
RUN yum -y install vim
RUN yum -y install net-tools

#指定端口号
EXPOSE 80
#运行
CMD echo "succ-----1"
CMD /bin/bash

CMD可以用ENTRYPOTIN代替,其中CMD命令会被后面的CMD所覆盖,ENTRYPOINT不会。

比如执行以下指令:

docker run -it -p 7777:8888 tomcat ls -l 

会得到以下的结果,可以看到此刻是没有容器在运行的,可以在github上看一下tomcat的dockerfile,它的最后一句是CMD ***。因此我们运行的 ls -l 把原本的CMD覆盖掉了。

2)ONBUILD命令:

FROM centos
RUN yum install curl
ENTRYPOINT ["curl" "-s" "http://ip.cn"]
ONBUILD RUN echo "father images onbuild"

build之后,让一个file去继承这个image(FROM 镜像名),build这个子类之后,就会触发父类的ONBUILD中的echo,打印出“father images onbuild"。

3)ADD、COPY命令

以一个自定义的tomcat9为实例:

FROM centos
MAINTAINER lyw<liuyw@163.com>

COPY c.txt /usr/local/copy.txt
#把java和tomcat添加到容器中 ADD是带解压功能的copy
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
#设置登录时候的访问路径
ENV MYPATH /usr/local
WORKDIR $MYPATH 
#配置Java与Tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_171
ENV CLASSPATH $JAVA_HOME/lib/dt.jar && $JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPORT 8080
#启动时运行tomcat
CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out

运行的时候,在宿主机创建两个容器卷,一个用于部署tomcat,一个用于记录日志。在宿主机添加web.xml和jsp文件,通过容器卷会相应的出现在容器中。这时候通过浏览器访问tomcat,显示我们自己写的jsp文件,相应的日志也会打印在容器和宿主机中。

docker run -d -p 9080:8080

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值