Docker的学习笔记(开发的技术分享转发)
我的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的学习笔记(开发的技术分享转发)的更多相关文章
- AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...
- AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...
- golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍
golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...
- Docker Stack 学习笔记
该文为<深入浅出Docker>的学习笔记,感谢查看,如有错误,欢迎指正 一.简介 Docker Stack 是为了解决大规模场景下的多服务部署和管理,提供了期望状态,滚动升级,简单易用,扩 ...
- Docker&K8S学习笔记(一)—— Docker安装
最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习 ...
- 微信小程序开发——小程序分享转发
关于小程序的转发: 最简单的就是点击小程序右上角菜单“转发”按钮直接分享,不过这种分享有点不太友好,实用性也不强. 当然,你可以自定义分享内容,包括标题,简介,图片及分享的小程序页面路径. 再高级一点 ...
- 字节跳动内部微服务架构-Docker实战学习笔记分享 真香
前言 基于 Spring Cloud 的微服务设计和开发,已经越来越多地得到了更多企业的推广和应用,而 Spring Cloud 社区也在不断的迅速发展壮大之中,近几年时间,Spring Cloud ...
- Docker原理(开发技术分享转发)
Docker原理Docker是啥Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中,你可以将你的程序分为不同的 基础部分,对于每一个基础部分 ...
- docker容器学习笔记
docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...
随机推荐
- (一)ASP.NET中JavaScript的中英文(多语言)实现方案
PS: https://github.com/hzlzh/Front-End-Standards/wiki/HTML-CSS-JS-i18n 本文原始思路起源于此网址,请自行查看. 本文只是简单的一个 ...
- delphi 创建DLL文件 及其调用和注意事项
首先创建一个DLL文件,项目自带的代码为: library ProjectPnr; { Important note about DLL memory management: ShareMem mus ...
- IIS 6.0 发布网站使用教程
原文地址:http://wenku.baidu.com/view/95d8b49851e79b89680226aa.html
- .NET MVC对接POLYV——HTML5播放器播放加密视频
官方参考文档:http://dev.polyv.net/2017/videoproduct/v-playerapi/html5player/html5-docs/ 1.上传视频之前根据自己需要对所上传 ...
- CENTOS7 使用 Nginx + Uwsgi 部署 Django 项目
写在前面的话 最近总是见到有新学 Django 的朋友在部署自己的项目到 Linux 上面的时候运行不起来,所以就动手写了这篇博客. 对于不会搭建 Python 3 环境的朋友可以参考前面的博客[CE ...
- jenkins html报告不显示样式
解决办法: 1.安装Startup Trigger,在jenkins节点启动时触发构建: 2.安装Groovy,直接运行Groovy代码: 3.新建一个Job,用于jenkins启动时执行配置命令: ...
- 转载智能家居 作者:热情的沙漠 出处:http://www.cnblogs.com/buptzym/
理工男打造帝都89平智能家庭 毕业后的2016年年初,搬入新家,总算不用在出租屋里鬼混了,于是就想把之前童年的梦想:智能家居+家庭影院好好实现一下~ 相比帝都高昂的房价,这些东东还凑合玩得起,不过 ...
- 基于Solr的多表join查询加速方法
前言 DT时代对平台或商家来说最有价值的就是数据了,在大数据时代数据呈现出数据量大,数据的维度多的特点,用户会使用多维度随意组合条件快速召回数据.数据处理业务场景需要实时性,需要能够快速精准的获得到需 ...
- Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- CF165D Beard Graph
$ \color{#0066ff}{ 题目描述 }$ 给定一棵树,有m次操作. 1 x 把第x条边染成黑色 2 x 把第x条边染成白色 3 x y 查询x~y之间的黑边数,存在白边输出-1 \(\co ...