安装最新版本的Docker最新版本安装sh脚本
Docker
安装最新版本的Docker,只需一条命令。
% curl -sSL https://get.docker.com/ | sh
Docker
安装最新版本的Docker,只需一条命令。
% curl -sSL https://get.docker.com/ | sh
需要搭个开发环境就折腾了以下笔记:
1、命令:
docker pull ubuntu:14.04
用docker images可以看到pull回来的images镜像如下:
2、运行这个ubuntu 14并进到shell里:
docker run -i -t --name lnmp ubuntu:14.04 /bin/bash
然后按照lnmp.org的安装说明去安装即可。
3、本人这里修改了ubuntu 14的安装源改为cn的,默认是ubuntu.com的,vi用得不熟悉啊!批评自己了。
lnmpp安装:
wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
如果速度很慢就ctrl+c中断,再更换速度快的源来安装lnmp如下:
wget -c https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz --no-check-certificate && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
-------------------
最新稳定版本:
LNMP 1.2
下载版:http://soft.vpser.net/lnmp/lnmp1.2.tar.gz (107KB)
MD5:4be72b49b67605477871d3f9676ca52f
完整版:http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz (312MB)
MD5:b3d3d9e40395f4eb5e525adfaabfb675
国内下载地址:
https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz 下载时wget需要加--no-check-certificate参数
http://static.suod.ga/lnmp/lnmp1.2-full.tar.gz
新加坡:http://oah.vpser.net/lnmp1.2-full.tar.gz
最后更新: 2015年7月24日17:34 GMT+8
-------------------
注:期间如果有需要退出按 Ctrl+P+Q,重新进入容器需要docker attach IMAGE ID
安装完成后退出按 Ctrl+P+Q,然后用commit命令制作images:
$ docker commit -m="lnmp" -a="liangjia" 104569b342fd liangjia/lnmp:v1
再docker images看看是否成功生成images了:
root@server:/home# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
liangjia/lnmp v1 cd02de77b52b About a minute ago 4.158 GB
成功!
最后用命令run启动这个images镜像:
$docker run -i -t --name liangjia_lnmp liangjia/lnmp:v1 /bin/bash
Docker网络架构详解
时间:2014-11-19 来源:服务器之家 投稿:root
Docker网络详解
网络基础
Docker使用linux桥接,在主机虚拟一个docker0网络接口,在主机中运行命令查看:
$ sudo brctl showbridge name bridge id STP enabled interfacesdocker0 8000.000000000000 no
$ sudo ifconfig docker0docker0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
docker启动一个container时会会根据docker0的网段划分container的IP,docker0是每个container的网关。
自定义网络范围
尽管docker在使用linux brigde会找最合适的。但是有时候我们还是需要自己规划。
使用-b=
$ sudo service docker stop
$ sudo ifconfig docker0 down
$ sudo brctl addbr bridge0
$ sudo ifconfig bridge0 192.168.227.1 netmask 255.255.255.0
$ echo "DOCKER_OPTS=\"-b=bridge0\"" >> /etc/default/docker
$ sudo service docker start
$ sudo ifconfig bridge0
bridge0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.1 Bcast:192.168.227.255 Mask:255.255.255.0
docker run -i -t base /bin/bash
root@261c272cd7d5:/# ifconfig eth0
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.5 Bcast:192.168.227.255 Mask:255.255.255.0
root@261c272cd7d5:/# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.227.1 0.0.0.0 UG 0 0 0 eth0
192.168.227.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
$ sudo brctl show
bridge name bridge id STP enabled interfaces
bridge0 8000.fe7c2e0faebd no vethAQI2QT
container互通
docker默认是允许container互通,通过-icc=false关闭互通。
一旦关闭了互通,只能通过-link name:alias命令连接指定container.
container互相隔离的情况下,假设我们有一个webapp container,一个redis contianer需要互通。
先启动redis container:
sudo docker run -d --name redis crosbymichael/redis
再启动webapp并联通到redis
在webapp中可以看到db的网络信息:
$ root@4c01db0b339c:/# env
HOSTNAME=4c01db0b339c
DB_NAME=/webapp/db
TERM=xterm
DB_PORT=tcp://172.17.0.8:6379
DB_PORT_6379_TCP=tcp://172.17.0.8:6379
DB_PORT_6379_TCP_PROTO=tcp
DB_PORT_6379_TCP_ADDR=172.17.0.8
DB_PORT_6379_TCP_PORT=6379
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/
container=lxc
_=/usr/bin/env
root@4c01db0b339c:/#
0.11版本以后,-- link redis:db的别名,会在/etc/hosts中生成对应的ip映射:
root@6541a75d44a0:/# cat /etc/hosts172.17.0.3 6541a75d44a0172.17.0.2 db
什么是vethxxxx
$ sudo brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.fe7c2e0faebd no vethAQI2QT
vethxxx是主机与container内部eth0相连的管道。详见ip link和namespaces infrastructure
更多
pipework可以创建各种复杂的containers互通的场景。详见here
Docker命令使用详解
时间:2014-11-20 来源:服务器之家 投稿:root
如果各位看官熟悉 Git 和 GitHub ,可与 Docker 做个类比,可更加容易理解 Docker 和 Docker Hub 及两者关系。
显示 Docker 版本信息。
显示 Docker 系统信息,包括镜像和容器数。
从 Docker Hub 中搜索符合条件的镜像。
--automated 只列出 automated build
类型的镜像;
--no-trunc 可显示完整的镜像描述;
-s 40 列出收藏数不小于40的镜像。
从 Docker Hub 中拉取或者更新指定镜像。
-a 拉取所有 tagged 镜像 。
按步骤输入在 Docker Hub 注册的用户名、密码和邮箱即可完成登录。
运行后从指定服务器登出,默认为官方服务器。
列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。
-a 列出所有镜像(含过程镜像);
-f 过滤镜像,如: -f ['dangling=true'] 只列出满足
dangling=true 条件的镜像;
--no-trunc 可显示完整的镜像ID;
-q 仅列出镜像ID。
--tree 以树状结构列出镜像的所有提交历史。
列出所有运行中容器。
-a 列出所有容器(含沉睡镜像);
--before="nginx" 列出在某一容器之前创建的容器,接受容器名称和ID作为参数;
--since="nginx" 列出在某一容器之后创建的容器,接受容器名称和ID作为参数;
-f [exited=
exited=
-l 仅列出最新创建的一个容器;
--no-trunc 显示完整的容器ID;
-n=4 列出最近创建的4个容器;
-q 仅列出容器ID;
-s 显示容器大小。
从本地移除一个或多个指定的镜像。
-f 强行移除该镜像,即使其正被使用;
--no-prune 不移除该镜像的过程镜像,默认移除。
-f 强行移除该容器,即使其正在运行;
-l 移除容器间的网络连接,而非容器本身;
-v 移除与容器关联的空间。
查看指定镜像的创建历史。
--no-trunc 显示完整的提交记录;
-q 仅列出提交记录ID。
启动、停止和重启一个或多个指定容器。
-a 待完成
-i 启动一个容器并进入交互模式;
-t 10 停止或者重启容器的超时时间(秒),超时后系统将杀死进程。
杀死一个或多个指定容器进程。
-s "KILL" 自定义发送至容器的信号。
从服务器拉取个人动态,可选择时间区间。
将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-o "debian.tar" 指定保存的镜像归档。
从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-i "debian.tar" 指定载入的镜像归档。
将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
从归档文件(支持远程文件)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
查看一个正在运行容器进程,支持 ps 命令参数。
检查镜像或者容器的参数,默认返回 JSON 格式。
-f 指定返回值的模板文件。
暂停某一容器的所有进程。
恢复某一容器的所有进程。
标记本地镜像,将其归入某一仓库。
-f 覆盖已有标记。
将镜像推送至远程仓库,默认为 Docker Hub 。
获取容器运行时的输出日志。
-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
--tail="10" 仅列出最新10条容器日志。
启动一个容器,在其中运行指定命令。
-a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb" 为容器指定一个名称;
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致;
-h "mars" 指定容器的hostname;
-e username="ritchie" 设置环境变量;
--env-file=[] 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2"
绑定容器到指定CPU运行;
-c 待完成
-m 待完成
--net="bridge" 指定容器的网络连接类型,支持 bridge /
host / none
container:<name|id> 四种类型;
--link=[] 待完成
--expose=[] 待完成
Docker 网络配置方法
时间:2014-11-20 来源:服务器之家 投稿:root
有四种不同的选项会影响容器守护进程的服务名称。
在docker中,如果启动容器时缺少以上最后两种选项设置时,将使得容器的/etc/resolv.conf文件看起来和宿主主机的/etc/resolv.conf文件一致。这些选项将修改默认的设置。
docker命令的使用方法总结
时间:2014-11-22 来源:服务器之家 投稿:root
总结一下常用命令:
其中<>阔起来的参数为必选,[]阔起来为可选
docker version 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info 查看系统(docker)层面信息,包括管理的images, containers数等
docker search
docker pull
docker push <image|repository> 推送一个image或repository到registry
docker push <image|repository>:TAG 同上,指定tag
docker inspect <image|container> 查看image或container的底层信息
docker images TODO filter out the intermediate image layers (intermediate image layers 是什么)
docker images -a 列出所有的images
docker ps 默认显示正在运行中的container
docker ps -l 显示最后一次创建的container,包括未运行的
docker ps -a 显示所有的container,包括未运行的
docker logs
docker rm <container...> 删除一个或多个container
docker rm docker ps -a -q
删除所有的container
docker ps -a -q | xargs docker rm 同上, 删除所有的container
docker rmi <image...> 删除一个或多个image
docker start/stop/restart
docker start -i
docker attach
docker run
docker run -i -t
docker run -i -t -p <host_port:contain_port> 将container的端口映射到宿主机的端口
docker commit
docker build
docker build -t repo[:tag] 同上,可以指定repo和可选的tag
docker build - <
docker port