标签:
http://dockerpool.com/static/books/docker_practice/index.html
安装docker:
apt-get update
apt-get install -y docker.io
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
查看镜像列表:docker images
创建并启动一个容器:
docker run -t -i ubuntu:14.04 /bin/bash
在容器中添加 json 和 gem 两个应用:gem install json
修改:
exit退出,然后提交:
sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
-m提交说明,-a指定更新的用户信息+ID 仓库/tag
用docker build来生成镜像:
/sinatra/Dockerfile文件内容
Dockerfile文件内容:不能超过127层
# This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
运行 docker build -t="ouruser/sinatra:v2" .
‘.‘代表Dockerfile当前路径
从本地文件系统导入镜像:
cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
导出:
docker save -o ubuntu_14.04.tar ubuntu:14.04
或者docker export container > ubantu.rar
载入:
docker load --input ubuntu_14.04.tar
导入快照:
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息
上传镜像:
docker push ouruser/sinatra
移除:
docker rm ouruser/sinatra
容器操作:
启动容器:docker run ubuntu:14.04 /bin/echo ‘Hello world‘
后台运行:docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
查看后台运行的:docker ps 获得 ports names
获取容器的输出信息:docker logs names
进入后台的docker: docker attach names 阻塞会并发
使用nsenter 进入后台,安装util-linux(2.24):
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-linux-2.24.tar.gz
$ cd util-linux-2.24
$ ./configure --without-ncurses && make nsenter
$ sudo cp nsenter /usr/local/bin
__________________________________华丽分割线————————————————————————
1,uname -a
2,ls -l /sys/class/misc/device-mapper
如果不满足,升级内核。
安装:apt-get install -y docker.io
source /etc/bash_completion.d/docker.io 更新
docker维护版本:
apt-get install -y curl
curl -sSL https://get.docker.com/ubuntu/ |sh
启动交互式容器:
docker run -i -t IMAGE /bin/bash
-i-t --interactive =ture --tty=ture
启动守护式容器:docker run -i -t IMAGE /bin/bash
退出时候用 ctrl +p \q
使用docker attach
docker run -d
看日志 docker -t -f --tail
看容器的进程 docker top
在容器中启动新的进程:docker exec -d -i -t name command targ
停止运行中的容器:docker stop
docker kill
查看容器:docker inspect
自定义容器名字 dockerrun --name=fuhan -i -t ubuantu /bin/bash
重新启动已经停止的容器 docker start -i fuhan
删除已经停止的容器 docker rm
查看文档 man docker stop
部署静态网页:
run -P :容器暴露所有端口进行映射。
-p :
重新启动:docker start -i name
docker exec 33 ngix
镜像操作:
删除ubuntu所有镜像 docker rmi $(docker images -q ubuntu)
docker search
使用国内镜像pull镜像:
"""
/etc/default/docker
添加:DOCKER_OPTS = "--registry-mirror=http://www.daoclould.io"
"""
或者:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://2ebb2b81.m.daocloud.io\"" | sudo tee -a /etc/default/docker
sudo service docker restart
构建镜像
docker commit -a fuhan -m wodejinxiang 通过容器构建:
1,docker run -it -p 80 --name my_image ubuntu /bin/bash
2,做修改
3,docker commit -a ‘fuhan‘ -m ‘nginx‘ my_image fuhan/fuhan01
就可以看到fuhan/fuhan01这个新镜像了
上传:docker push
docker build 通过Dockerfile文件:
mkdir -p dockerfile/df_test
vi 编辑
docker build -t=name .
#注释
FROM ubuntu:14.04
MAINTAINER fuhan "fuhan@126.com" 相当与commit -a属性
RUN 分shell指令和【】指令
RUN apt-get update && apt-get install -y nginx
EXPOSE 80 容器运行时候依然需要用-p 80
CMD ENTERYPOINT 容器运行后运行的指令
ADD COPY VOLUME 设置镜像的目录和文件
WORKDIR ENV USER 指定镜像的环境设置
ONBULID 类似触发器
CMD 会被run里面的运行命令覆盖 ENTERYPOINT不会覆盖
用ENTERYPOINT 写命令,CMD写参数
ADD 包涵解压功能 【相对路径 绝对路径】
VOLUME添加卷
WORKDIR 设定工作目录,须绝对路径
ENV key=vale 环境参数
USER 指定用户,默认root
ONBUILD镜像触发器,当一个镜像被其他镜像作为基础镜像时执行
容器间互相连接:--icc=true 默认
每次重启容器,Ip地址会变化
docker run --name=cct3--link=cct1:webtest dormancypree/cct
webtest别名
可以查看/etc/host文件
禁止:
/etc/default/docker
增加:DOCKER_OPTS=‘--icc=false‘
特定连接:
--icc=false --iptables=true 修改文件
run --link=
设置好后需要到容器查 看iptables -L -n 如果有drop,则执行iptables -F
容器与外部连接
ps -ef|grep docker
查看服务器sysctl net.ipv4.conf.all.forwarding是否为1,可以转发流量
镜像没有ifconfig :apt-get install net-tools
brctl show
重新指定docker 地址
ifconfig docker0 192.168.0.1
添加虚拟网桥:
brctl addbr br0
ifconfig br0 192.168.0.1 netmask 255.255.255.1
添加/etc/default/docker DOCKER_OPTS=‘bro‘
重启。servers docker restart
docker容器与外部链接:
--ip-forward=true
查看是否允许准发sysctl net.ipv4.conf.all.forwarding
iptables -t filter -L -n
标签:
原文地址:http://my.oschina.net/u/2367514/blog/522834