[关闭]
@xxliixin1993 2016-05-10T14:13:47.000000Z 字数 6094 阅读 1595

Docker

docker


安装docker的前提条件(ubuntu为例)

安装docker

  1. sudo echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list
  2. curl -s https://get.docker.io/gpg|sudo apt-key add -
  3. sudo apt-get update
  4. sudo apt-get install lxc-docker
  5. 安装完后 显示如下信息即成功
  6. root@ubuntu:~# docker info
  7. Containers: 13
  8. Running: 0
  9. Paused: 0
  10. Stopped: 13
  11. Images: 4
  12. Server Version: 1.10.3
  13. Storage Driver: aufs
  14. Root Dir: /var/lib/docker/aufs
  15. Backing Filesystem: extfs
  16. Dirs: 29
  17. Dirperm1 Supported: false
  18. Execution Driver: native-0.2
  19. Logging Driver: json-file
  20. Plugins:
  21. Volume: local
  22. Network: bridge null host
  23. Kernel Version: 3.13.0-67-generic
  24. Operating System: Ubuntu 14.04.1 LTS
  25. OSType: linux
  26. Architecture: x86_64
  27. CPUs: 2
  28. Total Memory: 7.707 GiB
  29. Name: ubuntu
  30. ID: JQFI:2MVE:NAFH:4N6I:JWBB:VRJS:7YHX:ZPXW:EMS5:4NHJ:A6PC:DQ3P
  1. # Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
  2. # if you change this you will most likely want to adjust your rules
  3. DEFAULT_FORWARD_POLICY="ACCEPT"
  4. 修改后
  5. ufw reload

docker的使用

搜索镜像

docker search centos

下载镜像

  1. Docker Hub仓库下载一个 Ubuntu 12.04 操作系统的镜像。
  2. sudo docker pull ubuntu:12.04
  3. 相当于
  4. sudo docker pull registry.hub.docker.com/ubuntu:12.04
  5. 即从注册服务器registry.hub.docker.com中的ubuntu仓库来下载标记为12.04 的镜像。其实你可以把官方仓库缓存国内或者私有仓库下载,即该服务器地址就行
  6. 下载成功后,你就可以运行测试了。
  7. 例如
  8. $ sudo docker run -t -i ubuntu:12.04 /bin/bash
  9. root@fe7fc4bd8fc9:/#

启动docker

  1. nohup docker deamon &>/dev/null &

列出本地镜像

使用docker images显示本地已有的镜像。

  1. root@ubuntu:~# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. learn/ping latest e6ad662e1e04 4 weeks ago 139.5 MB
  4. learn/tutorial latest 8011b83f9e77 4 weeks ago 139.5 MB

创建镜像

可以分为获取已有镜像并更新,也可以利用本地文件系统创建一个新的。

修改已有镜像

  1. $ sudo docker run -t -i learn/ping /bin/bash
  2. root@a0dec558a93d:/#
  3. root@a0dec558a93d:/# apt-get install -y vim
  4. root@:/# exit
  5. 记住ID a0dec558a93d
  6. $ sudo docker commit -m 'add vim' -a 'xxlixin' a0dec558a93d lixin/replace:v1

利用Dockerfile创建新的镜像

  1. mkdir firstDoc
  2. cd firsrDoc
  3. touch Dockerfile
  4. vim Dockerfile
  5. # First Docker
  6. FROM ubuntu:14.04
  7. MAINTAINER Docker lixin <xxlixin1993@gmail.com>
  8. RUN apt-get -qq update
  9. RUN apt-get -qqy install vim
  10. sudo docker build -t="lixin/first:v1" .
  11. -t表示添加tag
  12. .是当前路径

Dockerfile基本语法
- 使用#来注释
- FROM指令告诉Docker使用哪个镜像作为基础
- MAINTAINER 是维护者的信息
- RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件 RUN 或RUN ["executable", "param1", "param2"]
- 还可以是用ADD命令复制本地文件到镜像 例如ADD /etc/issue /tmp
- 用EXPOSE命令来向外部开放端口 例如EXPOSE 80
- 用CMD命令来描述容器启动后运行的程序 例如CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
- EXPOSE port 告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。
- ENV key value 设置环境变量
- COPY src des 复制本机的src到容器的des 用绝对路径

