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

相關文章
相關標籤/搜索