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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows资源管理器已停止工作后,使用命令提示窗口拷贝文件和运行exe程序

电脑异常现象&#xff1a; 需要从优盘拷贝NetAssist.exe软件至电脑进行运行&#xff0c;发现双击无法打开我的电脑和文件夹&#xff0c;点击提示的重新启动程序问题后仍存在&#xff0c;重启电脑、关机再开机该问题依然存在。插入优盘后可以识别到&#xff0c;但无法打开优盘&…

DAC8563芯片参考手册重要内容总结

DAC8563的主要参数&#xff1a; 供电电压&#xff1a;2.7~5.5V分辨率&#xff1a;16bit&#xff0c;双通道通讯接口&#xff1a;3线SPI串行通讯&#xff0c;速率最高至50MHz&#xff0c;支持3.3V和5V单片机&#xff08;有MOSI/CLK/CS&#xff0c;无MISO&#xff09;内部自带2.…

20155220 吴思其 2016-2017《java程序设计》第一周总结

对第一章和第二章的学习 通过了前两章的学习&#xff0c;我了解到了java的由来以及JVM/JRE/JDK三大平台 JDK JDK 是 Java 语言的软件开发工具包。 JDK是整个JAVA的核心&#xff0c;包括了Java运行环境&#xff0c;一堆Java工具&#xff08;javac/java/jdb等&#xff09;和Java基…

手把手教你从0创建STM32串口空闲+DMA数据接收工程

串口通讯是嵌入式系统中最常用的通讯方式。 STM32的串口接收普通的方式是在串口读数据寄存器非空RXNE中断&#xff08;Read data register not empty&#xff09;中1个字节1个字节的接收串口数据&#xff0c;一帧数据的接收完成可以使用结束帧判断&#xff0c;也可以使用定时器…

TC214B直流电机控制芯片

潘多拉开发板中通过TC214B电机驱动芯片驱动板载直流电机&#xff0c;因此需要先了解TC214B芯片的主要功能及其使用方法。 通过以上资料可以了解到&#xff0c;MCU控制TC214B从而进行直流电机转动方向&#xff0c;方向控制&#xff08;即前进/后退&#xff09;主要是通过控制MCU…

ST7789V2 LCD驱动芯片

ST7789V2是一个单芯片TFT-LCD驱动器。该芯片可以直接连接到外部MCU&#xff0c;支持并行8080系列的8位/9位/16位/18位接口&#xff0c;也支持SPI串行通讯接口。 显示数据可以存储在240x320x18bits的片上显示数据RAM中。 它可以在没有外部操作时钟的情况下执行显示数据RAM读写操…

STM32 USB虚拟串口原理(上)

USB虚拟串口是使用USB的CDC&#xff08;CDC为communication device class(virtual port com)&#xff09;类实现的一种通讯接口。使用STM32自带的USB slave功能可以在电脑上实现一个USB虚拟串口&#xff0c;在电脑上可以直接使用串口调试助手打开该虚拟串口和STM32进行通讯。ST…

RT-Thread使用ENV生成工程时自己添加的文件被清掉的解决方法

在项目中难得一次就可以将需要的模块或组件包添加完成&#xff0c;因此在实际开发中经常会遇到在未完成的项目中增加软件包或使能硬件功能的情况。一般我们会使用RT-Thread的ENV辅助开发环境的menuconfig图形化系统配置工具对组件包进行配置&#xff0c;配置完后使用pkgs --upd…

怎样使用两行代码实现博客园打赏功能

也许大家看博客园博客的时候&#xff0c;遇到过一些博客右侧&#xff0c;展示了打赏二维码~ 如下图所示 那么&#xff0c;这是怎么实现的呢~~~ 不错&#xff0c;你没猜错&#xff0c;他们使用的是本人写的一个js插件--tctip。 大家搜一下&#xff0c;还能搜到网上有些tctip的教…

STM32 HAL库 .c/.h 文件介绍

HAL库中各个文件的介绍&#xff1a; startup_stm32l475xx.s 启动文件的主要作用是进行RAM中堆、栈内存的分配和初始化&#xff0c;中断向量表及中断函数的定义等&#xff0c;进行完这一系列工作后执行系统复位从而跳转至用户main函数开始执行。 stm32l4xx_hal_ppp.c/.h 基本…

