docker 笔记

http://dockerpool.com/static/books/docker_practice/index.htmlhtml

安装docker:linux

apt-get updatenginx

apt-get install -y docker.ioweb

sudo ln -sf /usr/bin/docker.io /usr/local/bin/dockerdocker

查看镜像列表:docker imagesshell


建立并启动一个容器:json

docker run -t -i ubuntu:14.04 /bin/bashubuntu

在容器中添加 json 和 gem 两个应用:gem install jsonruby


修改:bash

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

相关文章
相关标签/搜索