Docker 一文详解介绍

目录

Docker与虚拟机比较

安装

Linux安装

客户端和守护进程

Docker 的 C/S 模式

Docker 守护进程的配置和操作

启动配置文件

Docker 的远程访问

Docker容器

容器的基本操作

守护式容器

在容器中部署静态网站

链接另一个容器

Docker镜像

搜索镜像

下载镜像

查看已下载镜像列表

给镜像添加标签

删除镜像

导出镜像

导入镜像

创建镜像

上传镜像

Docker数据卷及数据卷容器

数据卷

数据卷容器

使用Dockerfile创建镜像

Dockerfile文件语法

Docker Compose

安装Compose

Compose示例

docker-compose.yml常用指令

docker-compose 自定义网络


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

官网:https://www.docker.com/
相关资料:
1、Docker入门教程Docker 教程 | 菜鸟教程
2、Docker_百度百科 Docker_百度百科
3、史上最全Docker资料集粹 http://special.csdncms.youkuaiyun.com/BeDocker/
4、Docker - 话题精华 - 知乎 Docker - 知乎
5、docker 简明教程 | 简果网 docker 简明教程 | 简果网
6、如何使用Dockerfile构建镜像 Docker 镜像使用 | 菜鸟教程
7、Dockerfile reference - Docker https://docs.docker.com/engine/reference/builder/

Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

  • Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
  • Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
  • Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
  • Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。

(本段摘自《Docker技术入门与实战》)

虚拟机实现了硬件上的虚拟,而Docker则实现了操作系统级别的虚拟。

安装

Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本:

[root@bogon ~]#  uname -r
3.10.0-327.22.2.el7.x86_64

Docker支持以下的CentOS版本:

  • CentOS 7 (64-bit)
  • CentOS 6.5 (64-bit) 或更高的版本

Docker 支持以下的 Ubuntu 版本:

  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Wily 15.10
  • 其他更新的版本……

Linux安装

curl -fsSL https://get.docker.com/ | sh

# daocloud.io 国内镜像
curl -sSL https://get.daocloud.io/docker | sh

该安装包适用于 Ubuntu,Debian,Centos 等大部分主流 Linux 发行版。

当以普通用户身份去使用docker images时,如果出现以下错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied

是因为权限问题:

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker

CentOS7支持使用yum安装:

yum update
yum install docker

查看文档:
https://docs.docker.com/engine/installation/linux/centos/
DaoCloud Enterprise 5.0

查看版本:

docker version

显示:

Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

启动docker服务:

service docker start 

# 或者
systemctl start docker

centos7使用systemctl 替代service 管理服务。systemctl 常见用法:

# 格式
systemctl   动作   服务名.service

# 常见命令
systemctl start docker #启动
systemctl restart docker #重启
systemctl stop docker #停止
systemctl status docker #查看状态
systemctl enable docker #自启动
systemctl disable docker #禁止自启动

.service可以省略。
(详见:RHEL7中systemctl的用法 RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)_redhat systemctl替代-优快云博客)

为了后面的需要,我们这里下载个ubuntu的镜像:

docker search ubuntu
docker pull ubuntu

# 查看所有可用镜像
docker images -a

这就下载了最新的ubuntu系统镜像到本地,接下来我们可以从该镜像创建多个容器。具体命令含义下面会有说明。

Docker里比较重要的概念有注册服务器、仓库、镜像、容器。

仓库: 注册服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像。

镜像: Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统。例如:一个镜像可以只包含一个完整的Ubuntu操作系统环境,可以把它称为一个Ubuntu镜像。

容器: 容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离、互不可见的。可以从一个镜像创建无数个容器。平时我们主要操作的就是容器。我们也可以把容器打包成镜像以方便再次使用。镜像自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。

客户端和守护进程

这部分将介绍docker的结构以及docker服务的管理。

Docker 的 C/S 模式

docker是C/S架构,使用client与Server通信。

支持三种连接方式:
unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

Docker 守护进程的配置和操作

使用ps -ef | grep docker查看docker进程。

管理docker服务:

service docker start
service docker stop
service docker restart

如使用service docker start实际上是执行了/bin/systemctl start docker.service命令。
建议重启使用:

systemctl daemon-reload
systemctl restart docker.service

docker守护进程的配置和操作模式:

docker -d [OPTIONS]

-d 以后台方式运行容器。

下面是容器创建时的一些配置,按需添加。初学者可以简单看看,以后需要再来查找。

运行相关:

 -D, --debug=false
 -e,--exec-driver="native"
 -p,--pidfile="/var/run/docker.pid"

服务器相关:

 -G,--group="docker"
 -H,--host=[]
 --tls=false

RemoteAPI相关:

	--api-enable-cors=false

存储相关:

 -S,--storage-driver=""
 --selinux-enabled=false
 --storage-opt=[]

网络设置相关:

 -b,--bridge="" 设置自定义网桥
 --bip=""
 --dns=[]
 --ip=0.0.0.0

启动配置文件

Ubuntu: /etc/default/docker
CentOS: /etc/sysconfig/docker

如果没有配置文件,可以直接编辑:

vim  /lib/systemd/system/docker.service

里面的ExecStart就是启动配置,默认是:

ExecStart=/usr/bin/docker -H fd://

我们可以加几个配置:

ExecStart=/usr/bin/docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.soc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值