mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-11-24 07:23:38 +00:00
fix code formatting and rewrite part content
This commit is contained in:
parent
22afe36b0f
commit
7fda9225a1
@ -2,7 +2,9 @@
|
||||
判断2个容器之间是否能够通信,在操作系统层面,取决于3个因素:
|
||||
* 网络拓扑是否连接到容器的网络接口?默认docker会将所有的容器连接到docker0这网桥来提供数据包通信。其他拓扑结构将在稍后的文档中详细介绍。
|
||||
* 主机是否开启ip转发,ip_forward参数为1的时候可以提供数据包转发。通常你只需要为docker 设定 --ip-forward=true,
|
||||
docker 就会在服务启动的时候设定ip_forward参数为1。下面是手工检查并手工设定该参数的方法。
|
||||
docker 就会在服务启动的时候设定ip_forward参数为1。
|
||||
|
||||
下面是手工检查并手工设定该参数的方法。
|
||||
```
|
||||
# Usually not necessary: turning on forwarding,
|
||||
# on the host where your Docker server is running
|
||||
|
@ -1,20 +1,20 @@
|
||||
##部署本地仓库
|
||||
由于网络的关系,国内用户在使用docker hub的时候,很难pull一个基本的镜像下来。
|
||||
有时候使用Docker Hub这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
|
||||
|
||||
本节介绍如何创建部署本地仓库。
|
||||
|
||||
###安装docker
|
||||
参见本文第三小节
|
||||
###从文件系统创建一个image镜像
|
||||
创建镜像有很多方法,官方的推荐是pull一个,不过在墙内,想pull一个基本的ubuntu都没办法完成。
|
||||
这里推荐一个办法就是从一个文件系统import一个镜像,个人推荐可以使用opvz的模板来创建:(openvz可以说是容器虚拟化的先锋吧)
|
||||
###从文件系统创建一个镜像
|
||||
创建镜像有很多方法,用户可以从Docker Hub获取一个,也可以利用本地文件系统创建一个。
|
||||
|
||||
要从本地文件系统import一个镜像,个人推荐可以使用openvz(容器虚拟化的先锋技术)的模板来创建:
|
||||
openvz的模板下载地址如下:
|
||||
http://openvz.org/Download/templates/precreated
|
||||
下载完之后,比如:下载了一个ubuntu14.04的镜像
|
||||
使用以下命令:
|
||||
比如:下载了一个ubuntu14.04的镜像,
|
||||
下载完之后,使用以下命令:
|
||||
```
|
||||
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
|
||||
```
|
||||
然后用docker images看下:
|
||||
然后查看镜像:
|
||||
```
|
||||
docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
||||
@ -23,7 +23,7 @@ ubuntu 14.04 05ac7c0b9383 17 seconds ago
|
||||
就多了一个我们的ubuntu镜像
|
||||
|
||||
###创建私有仓库
|
||||
官方指南称最简单的办法是 docker run -p 5000:5000 registry,如果被墙了,也无法下载该images。感谢CSDN,我有一个1M的腾讯云服务器,上面搭建了一个私有仓库大家可以使用
|
||||
官方指南称最简单的办法是`docker run -p 5000:5000 registry` 但是如果被墙了,也无法下载该images。感谢CSDN,我有一个1M的腾讯云服务器,上面搭建了一个私有仓库大家可以使用
|
||||
docker pull 203.195.193.251:5000/registry
|
||||
到我的服务器下载 速度虽然慢点,但有保证!
|
||||
另外的方法是使用刚才的创建的ubuntu来创建,官方有个docker仓库的源码地址 https://github.com/dotcloud/docker-registry 下载私有仓库的源码,可以根据上面的docker file来创建。
|
||||
@ -32,9 +32,9 @@ docker pull 203.195.193.251:5000/registry
|
||||
http://www.vpsee.com/2013/11/build-your-own-docker-private-regsitry-service/
|
||||
|
||||
###在私有仓库上传、下载、搜索images
|
||||
创建好自己的私有仓库之后,可以使用docker tag 一个镜像,然后push,然后在别的机器上pull下来就好了。这样我们的局域网私有docker仓库就搭建好了。
|
||||
创建好自己的私有仓库之后,可以使用`docker tag` 一个镜像,然后push,然后在别的机器上pull下来就好了。这样我们的局域网私有Docker仓库就搭建好了。
|
||||
步骤如下:
|
||||
使用 docker run -p 5000:5000 registry 在局域网的一台机器上开启一个容器之后,我的局域网私有仓库地址为192.168.7.26:5000
|
||||
使用`docker run -p 5000:5000 registry` 在局域网的一台机器上开启一个容器之后,我的局域网私有仓库地址为192.168.7.26:5000
|
||||
先在本机看下现有的images
|
||||
```
|
||||
root ~ # docker images
|
||||
|
@ -1,29 +1,38 @@
|
||||
##使用 Supervisor来管理进程
|
||||
docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。.
|
||||
docker 容器在启动的时候开启单个进程,比如,一个ssh或则apache 的daemon服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令方到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。
|
||||
|
||||
本小节将使用进程管理工具supervisor来管理容器中的多个进程。使用Supervisor可以更好的控制、管理、重启我们希望运行的进程。在这里我们演示一下如何同时使用ssh和apache服务。
|
||||
###dockerfile
|
||||
|
||||
###配置
|
||||
首先创建一个dockerfile。
|
||||
```
|
||||
FROM ubuntu:13.04
|
||||
MAINTAINER examples@docker.com
|
||||
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
|
||||
RUN apt-get update
|
||||
RUN apt-get upgrade -y
|
||||
```
|
||||
|
||||
安装supervisor
|
||||
安装 ssh apache supervisor
|
||||
|
||||
```
|
||||
RUN apt-get install -y openssh-server apache2 supervisor
|
||||
RUN mkdir -p /var/run/sshd
|
||||
RUN mkdir -p /var/log/supervisor
|
||||
```
|
||||
这里安装3个软件,还创建了2个用来允许ssh和supervisor的目录
|
||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
添加supervisor‘s的配置文件
|
||||
添加配置文件到对应目录下面
|
||||
映射端口,开启supervisor
|
||||
使用dockerfile来映射指定的端口,使用cmd来启动supervisord
|
||||
```
|
||||
EXPOSE 22 80
|
||||
CMD ["/usr/bin/supervisord"]
|
||||
```
|
||||
这里我们映射了22 和80端口,使用supervisord的可执行路径启动服务。
|
||||
###supervisor配置文件内容
|
||||
|
||||
supervisor配置文件内容为。
|
||||
```
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
@ -35,7 +44,7 @@ command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFO
|
||||
```
|
||||
配置文件包含目录和进程,第一段supervsord配置软件本身,使用nodaemon参数来运行。下面2段包含我们要控制的2个服务。每一段包含一个服务的目录和启动这个服务的命令
|
||||
###使用方法
|
||||
创建image
|
||||
创建镜像
|
||||
```
|
||||
$ sudo docker build -t test/supervisord .
|
||||
```
|
||||
@ -48,7 +57,6 @@ $ sudo docker run -p 22 -p 80 -t -i test/supervisords
|
||||
2013-11-25 18:53:23,346 INFO spawned: 'sshd' with pid 6
|
||||
2013-11-25 18:53:23,349 INFO spawned: 'apache2' with pid 7
|
||||
```
|
||||
使用docker run来启动我们创建的容器。使用多个-p 来映射多个端口,这样我们就能同时访问ssh和apache服务了。
|
||||
使用`docker run`来启动我们创建的容器。使用多个`-p` 来映射多个端口,这样我们就能同时访问ssh和apache服务了。
|
||||
|
||||
###可以使用这个方法创建一个只有ssh服务基础image
|
||||
之后创建image可以以这个image为基础来创建
|
||||
可以使用这个方法创建一个只有ssh服务基础image,之后创建镜像可以以这个镜像为基础来创建
|
||||
|
Loading…
Reference in New Issue
Block a user