docker是一个lxc升级版的容器类虚拟环境,具有快速部署,灵活,易迁移的虚拟机模式,现在各大公司已经开始广泛使用
为了自己方便学习linux,需要多台虚拟机环境,但是vmware开启多台虚拟机时需要花费大量内存,所以研究了一下docker,操作方便,真的很好用
发现好多文章都是使用ubuntu的,但是在真实环境中,使用centos居多(国内形势。。。。。。)

使用环境:Centos6.8 x64

1.安装eprl
  yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2.禁用selinux
  vim /etc/sysconfig/selinux
  SELINUX=disabled
  setenforce 0
3.检查内核是否符合标准
  uname -r
  2.6.32-431.el6.x86_64 内核最低标准
4.安装docker-io
  yum -y install docker-io
5.启动docker
  service docker start
  查看是否有docker接口
  4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
  link/ether 66:b2:39:4c:25:46 brd ff:ff:ff:ff:ff:ff
  inet 172.17.42.1/16 scope global docker0
  inet6 fe80::64b2:39ff:fe4c:2546/64 scope link
  valid_lft forever preferred_lft forever
6.创建容器,因为以前都是使用的openvz,就尝试导入,发现可以使用(现在网上都是别人修改过的容器,并不是自己想要的,想要一个干净的环境)  

  我选用的是centos-6-x86_64-devel.tar.gz,这个包含编译需要的环境,方便编译安装需要的工具
  导入容器
  cat centos-6-x86_64-devel.tar.gz | docker import - centos:v1.0
  查看镜像是否导入
  docker images
  这个环境是干净环境,没有服务,所以需要自己去定制服务(docker在定制方面很灵活,好多地方以后好好研究)
  定制自己的环境(我的环境只启用了ssh服务,能登录即可)
  docker run -h test -it centos:v1.0 /bin/bash 创建虚拟机,并登录

  在root目录下增加文件run,加入如下内容
  #!/bin/bash
  service sshd restart
  /bin/bash

  这个时候启动ssh是无法登录的,修改/etc/ssh/sshd_config

  UsePAM no   修改yes为no

  同时设置root密码,docker默认是没有root密码的

  passwd  root

  然后退出,exit,这个时候容器会停止关闭
  这个时候我们的容器就定制好了,现在保存容器到image中以后使用
  docker commit test centos:latest
  docker images 查看是否多了一个centos latest的镜像

  上面已经定制好了自己的镜像,这个时候就可以创建自己的容器了
  docker run -h node1 --name=node1 --ulimit nofile=65535:655350 -m 512M --memory-swap=1024M --net=none -d -it centos:latest /root/run
  这个时候容器就已经启动,但是不符合我的环境
  -h 主机名
  --name 给容器定义名字
  -ulimit 配置ulimit,当容器启动后就无法更改
  -m 分配内存
  --net=none 不使用docker网络,如果不配置会docker会自动分配ip地址给容器,但是每次重启后ip地址会改变,导致不符合我的环境,也可以用-p把端口映射出去,这样 端口不会改变,使用端口即可,但是正如我所说,不符合我的环境要求,后面采用脚本控制命名空间给容器配置静态ip

7.使用脚本控制所有

1.创建网桥接口br0brctl addbr br0brctl addif br0 eth02.创建容器脚本create_container.pl#!/usr/bin/perluse strict;use warnings;my $num;my $name;print "input images name[default->centos]: ";    chomp(my $c_img=<STDIN>);unless ($c_img) {$c_img='centos'};print "input container name: ";chomp($name=<STDIN>);$num=substr($name,-1);my $cmd = "docker run -h $name --name=$name --ulimit nofile=65535:655350  -m 512M --memory-swap=1024M --net=none -d -it $c_img /root/run"; #该行是创建命令,可自己根据要求修改system($cmd);3.配置容器为静态ip地址脚本start_container.pl,该脚本修改后可用ln建立软链接到bin目录下,方便以后调用需要添加目录mkdir -pv /var/run/netns/ 调用方法: ./start_container.pl node1   后面需要跟容器名,#!/usr/bin/perl use strict;use warnings;my $num = @ARGV;if ($num == 0) {print "error\n";exit;}(my $hostname) = @ARGV;system("docker start $hostname");my @host_info;for (<DATA>){if (/^$hostname/) {@host_info = split('=',$_);}}($hostname,my $ip) = @host_info;chomp($ip);my $pid = readpipe("docker inspect -f '{{.State.Pid}}' $hostname");chomp($pid);system("ln -sf /proc/$pid/ns/net /var/run/netns/$pid");system("ip link add neto_$hostname type veth peer name neti_$hostname");system("brctl addif br0 neto_$hostname");system("ip link set neto_$hostname up");system("ip link set neti_$hostname netns $pid");system("ip netns exec $pid ip link set dev neti_$hostname name eth0");system("ip netns exec $pid ip link set eth0 up");system("ip netns exec $pid ip  addr add $ip/24 dev eth0");            #这里为虚拟机添加ip,如果是别的掩码,可以自行修改system("ip netns exec $pid ip route add default via 192.168.89.2");   #这里调用shell,如果网关ip是别的,可以自行修改__DATA__node1=192.168.89.11node2=192.168.89.12node3=192.168.89.13node4=192.168.89.14node5=192.168.89.15node6=192.168.89.16#脚本会根据__DATA__下面的配置设置ip,前面是容器名--name定义的,后面=,在后面是ip地址,格式是必须严格按照样例配置,#如果懂perl,可以自行修改

