专注于快乐的事情

Docker简介和安装

本文于925天之前发表,文中内容可能已经过时。

Docker简介

一个容器实质是运行在宿主机器上的一个进程,最小组成公式为:
容器=cgroups + namespace + rootfs + engine

Docker历史

column column
2008 年 Solomon Hykes 为了建立一个与编程语言无关的平台即服务产品,创立了 dotCloud 公司。
2013 年 3 月 dotCloud 将其核心组件 Docker 开源
6 个月内 Docker 早期的版本只是在简单封装 LXC 以及联合文件系统(union filesystem)之上多加了点东西,而在随后的6 个月内,Docker 就在 GitHub 上获得了 6700 多颗星,以及 175 名非公司员工的贡献者。这导致 dotCloud 把公司名称改为 Docker,并将公司的商业模式重新定位
2013 年 9 月 红帽于 2013 年 9 月成为了它的主要合作伙伴,利用 Docker 来驱动它的 OpenShift 云业务。谷歌、亚马逊和 DigitalOcean 也迅速地在其云服务平台提供 Docker 的支持
2014 年 6 月 Docker 1.0发布,代表着稳定性与可靠性的飞跃,同时,Docker 推出了一个名为 Docker Hub 的公共容器仓库,这标志着 Docker 从一个单纯的容器引擎开始转变为一个完整的平台。
2014 年 12 月 在 2014 年 12 月举行的 DockerConEU 上,Docker Swarm 与 Docker Machine 同时面世。 Docker Swarm 是一个 Docker 集群管理工具,而 Docker Machine 是个部署 Docker 主机的命令行工具。这表明 Docker 的意图不仅仅是提供 Docker 引擎,而是提供一个完整且综合的容器运行方案。
2015 年 6 月 DockerCon 在旧金山举行,来自 Docker 的 Solomon Hykes 与来自 CoreOS 的 Alex Polvi 宣布开放容器促进会(当时称为开放容器计划,Open Container Project)正式成立,目的是要发展出一套通用的容器格式与运行环境的标准。
2015 年 6 月 FreeBSD 项目宣布支持 Docker 利用 ZFS 和 Linux 兼容层来运行
2015 年 8 月 Docker 与微软推出专为 Windows server开发的 Docker Engine“技术预览”版

Docker安装

微服务是容器最主要的用例,也是容器技术兴起的最大推动力。
64 位 Linux 是唯一一个能稳定运行 Docker 且适合用于生产环境的平台

简单的安装

sudo apt-get update

sudo apt-get install -y docker.io

官方源安装

curl https://get.docker.com > /tmp/docker/install.sh
chmod +x /tmp/docker/install.sh
/tmp/docker/install.sh

进行测试

开启docker的守护进程

sudo service docker start

配置开机启动,执行sudo systemctl enable docker

不使用sudo命令执行Docker

因为 Docker 运行时需要特殊权限,所以默认执行命令时都必须在前面加上 sudo。
将当前用户加入到组docker下,

加入用户到docker组中,

sudo usermod -aG docker myuser

以后就不需要使用sudo来执行了。
可能需要重新启动,Docker 服务sudo service docker restart

docker组是在安装docker的时候自动建立的
可以通过cut -d: -f1 /etc/group | grep docker查看
需要注意:重新启动计算机或者注销用户再登入,才能生效。

测试安装

docker version

查看正在运行的容器

Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   78d1802
 Built:        Tue Jan 31 23:35:14 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   78d1802
 Built:        Tue Jan 31 23:35:14 2017
 OS/Arch:      linux/amd64

上面的结果表示已经准备就绪,如果有错误,可以sudo docker daemon 来手动启动 Docker 守护进程,并查看错误信息。

其他操作

更新Docker

`sudo apt-get upgrade docker-engine`

卸载Docker

`sudo apt-get purge docker-engine`

进行加速

Docker Hub是全球最大的Docker共用仓库,为了解决国内用户使用 Docker Hub 时遇到的稳定性及速度问题,可以改变默认镜像地址。
可以参考http://guide.daocloud.io/dcs/daocloud-9153151.html

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d22ab3fe.m.daocloud.io

执行成功后,如果Docker 版本在 1.12 或更高,会创建或修改 /etc/docker/daemon.json 文件
{“registry-mirrors”: [“http://d22ab3fe.m.daocloud.io"]}

进行重新启动
sudo systemctl restart docker.service

第一个命令
docker run ubuntu echo "Hello World"
出现hello

Harbor安装

$ wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
$ tar xvf harbor-online-installer-v1.1.2.tgz

用户名: admin
密码: Harbor12345

修改/lib/systemd/system/docker.service

# Modified,origin: ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry xx.xxx.xx.xx:5000

然后执行命令:

sudo systemctl daemon-reload
sudo systemctl restart docker

重启
sudo docker-compose stop
sudo docker-compose up -d

其他目录文件
/etc/default/docker
/etc/init/docker.conf
/etc/init.d/docker

问题

然而在某些情况下(例如, Ubuntu Docker 容器), net-tools 工具包将不会被默认安装,这就意味着不能使用 ifconfig 。尽管如此,还是可以用软件仓库来安装 net-tools 。
sudo apt-get install net-tools

https://blog.csdn.net/aixiaoyang168/article/details/73549898
https://www.cnblogs.com/huangjc/p/6420355.html

#参考网站 #

评论系统未开启,无法评论!