我的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

转载于:https://www.cnblogs.com/zln1021/p/6434707.html

Docker的学习笔记(开发的技术分享转发)相关推荐

  1. 《深入浅出Docker》学习笔记

    <深入浅出Docker>学习笔记 第三章:docker 安装 linux服务器安装:-略 windows服务器安装:-略 确认安装结果 docker --version 第四章:纵观DOc ...

  2. Docker容器学习笔记一

    Docker容器学习笔记一 狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csd ...

  3. PE病毒学习笔记——初识感染技术 (转自看雪学院)

    [分享]PE病毒学习笔记--初识感染技术 <script type="text/javascript"></script>   标 题: [分享]PE病毒学 ...

  4. 烧录imx6需要的linux空间,IMX6Q学习笔记——开发板的Linux系统更新和烧录

    IMX6Q学习笔记--开发板的Linux系统更新和烧录 记录自己在电鱼电子开发SAIL-IMX6Q全能板后,并且对系统和模块进行简单测试的过程之后对开发板的Linux系统进行更新和烧录的记录过程,算是 ...

  5. 《自己动手写Docker》学习笔记2

    <自己动手写Docker>学习笔记2 1 前言 由于本人毕业设计与云原生领域相关,因此最近在学习Docker相关知识,<自己动手写Docker>涵盖了Docker底层的各类知识 ...

  6. 开源的容器虚拟化平台Docker学习笔记,个人私藏分享,不谢!

    一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...

  7. Docker02 狂神Docker视频学习笔记 :【狂神说Java 哔哩哔哩】Docker最新超详细版教程通俗易懂

    目录 0. 视频源 0. 学习网址 基础篇 1. Docker概述 1.1 Docker为什么出现? 1.2 Docker历史 1.3 Docker能干什么 2. Docker安装 2.1 Docke ...

  8. 【Docker容器学习笔记一】

    一.Docker概述 1.Docker为什么会出现? 一款产品: 开发–上线 两套环境!应用环境,应用配置! 开发 - 运维. 问题:我在我的电脑上可以允许!版本更新,导致服务不可用!对于运维来说考验 ...

  9. Docker入门学习笔记(狂神版)

    下述笔记是自己花一天时间看B站狂神说Docker视频的笔记,下列的笔记是根据自己的实践的记录下来的,若想细学掌握Docker建议自行观看(<Docker入门到精通>),去观看狂胜的视频记得 ...

最新文章

  1. 转载 load-on-startup的用法
  2. Spring核心--IOCAOP
  3. 高德地图api接口文档_在 R 语言里面调用高德地图接口:地理编码与路径规划
  4. no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
  5. Syntax Error: TypeError: this.getOptions is not a function
  6. Oracle XE http端口8080的修改
  7. django缓存优化(二)
  8. paip.目录文件列表排序算法
  9. stm32flash取数据_STM32学习笔记:读写内部Flash(介绍+附代码)
  10. 内网穿透的几种方式-免费与收费(钉钉、Frp、花生壳、nat123)
  11. 常用 vm 参数分析
  12. Win10、11快速切换不同桌面快捷键
  13. 通信行业英文缩写整理(待更新)
  14. Blob如何在html里转换成图片,前端图片canvas,file,blob,DataURL等格式转换
  15. 【大数据】MaxCompute概述
  16. matlab批量改名字0001 0002,Matlab批量修改文件夹名字
  17. FPV无人机集训召集令~
  18. 计算机7层网络以及每层协议
  19. 菠萝食客与菠萝刀:我们为什么应该重复造轮子
  20. 日记-反思自制力不足与提出改进方案

热门文章

  1. 三次样条插值 cubic spline interpolation
  2. Linux 混合编译opencv与opencv_contrib的android版本
  3. [工具] 知网(CNKI)文献下载工具
  4. 关于电脑自动获取和静态IP的问题
  5. 棋盘切割 DP POJ 1191
  6. 微软发布Visual Studio 2012 示例代码浏览器
  7. UCenter 表结构
  8. 动态条形图(RunBargraph)用于数据展示
  9. pom添加mysql依赖tomcat崩溃_Spring Boot + Mybatis + Spring MVC环境配置(一) :Spring Boot初始化,依赖添加...
  10. 第11章-img特征,vertical-align,cursor,opacity