转载于:https://www.cnblogs.com/djoker/p/5768604.html

docker学习笔记一:基本安装和设置容器静态ip相关推荐

  1. [学习笔记] Rocket.Chat 安装与设置启动项

    这篇文章主要介绍手动安装的方式来安装Rocket.Chat,在Rocket.Chat官方有三种安装方式, 面向开发人员的直接使用meteor部署 传统的源码编译安装 Docker方式部署 接下来分别介 ...

  2. Docker学习笔记之浅谈虚拟化和容器技术

    0x00 概述 相信所有对 Docker 有所耳闻的朋友都知道,它是一款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使用方法之前,虚拟化和容器技术是我们不可或缺的基础知识. ...

  3. Docker学习笔记 之 Docker安装配置使用

    简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare met ...

  4. docker学习笔记(五)如何创建自己的阿里云镜像仓库(这是2021版的阿里云教程)

    参考:汤小洋老师的教学视频 docker学习笔记(一)[docker 介绍.卸载.安装.配置加速] docker学习笔记(二)docker常用命令 docker学习笔记(三)镜像 docker学习笔记 ...

  5. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  6. 狂神 Docker学习笔记 从基础到进阶 一步到位

    Docker 学习笔记 感谢狂神的分享.附上B站视频链接. https://www.bilibili.com/video/BV1og4y1q7M4?from=search&seid=92256 ...

  7. 随笔——Docker学习笔记

    Docker学习笔记 一.Docker 安装 二.Docker常用命令 注意事项 1.删除容器 2.删除镜像 3.容器中命令 4.容器的生命周期 5.Dockerfile构建镜像 6.docker两个 ...

  8. Docker基础03--Dockerfile详解与镜像发布--(狂神说docker学习笔记)

    文章目录 1. Dockerfile介绍 2. Dockerfile指令说明 3. 制作Centos镜像 3.1 编写Dockerfile的文件 3.2 通过这个文件构建镜像(注意最后加个点!!!) ...

  9. Docker 学习笔记 - 进阶四 Docker网络和 Docker compose

    Docker 学习笔记 - 进阶四 Docker网络和 Docker compose 4. docker 网络 4.1 docker network是什么 4.1.1 docker不启动,默认网络情况 ...

  10. Docker学习笔记3

    title: Docker学习笔记3 date: 2020-08-22 20:04:39 tags: /学习 categories: /学习 第一章 Dockerfile 构建步骤: 1.编写一个Do ...

最新文章

  1. 争建AI算力中心热潮背后:谁在花冤枉钱?
  2. Gym 101964 2018-2019 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2018)
  3. 111. 畜栏预定【贪心】
  4. 服务器购买和远程连接
  5. td 超出宽度隐藏_table中td文字超出长度用省略号隐藏超出内容,鼠标点击内容全部显示...
  6. dpkg命令用法、Ubuntu下deb包的解压、打包、安装、卸载及常用命令参数
  7. 阶段3 1.Mybatis_11.Mybatis的缓存_5 缓存的概念
  8. leetcode -- Maximum Subarray
  9. LINUX编译alsa
  10. 2022年网络规划设计师最新考纲变化
  11. confirm() 中写html,confirm用法 Confirm……that……
  12. ICMP协议和ping命令
  13. html里面超链接alt_怎样用HTML代码在图片插入超链接
  14. 北京大学计算机学院复试名单2021,北京大学2021拟录取推免研究生毕业院校统计,多位来自非211高校...
  15. No way to dispatch this command to Redis Cluster because keys have different slots.
  16. 小米air12.5做Java_到底够不够用? 小米笔记本Air12.5性能测试
  17. 失传千年AE特效真经(三)
  18. CardView使用详解
  19. 系统运维架构 DevOps
  20. 分享电脑便捷妙招,电脑小白们快码住

热门文章

  1. Gram matrix(格拉姆矩阵)
  2. pytorch RuntimeError: expected scalar type Double but found Float
  3. Linux学习笔记(11)
  4. Java中ArrayList和LinkedList以及queue的模仿
  5. Java8 Lambda之Collectors.toMap
  6. std::sort使用
  7. kmo检验和bartlett球形检验_互助问答59期:多期DID平行趋势检验以及因子分析累计方差贡献率...
  8. kubernetes 查看所有namespace、默认的namespace
  9. Docker教程小白实操入门(9)--基于export导出容器与基于import导入一个镜像
  10. 基于springboot的社区物业系统