微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker安装

# 安装

docker 的安装非常多教程,而且官方也有教程文档,可以移步:

https://docs.docker.com/get-docker/

但是 docker 底层本质还是调用的 linux kernel 内核来实现容器,总结来说就是

  1. 使用 namespace 来进行资源的隔离,包括:UTS,PID,IPC,NETWORK,MOUNT,USER

  2.  使用 cgroup 进行资源的限制,包括:内存,cpu等等
  3.  使用 rootfs 和 mount 来打造隔离容器的文件系统

如果你是单纯使用 docker,当然可以直接按照官网推荐方式来进行安装,直接运行在 docker machine 上,不用关心底层细节,但是如果你需要深究docker底层细节,还是建议在linux上进行安装。

#install some tools
sudo yum install -y git vim gcc glibc-static telnet bridge-utils net-tools

#install docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
#开机启动
sudo systemctl enable docker.service
# start docker service
sudo systemctl start docker
#将当前用户添加到docker组下,避免sudo执行docker
sudo groupadd docker
sudo gpasswd -a vagrant docker
sudo systemctl restart docker.service
rm -rf get-docker.sh

如果是本地学习使用,建议 vgrant + virtualBox 的方式安装虚拟机,然后再在其上面进行安装 docker

 

 

# vgrant + virtualBox

版本要求:

  • 下载最新的 virtualBox
  • 下载最新的 vagrant (要求最低版本为2.2)

新增 vagrant centos7 Box 镜像:

# 初始化 centos 当前目录下生成 VagrantFile 配置文件
vagrant init centos/7
# 但是一般从 vagrantCloud 下载都会很慢,所以可以提前下载放到本地
# 前往 https://cloud.centos.org/centos/7/vagrant/x86_64/images/
# 下载对应的VirtualBox.Box文件。
# 放到 vagrant 的Boxes目录下 ~/.vagrant.d/Boxes
cd /Users/${username}/.vagrant.d/Boxes 
# 然后使用命令
vagrant Box add centos/7 ~/.vagrant.d/CentOS-7-x86_64-Vagrant-1804_02.VirtualBox.Box

安装虚拟机:

# 解决挂载磁盘的问题
# 报错 No VirtualBox Guest Additions installation found.
# 更改 gem 源地址
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 安装插件
vagrant plugin install vagrant-vbguest --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
# 安装 
vagrant up

 

vagrant 挂载 mount 的时候后面会有这样的问题,不知道其他的版本有没有,先记录下来解决方法

umount: /mnt: not mounted
==> yy-vm: Checking for guest additions in VM...
    yy-vm: No guest additions were detected on the base Box for this VM! Guest
    yy-vm: additions are required for forwarded ports, shared folders, host only
    yy-vm: networking, and more. If SSH fails on this machine, please install
    yy-vm: the guest additions and repackage the Box to continue.
    yy-vm:
    yy-vm: This is not an error message; everything may continue to work properly,
    yy-vm: in which case you may ignore this message.
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command Failed!

umount /mnt

Stdout from the command:

Stderr from the command:

umount: /mnt: not mounted

解决方法升级 vagrant 的插件

vagrant plugin uninstall vagrant-vbguest
vagrant plugin install vagrant-vbguest --plugin-version 0.21

关于 docker 和 vagrant 的配置文件我一般是这样配置的:

文件目录

.
├── Vagrantfile
├── setup.sh
└── workspace
    └── README.md

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.6.0"

Boxes = [
    {
        :name => "yy-vm",
        :eth1 => "192.168.5.140",
        :mem => "1024",
        :cpu => "1"
    }
]

Vagrant.configure(2) do |config|

  config.vm.Box = "centos/7"
  Boxes.each do |opts|
    config.vm.define opts[:name] do |config|
      config.vm.hostname = opts[:name]
      config.vm.provider "vmware_fusion" do |v|
        v.vmx["memsize"] = opts[:mem]
        v.vmx["numvcpus"] = opts[:cpu]
      end
      config.vm.provider "virtualBox" do |v|
        v.customize ["modifyvm", :id, "--memory", opts[:mem]]
        v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
      end
      config.vm.network :private_network, ip: opts[:eth1]
    end
  end
  config.vm.synced_folder "./workspace", "/opt/htdocs2", create:true, type:"nfs"
  config.vm.provision "shell", privileged: true, path: "./setup.sh"
end

setup.sh

#/bin/sh

# install some tools
sudo yum install -y git vim gcc glibc-static telnet

# install docker
curl -fsSL get.docker.com -o get-docker.sh

# init docker origin source
filePath="/etc/docker/daemon.json"
if [ ! -f "$filePath" ];then
mkdir -p /etc/docker/
touch $filePath
fi
cat>/etc/docker/daemon.json<<EOF
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

sh get-docker.sh

# start docker service
sudo groupadd docker
sudo gpasswd -a vagrant docker
sudo systemctl enable docker.service
sudo systemctl start docker.service

rm -rf get-docker.sh

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