上传到Docker Hub

  1. docker login
  2. docker pull xxlixin1993/fitstcentos6.6
  3. 注意:最好在dockerhub网站上创建好repository在上传,因为有可能名字有冲突 可以用docker tag来修改名字和标记

移除本地镜像

  1. docker rmi -f lixin/centos6.6

对于容器的一些操作

  1. 先开启一个容器,例如docker run -itd ubuntu:14.04
  2. -d即以守护态进行
  3. 然后用docker ps -l可以查看状态
  4. docker stop|start|restart ID可以去进行停止,启动,重启的操作
  5. docker attach ID可以进入docker容器内进行操作

搭建私有仓库

  1. 要搭建的机器上:
  2. 先在要搭建的机器上下载registry镜像,这里以192.168.110.164为例
  3. sudo docker pull registry
  4. sudo docker run -d -p 5000:5000 registry
  5. 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:
  6. sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
  7. 这时用netstat -tnl|grep 5000可以看的已经启动了
  8. 在客户端的机器上:以ubuntu为例
  9. 修改配置文件
  10. vim /etc/init/docker.conf修改添加–insecure-registry 192.168.110.164:5000
  11. script
  12. # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
  13. DOCKER=/usr/bin/$UPSTART_JOB
  14. DOCKER_OPTS=
  15. if [ -f /etc/default/$UPSTART_JOB ]; then
  16. . /etc/default/$UPSTART_JOB
  17. fi
  18. exec "$DOCKER" daemon $DOCKER_OPTS insecure-registry 192.168.110.164:5000
  19. end script
  20. vim /etc/default/docker
  21. 注释了原有的改为DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.110.164:5000"
  22. 然后sudo restart docker
  23. 接下了就可以推送了sudo docker push 192.168.110.164:5000/centos6.6 名字一点要以私有仓库ip:port为最开始
  24. 下载私有仓库镜像sudo docker pull 192.168.110.164:5000/centos6.6
  25. 查看私有仓库镜像curl http://192.168.110.164:5000/v1/search(官网有一套RESTful API https://docs.docker.com/registry/spec/api/#deleting-an-image)

示例搭建Nginx

  1. # nginx dockerfile
  2. FROM centos/nginx:v2
  3. MAINTAINER Docker lixin <xxlixin1993@gmail.com>
  4. ENTRYPOINT service nginx start && /bin/bash

docker build -t 'nginx' .
- 运行 用本机的1234端口绑定80端口
docker run -itd -p 1234:80 nginx```
- 然后访问本机就可以的1234端口测试

挂载

  1. 是用dockerfile的VOLUME来挂在,但是不如命令灵活,因为不能指定挂载在容器的哪个目录下
  2. 用命令挂载。docker run -itd -p 1234:80 -v /home/lixin/api:/www sphinx:v3 运行一个sphinx:v3的容器,绑定本机的1234端口和容器的80端口,并将本机的/home/lixin/api挂载在容器的/www目录下

安装sphinx示例

安装sphinx

安装coreseek

  1. wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
  2. tar zxvf coreseek-4.1-beta.tar.gz
  3. cd coreseek-4.1-beta/mmseg-3.2.14
  4. ./bootstrap
  5. ./configure --prefix=/usr/local/mmseg3
  6. make && make install
  7. <div class="md-section-divider"></div>

如果遇到问题error: cannot find input file: src/Makefile.in 或者遇到其他类似error错误时... ,按下面的步骤:
yum -y install libtool
aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean

  1. yum -y install expat expat-devel
  2. cd csft-4.1/
  3. ./buildconf.sh
  4. ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
  5. make && make install
  6. 命令行测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)
  7. $ cd testpack
  8. $ cat var/test/test.xml #此时应该正确显示中文
  9. $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
  10. $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
  11. $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
  12. 结果应为
  13. Coreseek Fulltext 4.1 [ Sphinx 2.0.2-dev (r2922)]
  14. Copyright (c) 2007-2011,
  15. Beijing Choice Software Technologies Inc (http://www.coreseek.com)
  16. using config file 'etc/csft.conf'...
  17. index 'xml': query '网络搜索 ': returned 1 matches of 1 total in 0.000 sec
  18. displaying matches:
  19. 1. document=1, weight=1590, published=Thu Apr 1 07:20:07 2010, author_id=1
  20. words:
  21. 1. '网络': 1 documents, 1 hits
  22. 2. '搜索': 2 documents, 5 hits
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注