Docker入门教程
Docker 是一个开源的应用容器引擎,而一个容器containers其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 的局限性之一,它只能用在 64 位的操作系统上。
Docker 从 1.13 版本之后采用时间线的方式作为版本号,分为社区版 CE 和企业版 EE,社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
社区版按照 stable 和 edge 两种方式发布,每个季度更新 stable 版本,如 17.06,17.09;每个月份更新 edge 版本,如17.09,17.10。
下面教程运行在 Centos 中
新版本安装
Docker 官方的安装教程,在这里。
安装一些必要的系统工具
添加软件源信息
可选:启用 edge 和 test 存储库。 这些存储库包含在上面的 docker.repo 文件中,但默认情况下处于禁用状态。您可以将它们与稳定存储库一起启用。
您可以通过使用 --disable 标志运行 yum-config-manager 命令来禁用边缘或测试存储库。 要重新启用它,请使用 --enable 标志。 以下命令禁用 edge 存储库:
安装 Docker-ce
如果你想安装特定 docker-ce 版本,先列出 repo 中可用版本,然后选择安装
启动 Docker 后台服务
通过运行 hello-world 镜像,验证是否正确安装了 docker。
旧版本安装
命令介绍
服务管理
镜像管理
镜像可以看做我们平时装系统的镜像,里面就是一个运行环境。
通过容器创建镜像
我们可以通过以下两种方式对镜像进行更改。
从已经创建的容器中更新镜像,并且提交这个镜像
使用 Dockerfile 指令来创建一个新的镜像
下面通过已存在的容器创建一个新的镜像。
上面命令参数说明:
-m提交的描述信息-a指定镜像作者a6b0a6cfdacf记住这个是容器id,不是镜像idwcjiang/nginx:v1.2.1创建的目标镜像名
通过Dockerfile创建镜像
假设创建一个 node.js 镜像,首先在 node.js 项目根目录创建文件。
.dockerignore 文件内容,下面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。
Dockerfile 文件内容
FROM node:8.4:该image文件继承官方的node image,冒号表示标签,这里标签是8.4,即8.4版本的node。COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入image文件的/app目录。WORKDIR /app:指定接下来的工作路径为/app。RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入image文件。EXPOSE 3000:将容器3000端口暴露出来, 允许外部连接这个端口。
有了 Dockerfile 文件以后,就可以使用 docker image build 命令创建 image 文件了。
上面命令,-t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是 latest。注意后面有个 .,表示 Dockerfile 文件所在的路径为当前路径
发布自己的镜像
将上面做的镜像
nginx,起个新的名字nginx-test
登录docker
上传
nginx-test镜像
镜像中安装软件
通常情况下,使用docker官方镜像,如 mysql镜像,默认情况下镜像中啥软件也没有,通过下面命令安装你所需要的软件:
如果你安装了CentOS或者Ubuntu系统可以进入系统安装相关软件
容器管理
容器就像一个类的实例
容器服务管理
进入容器
创建一个守护状态的Docker容器
使用
docker ps查看到该容器信息
使用
docker exec命令进入一个已经在运行的容器
通常有下面几种方式进入Docker的容器,推荐使用exec,使用attach一直进入失败。
使用
docker attach使用
nsenter进入Docker容器,nsenter官方仓库使用
docker exec,在1.3.*之后提供了一个新的命令exec用于进入容器
文件拷贝
从主机复制到容器 sudo docker cp host_path containerID:container_path
从容器复制到主机 sudo docker cp containerID:container_path host_path
Docker私有仓库搭建
通过官方提供的私有仓库镜像registry来搭建私有仓库。通过 humpback 快速搭建轻量级的Docker容器云管理平台。关于仓库配置说明请参见configuration.md
⚠️ 注意:也可以通过部署管理工具
Harbor来部署registry
除了 Harbor 还有 humpback 和 rancher
registry
registry创建容器并运行,创建成功之后,可访问 http://192.168.99.100:7000/v2/,来检查仓库是否正常运行,当返回 {} 时,表示部署成功。
推送镜像到私有仓库
在推送到的时候报错误,默认是使用https提交,这个搭建的默认使用的是 http,解决方法两个:
创建一个https映射
将仓库地址加入到不安全的仓库列表中
我们使用第二种方法,加入到不安全的仓库列表中,修改docker配置文件vi /etc/docker/daemon.json 添加 insecure-registries配置信息,如果 daemon.json 文件不存在可以创建,关键配置项,将仓库将入到不安全的仓库列表中。
如果是 macOS 可以通过 docker 客户端,
Preferences=>Advanced=>添加配置=>Apply & Restart,重启docker就可以了。
重启服务 service docker restart,默认情况下 push 是会报如下错误的:
上面错误是 SELinux 强制访问控制安全系统,阻止导致的错误,通过下面方法禁用 SELinux 之后就可以 push 了。
Harbor
Harbor使用Docker实战
⚠文件挂载注意:docker 禁止用主机上不存在的文件挂载到 container 中已经存在的文件
Nginx
NginxMySQL
MySQLRedis
RedisElasticsearch
ElasticsearchGitlab
GitlabRocket.Chat
Rocket.ChatHumpback
Humpback首先创建放持久化数据文件夹,mkdir -p /opt/app/humpback-web,里面存放持久化数据文件,会存储站点管理和分组信息,启动后请妥善保存。
访问站点,打开浏览器输入:http://192.168.99.100:7001 ,默认账户:admin 密码:123456
Seafile
Seafile更多
卸载旧的版本
移除旧的版本
参考资料
官方英文资源
Docker官网:http://www.docker.com
Docker windows入门:https://docs.docker.com/windows/
Docker Linux 入门:https://docs.docker.com/linux/
Docker mac 入门:https://docs.docker.com/mac/
Docker 用户指引:https://docs.docker.com/engine/userguide/
Docker 官方博客:http://blog.docker.com/
Docker Hub: https://hub.docker.com/
Docker开源: https://www.docker.com/open-source
中文资源
Docker中文网站:http://www.docker.org.cn
Docker中文文档:http://www.dockerinfo.net/document
Docker安装手册:http://www.docker.org.cn/book/install.html
一小时Docker教程 :https://blog.csphere.cn/archives/22
其它资源
Last updated
Was this helpful?