在centos上布置docker

序言: 记得准备放假时,接到了一个 在centos系统上,部署产品docker运行的环境; docker是比较新型的技术, 我从网上多方面整理,并完成了部署, 途中遇到的问题也分享分享。

一、 dokcer 原理是什么?
可以参照 原理:https://www.jianshu.com/p/5c81dc531963 写得很仔细。
安装:http://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html
基本上按照上博客命令运行,就可以在centos 下按照 docker**。
二 、熟悉 docker 命令操作
[常用命令]
在这里插入图片描述
终端 输入 docker help
以及常见的 操作 docker option
和 docker run 的搭配

三、 安装过程中, 常伴随的问题:
1)、当你装完centos系统后, 和安装完docker后,home目录
空间会显得不足。(尽管在ESXi创建这个虚拟机,分配了足够大的内存)
df /home -h 查看 home 目录空间;
du --max-depth=1 -h // 查看当前目录下, 所有文件夹大小‘;;; (此命令可以定位到 哪个文件夹最大,你可以选择性删除) 但是系统刚刚新装, 还是扩容比较实在。
大致步骤

df -h 查看分区大小 、 虚拟机中新增物理磁盘块、 重启
ls /dev/sd* //产看新增的磁盘编号 比如是 /dev/sdb
pvcreate /dev/sdb 创建pv
vgs //查看vg组大小
vgextend centos /dev/sdb //扩展vg
vgs //查看vg组大小 ,变大了
lvextend -L +20G /dev/mapper/centos-root
//拓展lv, 增加 /dev/mapper/centos-root目录空间
xfs_growfs /dev/mapper/centos-root
// 使系统重新读取大小

df -h 再查看 ; 此时添加成功。
2)问题2
docker 容器运行时, 会不断的膨胀空间。 膨胀的目录是名为 overlay , 路径:/var/lib/docker/overlay/下

	 1、停止docker服务。

          systemctl stop docker; //每个liunx版本的命令不一样。

     2、创建新的docker目录,执行命令df -h,找一个大的磁盘。我的是放在/home目录下面,我的/home目录大小有900G。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:mkdir -p /home/docker/lib

      3、迁移/var/lib/docker目录下面的文件到 /home/docker/lib下面

          cp -R /var/lib/docker/* /home/docker/lib/

     注意:如果文件内容很多的话,为了确保成功最好是一个文件一个文件的拷贝。如果在拷贝过程中报“设备上没有空间”的错误,就使用mv剪切。

                 
       4、修改docker配置(/etc/systemd/system/docker.service.d/devicemapper.conf),在文件末添加 --graph=/home/docker/lib

                       devicemapper.conf文件的内容如下:

                        [Service]

                        ExecStart=

                        ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/home/docker/lib

                        注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”--insecure-registry=私服地址”。

                 5、重载配置,重启docker

                        systemctl daemon-reload;

                        systemctl restart docker;

                         systemctl enable docker;

                 6、启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。

三、、
2) 容器与宿主机间拷贝文件

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

实例
将主机./RS-MapReduce目录拷贝到容器30026605dcfe的/home/cloudera目录下。

docker cp RS-MapReduce 30026605dcfe:/home/cloudera

将容器30026605dcfe的/home/cloudera/RS-MapReduce目录拷贝到主机的/tmp目录中。

docker cp 30026605dcfe:/home/cloudera/RS-MapReduce /tmp/

三、 进入容器四种方法:
在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。

进入Docker容器比较常见的几种做法如下:
1.使用docker attach
2.使用SSH
3.使用nsenter

4.使用exec
目前最为常用的是第四种,exec
经过筛选:
1
二、使用SSH进入Docker容器

在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下文章:
2
使用nsenter进入Docker容器。。。该方法的缺点在于步骤比较繁琐

我接触第一种,attach 进入容器, 缺点是 (1)退出时,容器会停止 ,(2)而且还不算怎么灵活。
(3)但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。

所以最优是 exec:
语法格式:
docker exec --help
[产看语法格式]

操作 可以组合 ; -it 是常用
CONTAINER:可以是名字、或者容器ID
CIMMAND::命令的意思: /bin/bash 代表控制台
例如: docker exec -i lv5 ./ProcessCtrl -License 交互式进入了容器,运行这个命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值