1.DockerFile 指令 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名和邮箱 RUN #镜像构建的时候需要运行的命令,在docker 构建时执行 ADD #添加内容到镜像中,例如tomcat压缩包,会自动解压 WORKDIR #镜像的工作目录 VOLUME #…
1.DockerFile 指令 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名和邮箱 RUN #镜像构建的时候需要运行的命令,在docker 构建时执行 ADD #添加内容到镜像中,例如tomcat压缩包,会自动解压 WORKDIR #镜像的工作目录 VOLUME #…
数据卷容器可以实现容器之间的数据共享,例如多个容器之间配置信息的共享和同步 1.新建3个容器 docker01, docker02, docker03 注意这里运行的镜像是自己build的,里面已经配置了挂载目录 docker01: 可以看出已经启动了 在这个volume01文件夹中没有文件 现在见一个docker02的容器,这个容器要和docker01的volume01和volume02共享,运行以下命令: docker run -it --name docker02 --volumes-from docker…
1.构建Dockfile 这个语句用的比较多 运行docker images 得到的结果如下:可以看到构建镜像成功了 其中dockfile 中的内容如下: 2 分析自己构建的镜像 在这边运行 docker run -it --name centos b755a15d38fe /bin/bash 发现不成功,这是因为在dockfile 里面加入的 重新build下 : docker build -f dockfile -t liam/centos . 得到如下的结果 通过docker inspect 容器id可以…
1.什么叫做容器卷技术 是一种容器内数据和宿主机数据相互映射同步的过程,如下所示: 2.如何去做容器数据卷 可以通过命令 docker run -it -v 主机目录位置:容器目录位置 镜像id /bin/bash 可以通过以下方式进行查看是否挂载成功 3. 测试容器和宿主机是否相互会同步数据 1)首先在宿主机上添加个文件,查看在容器里面是否会有数据同步过去,可以看到确实同步过去了,宿主机添加了文件,容器中的目录也添加了 在容器上上的test.java文件中添加update container,在宿主机上可以看…
1.联合文件系统 Docker 的镜像是由一个一个的文件组成的,也就是联合文件系统,可以理解为一个系统分为了好几块,其中每个小块是一个文件,这个文件一般是可以共用的,具体如下图所示: 看最下面的图 bootfs 一般是用于电脑从黑屏到启动引导的一个文件系统,这个文件系统是可以被很多系统共用的,例如centos ubantu等等,而上层的rootfs包含的是一些基本的文件,例如/etc, /dev /bin 等目录,因系统的不同而不同。 这也是为什么docker 通过容器安装的centos非常小,这是因为容器安装的…
练习一:安装ngnix 1.下载nginx 2.运行ngnix, 云服务器本地测试是成功的 3. 记得去阿里云的安全里面添加规则,把3344开放,不然是访问不了的。 4.进入容器查看nginx的安装情况,可知安装成功了。 练习二:部署tomcat 官方提供的安装tomcat的方法 docker run -it --rm tomcat:9.0 是运行完停止了就删除,一般用于测试,可以看到是运行起来了 停止tomcat容器后,发现docker ps -a 发现没有tomcat 容器 因此我们一般运行不加--rm 下面…
1.镜像命令 1.1)常用命令: docker version 查看docker 版本 docker info 查看docker 的系统信息 docker 命令 --help 查看帮助文档 1.2)镜像搜索 docker search 镜像名称 // 这个命令和在dockhub 上搜索一样 根据STARS过滤镜像: docker search --help 查看search 的帮助命令。 1.3)镜像下载 docker pull mysql(镜像名) ,可以在docker hub 上搜到 可以看到…
1.为什么要用Docker? 在很多时候,环境的配置特别麻烦,例如在服务器上要配置redis,mysql, tomcat 等等,配置很费时,Docker应运而生,Docker能把环境和jar包一起配置,然后一键运行即可。 2.Docker的历史背景? Docker是一个叫做dotcloud的公司开发出来的,该公司本来是做pass相关的云计算的,后面公司运营不下去了,然后将其开源,得到社区的帮助下,发展迅速。 3.Docker的好处? 一般我们在虚拟一个虚拟机的时候,需要用到vmware类似这样的软件,来创建一个或多…
1、AtomicInteger 的用法 这个类中提供了线程安全的加减乘除的方式,如下所示: 2、AtomicInteger原子整数 2.1) incrementAndGet方法 incrementAndGet对应的源码 其中this代表AtomicInteger类的一个对象,valueOffset代表域的偏移量,1代表要加的值,这里是加1,unsafe对象是和cpu 打交道的一个对象,里面提供了compareAndSet方法来保证线程执行的原子性,进入unsafe的getAndAddInt方法,如下: 在unsaf…
1.如何实现无锁并发?可以先看个例子,下面的例子会有线程安全的问题。 上面的例子是启动1000个线程,每个线程去减10,起始值为10000,正常情况最终余额为0,但是由于并发安全的问题,造成余额值为220。 2.解决方案 2.1) 在做减法时对代码块加锁 2.2) 可以通过无锁来实现 测试结果,第二条说明无锁是可以保证线程安全的,另外cas无锁方式比加syncronized更加高效。 3. cas无锁方式比syncronized加锁更高效的原因 cas不用发生阻塞,而syncronized会发生阻塞,…