码迷,mamicode.com
首页 > 其他好文 > 详细

docker 笔记

时间:2015-10-27 22:12:51      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

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


docker 笔记

标签:

原文地址:http://my.oschina.net/u/2367514/blog/522834

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!