RT-Thread设备框架学习感悟

前面几周跟着野火的教程从0到1实现了RT-Thread的内核&#xff0c;对RT-Thread的调度机制和线程、定时器的底层实现有了总体的了解。后面还需进一步对齐实现细节进行探索&#xff0c;但大致先了解其框架&#xff0c;后面再进行细致的了解。在学习新知识时&#xff0c;最重要的是…

RT-Thread中自定义MSH命令传入的参数是字符串,需用户自行检查和解析

如下是在将安富莱的dac8563模块对接到潘多拉开发板RT-Thread SPI设备框架中时导出到RT-Thread的自定义MSH命令&#xff0c;需要注意的是MSH传入的是字符串&#xff0c;需要自行对字符串进行解析处理。 #include "stdlib.h" /* 使用其中的函数&#xff1a;atoi(); */…

安富莱DAC8653模块

产品规格&#xff1a;1、供电电压 &#xff1a; 2.7 - 5.5V 【3.3V供电时&#xff0c;输出电压也可以到正负10V】2、通道数&#xff1a; 2路 &#xff08;通过1片DAC8563实现&#xff09;3、输出电压范围 &#xff1a; -10V ~ 10V 【客户可以自己更改为 0-10V输出范围。使…

flex布局应用与踩坑

一、预告本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道&#xff1a; 1、初学前端&#xff0c;对前端的传统布局还不是很熟悉的人 2、后端人员对前端不打算深入学习的同学 二、开篇flex布局原本是好几个月前就一直想学习的东西&#xff0c;当时flex布局还算是比较新鲜…

RT-Thread I/O设备模型

I/O设备指的是嵌入式系统中的一些Input输入/Output输出设备&#xff0c;输入输出设备是嵌入式系统重要的组成部分。输入和输出设备可以看做是计算机系统和外界进行沟通的桥梁&#xff0c;因此在计算机组成原理中输入输出设备是重要的组成部分。 计算机组成原理中的5大组成部分…

如何使用易我数据恢复向导恢复数码相机删除的图片

1 使用"易我数据恢复向导"的高级恢复(务必将数码相机的存储卡取出单独插入SD卡槽,而不是直接用数据线连接到电脑上,这样存储卡才能以磁盘方式显示) 2 选中对应磁盘,点击下一步 3 如果出现"分区参数不正确"提示&#xff0c;直接取消即可开始搜索 4 搜索完…

RT-Thread对GPIO操作两种方式的区别:1)通过设备操作接口2)直接通过通用GPIO设备驱动

在学习RT-Thread设备驱动框架时&#xff0c;看到潘多拉开发板的RT-Thread例程资料中的文档《AN0002-RT-Thread-通用 GPIO 设备应用笔记》有如下描述&#xff0c;因此产生使用文档中未使用的方式1&#xff09;通过设备操作接口 方法实现GPIO操作的想法&#xff01; 使用潘多拉开…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(一)

I2C是一种双向2线制同步串行通讯接口&#xff0c;是一类非常经典的串行总线通讯&#xff0c;理解好I2C通讯会帮助理解USB通讯、以太网通讯中的握手、数据帧等环节。 I2C的发展历史&#xff1a; SPI串行通讯主要是由MOTOROLA公司提出的&#xff0c;MOTOROLA公司的半导体部门独立…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)

I2C&#xff08;Inter IC Bus&#xff09;的通讯数据帧&#xff1a; SCL线无方向区分&#xff0c;SDA线上有数据的流动方向。上图中灰色的代表的是主机向从机发送数据&#xff0c;此时SDA线的电平控制权由主机掌控&#xff0c;从机只能监听该线上的电平状态。白色代表的是从机向…

RT-Thread I2C设备驱动框架的对接使用

I2C和SPI是MCU和板载芯片之间最常用的通讯方式&#xff0c;现在先介绍下I2C总线。I2C的基本原理也很简单&#xff0c;只需要两根线&#xff08;时钟线SCL和信号线SDA&#xff09;即可实现挂载在I2C总线上设备之间的相互通讯。I2C协议并未规定I2C总线上哪个是主机&#xff1f;哪…