周煜暖
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
docker与vmware区别
1.VMware是属于完全虚拟机化,而docker则是轻量级虚拟化(只虚拟出来容器所需要的资源)
2.传统的虚拟机是虚拟一整套硬件后,在其运行一个完整的操作系统,而容器内的应用进程直接运行于宿主的内核,容器没有自己的内核并且也没有进行硬件虚拟。
3.VMware对硬件的利用率在30%左右,而docker对硬件的利用率在60%-80%左右。
4.但是docker相当对于虚拟机来说安全性没有那么高
可以这么理解docker本身他不是容器,他只是负责管理容器
dockers基础知识
镜像(images):静态文件, 默认拉取镜像是采用的是http/https(加了一层安全协议)协议。可类比为vmware的iso镜像
容器(container):动态,有生命周期(启动就有没启动就没有,up)容器与容器之间是相互隔离的(共享资源)。可类比为vmware中创建的虚拟机,ova这些的。
仓库(registry):有几十万个镜像(公共仓库,都是大家推上去的镜像然后共享)dockerhub从这里拉取镜像会非常慢(因为是国外的网站) 阿里云注册(建议可以注册一个方便学习使用)获得阿里云加速器(daemon.json)。可类比为镜像的github。
docker安装
Linux docker 安装
使用官方安装脚本自动安装 安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
手动安装(略,菜鸟教程上有,感觉比较麻烦)
windows docker 安装
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。
docker镜像加速
docker国内加速器
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
Ubuntu16.04+、Debian8+、CentOS7
对于使用systemd
的系统,请在/etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
之后重新启动服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
检查加速器是否生效
检查加速器是否生效配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。
$ docker info
Registry Mirrors:
https://reg-mirror.qiniu.com
docker使用代理拉取镜像
1、创建配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d
2、添加环境变量
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
在配置文件中添加以下内容(其中,proxy-addr
为虚拟机ip地址,port
为端口号(Clash是7890):
[Service]
Environment="HTTP_PROXY=http://proxy-addr:port/" # 代理服务器地址
Environment="HTTPS_PROXY=http://proxy-addr:port/" # https
Environment="NO_PROXY=localhost,127.0.0.1" # 哪些地址不需要走代理
3、更新配置并重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker`
4、验证
docker search centos
不报错即docker代理设置成功。
docker使用
使用流程:拉取镜像--使用容器
Docker镜像使用
查找镜像
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
runoob@runoob:~$ docker search httpd
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建
拖取镜像
我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像
删除镜像
镜像删除使用 docker rmi 命令,比如我们删除 httpd 镜像:
$ docker rmi httpd(镜像名或镜像id)
列出镜像
docker image ls -a
docker images
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGEID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
Docker容器使用
获取镜像
如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
$ docker pull ubuntu
启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
root@ed09e4490c57:/# exit
停止一个容器
停止容器的命令如下:
$ docker stop <容器 ID>
docker restart 重启:
$ docker restart <容器 ID>
启动已停止运行的容器
查看所有的容器命令如下:
$ docker ps -a
使用 docker start 启动一个已停止的容器:
$ docker start b750bbbcfd88
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
注:加了 -d参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)
进入容器
在使用 -d参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach:如果从这个容器退出,会导致容器的停止。
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
attach 命令
$ docker attach <容器id>
注意:如果从这个容器退出,会导致容器的停止。
exec 命令
下面演示了使用 docker exec 命令。
docker exec -it <容器id> /bin/bash
导出和导入容器
可以理解成vmware虚拟机文件打包成的压缩包
导出容器
如果要导出本地某个容器,可以使用 docker export命令。
$ docker export 1e560fca3906 > ubuntu.tar
这样将导出容器快照到本地文件。
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
删除容器
下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
类似与删除vmware中的虚拟机
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)