我的Docker学习记录
一、安装docker
yum install -y docker-io
二、使用docker
1、下载镜像
docker pull <image>
2、查询镜像
docker search <image>


3、从镜像运行容器
docker run -it --name <name> <image> /bin/bash
4、后台运行
docker run -itd --name <name> <image> /bin/bash
5、查看docker运行的容器
docker ps
6、查看docker上一个运行的容器
docker ps -l
7、查看docker运行的全部容器
docker ps -a
8、进入docker的方法有两种exec和attach
第一种exec
docker exec -it <container> /bin/bash
container既可以是容器id也可以是容器名字
/bin/bash为运行容器时的环境
第二种attach
docker attach -it <container> /bin/bash
和exec同理只不过用该命令连接容器后,退出是容器会自动关闭。
9、删除容器
docker rm <container>或者是<container-id>
10、删除镜像
docker rmi <image-id>
11、列出已有镜像
docker images
12、将docker里面的文件或目录拷贝出来
docker cp <container_id>|<container_name>:path path
例子:
docker cp tomcat:/usr/local/tomcat/conf .
13、导入导出镜像和容器
docker save image-id > image.tar 导出镜像
docker export container-id > container.tar 导出容器
docker load < image.tar 导入镜像
cat container.tar | docker import - container_name:tag 导入容器
三、实战
1、安装ssh服务
debian系统
apt-get update
apt-get -y install openssh-server
2、安装netstat命令
apt-get -y install net-tools
3、安装jdk服务
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
4、安装tomcat服务
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
tar xzvf apache-tomcat-8.5.9.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-8.5.9 /usr/local/tomcat
cp -r apache-tomcat-8.5.9.tar.gz /usr/local/tomcat
四、工作流程
1、构建镜像。
2、上传镜像到已有的私有仓库或者公有仓库。
3、在指定服务器上下载指定仓库的镜像。
4、通过镜像运行容器,指定端口、容器名称、挂载点、需要的环境变量等参数。
5、通过jekens自动化运行脚本,将指定的文件定时更新到挂载点,完成自动部署。
五、Docker服务标准
1、容器命名规则
服务名称-应用名称-端口号
例如:
2、挂载目录
1)在root目录下创建docker目录
mkdir /root/docker
2)在docker目录下创建对应容器的目录名称
例:还是以上面的tomcat-admin-8280为例
mkdir -p /root/docker/tomcat-admin-8280
3)在tomcat-admin-8280目录下创建该容器内所需的挂载点目录
例如tomcat需要日志和app文件的挂载点
创建log的挂载点
mkdir -p /root/docker/tomcat-admin-8280/logs
创建app文件的挂载点
mkdir -p /root/docker/tomcat-admin-8280/webapps
如果有其他的配置文件需要修改也可以增加配置文件等其他挂载点
4)tomcat日志统一挂载在/var/log/下
在/var/log下新建自己对应名字的目录
例如tomcat-admin-8280这样的目录
六、docker镜像内需要的基础服务
1、ssh服务
用来进行外部链接
2、ntp服务
用来同步时间
3、vim服务(配置支持中文显示)
用来方便编辑
七、镜像构建标准
1、创建Dockerfile
在root下创建和镜像名一样的目录
例:
mkdir -p /root/dockerfile/tomcat
cd /root/dockerfile/tomcat
touch Dockerfile
编辑配置Dockerfile
例如:
2、在该目录下放置所以Dockerfile所需要的脚本和文件
例如:
3、构建镜像
进入Dockerfile所在目录
cd /root/dockerfile/tomcat
运行构建命令
docker build -t <image-name>:<tag> path
例如:
docker build -t tomcat:8.5.9 /root/dockerfile/tomcat/
八、docker占用磁盘空间过大的解决方案
通过命令可以观察到/var/lib/Docker目录很大,我的主机只有20G,这个目录占了 18G;原因是devicemapper的空
间设的太大,通过docker info打印的Data Space Total参数可以看到,默认是107.4G
思路如下:
备份当前容器、镜像;
删除/var/lib/docker目录;
使用dd命令重设大小;
恢复容器、镜像
1、备份当前的容器和镜像
docker save image-id > image.tar 导出镜像
docker export container-id >container.tar 导出容器
2、删除docker目录
/etc/init.d/docker stop
rm -rf /var/lib/docker
3、使用dd命令重设大小
mkdir -p /var/lib/docker/devicemapper/devicemapper/
touch /var/lib/docker/devicemapper/devicemapper/data
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1M count=0 seek=8192
建立的文件最大为1M*8192=8G
启动docker
/etc/init.d/docker start
docker info 查看Data Space Total是否修改成功
4、恢复容器和镜像
docker load < image.tar 导入镜像
cat container.tar | docker import - container_name:tag 导入容器
九、docker内tomcat打印的日志时间和服务器时间差8个小时的问题
打开tomcat文件下的bin/catalina 文件,找到JAVA_OPTS,在设置中增加-Duser.timezone=GMT+08:
JAVA_OPTS='-Xms256m -Xmx800m -Duser.timezone=GMT+08'
十、安装使用swarm
在所有节点上
docker pull swarm
在使用Swarm进行集群管理之前,需要先把准备加入集群的所有的节点的docker deamon的监听端口修改为
0.0.0.0:2375,可以直接使用sudo docker –H tcp://0.0.0.0:2375 &命令,也可以在配置文件中修改
$ sudo vim /etc/default/docker
在文件的最后面添加下面这句
D0OCKER_OPTS="-H 0.0.0.0:2375 –H unix:///var/run/docker.sock"
service docker restart
第一步
在任何一个节点上面执行swarm create命令来创建一个集群标志。这条命令执行完毕之后,swarm会前往Docker Hub上
内建的发现服务中获取一个全球唯一的token,用以唯一的标识swarm管理的Docker集群。
docker run --rm swarm create
返回的token是d947b55aa8fb9198b5d13ad81f61ac4d,这个token一定要记住,因为接下来的操作都会用到这一个token。
第二步
在所有的要加入集群的机器上面执行swarm join命令,把机器加入集群。
本次试验就是要在所有的三台机器上执行命令。
docker run –-rm swarm join –addr=ip_address:2375 token://d947b55aa8fb9198b5d13ad81f61ac4d
执行这条命令后不会立即返回 ,我们手动通过Ctrl+C返回
第三步
启动swarm manager。
因为我们要让sclu083充当Swarm管理节点,所以我们要在这台机器上面执行swarm manage命令
docker run -d -p 2376:2375 swarm manage token://d947b55aa8fb9198b5d13ad81f61ac4d
重点内容需要注意的是:在这条命令中,第一:要以daemon的形式运行swarm;第二:端口映射:2376可以更换成任
何一个本机没有占用的端口,一定不能是2375,否则就会出问题。
查看所有节点
docker run --rm swarm list token://d947b55aa8fb9198b5d13ad81f61ac4d
docker –H 10.13.181.83:2376 info
可以查看所有节点的信息
info命令可以替换成所有docker的其他命令
十一、永久解决中文乱码问题
在Dockerfile中添加一行
ENV LANG C.UTF-8

Docker的学习笔记(开发的技术分享转发)的更多相关文章

  1. AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  2. AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  3. golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍

    golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...

  4. Docker Stack 学习笔记

    该文为<深入浅出Docker>的学习笔记,感谢查看,如有错误,欢迎指正 一.简介 Docker Stack 是为了解决大规模场景下的多服务部署和管理,提供了期望状态,滚动升级,简单易用,扩 ...

  5. Docker&K8S学习笔记(一)—— Docker安装

    最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习 ...

  6. 微信小程序开发——小程序分享转发

    关于小程序的转发: 最简单的就是点击小程序右上角菜单“转发”按钮直接分享,不过这种分享有点不太友好,实用性也不强. 当然,你可以自定义分享内容,包括标题,简介,图片及分享的小程序页面路径. 再高级一点 ...

  7. 字节跳动内部微服务架构-Docker实战学习笔记分享 真香

    前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...

  8. Docker原理(开发技术分享转发)

    Docker原理Docker是啥Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中,你可以将你的程序分为不同的 基础部分,对于每一个基础部分 ...

  9. docker容器学习笔记

    docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...

随机推荐

  1. 激光样式——第九届蓝桥杯C语言B组(国赛)第二题

    原创 标题:激光样式x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下, ...

  2. windows phone制作引导页

    适用于WP7 WP8+ 源码下载撸这里 制作动画gif小软件下载 小技巧 ①图片是纯色背景:将页面设置跟图片背景一样颜色 ②图片是渐变or其他,切图时候:单独切背景(页面设置这个为背景)跟图片里面元素 ...

  3. 最小生成树(kruscal算法)

    其实kruscal算法很简单,把边从小到大排一遍,如果加入此边形成环,就不加,知道这棵树有n-1条边. 代码如下(一定要理解): #include<iostream> #include&l ...

  4. 《C#多线程编程实战》2.8 Barrier

    不得不说,C#的同步线程的机制是真的多. 各式各样.几乎各种场景下都有可以使用的同步机制. 今天说的,就是比较有意思了. 等待的机制很简单,单纯的等待. 使用的方法我就等. 等待的东西或者内容则是你自 ...

  5. python3关于date和time的标准库

    python3中关于日期和时间的标准库datetime和time,之前都是用的时候随用随查,今天系统的看一下用这两个库可以做些什么. 1.time标准库 #首先添加一个time对象,看一下该对象的属性 ...

  6. JVM之类加载机制

    JVM之类加载机制 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程. 类加载五部分 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这 ...

  7. css grid学习笔记

    仅为自己用而收藏罢了 w3c官方文档 https://www.w3.org/TR/css-grid-1/#grid-items w3cplus(zhongwenban ) 大漠博主的系列文章 基础知识 ...

  8. asp 文章内容里的图片宽度过大 撑爆页面布局 解决办法

    有时候帮朋友做做企业网站,还是asp+access来的快,也经济(不用开数据库空间),fck做的后台内容编辑功能,但是他们传图片的时候不靠谱,图片不管有多宽都直接up上来,把前台页面撑的是面目全非! ...

  9. chrome 相关设置.

    1. 使用chrome 添加道桌面的快捷方式,自动打开两个 tab 解决方法: chrome://apps/ 右击 你的应用图标..勾选在新窗口打开.

  10. C++_类入门3-嵌套类

    可以将类B声明在另一个类中.在另一个类A中声明的类B被称为嵌套类(nested class). 类A的成员函数可以创建和使用嵌套类B的对象. 当且仅当声明为公有部分时,才能在类A的外面使用嵌套类.而且 ...