docker基礎學習

基礎命令學習

1,docker search centos   ##搜索鏡像文件

2,docker pull centos            ##下載鏡像

3,docker images ##查看鏡像

4,docker run centos /bin/echo 'hello world' ##啓動一個容器

5,docker ps -a                  ##查看容器包括啓動和停止的容器

6,docker run --name mydocker -it centos /bin/bash  ##進入容器內部

7, ip ad li                                             ##查看ip地址

8,docker run -d --name mydocker centos                 ##後臺啓動容器

9,nsenter(yum -y install util-linux進行安裝)           ##使用這個命令通過容器 PID進入容器

  docker inspect --format "``.`State`.`Pid`" mydocker(名稱或容器ID)  3575  ##取得容器的PID號

10,nsenter --target 3575 --mount --uts --ipc --net --pid    ##進入容器

進入容器腳本:

#!/bin/bash

CNAME=$1

CPID=`docker inspect --format "``.`State`.`Pid`" $CNAME`

nsenter --target "$CPID" --mount --uts --ipc --net --pid

網絡訪問:

1, brctl show  ##會發現一個docker0的網橋

2, ip ro li                                            ##查看路由

3,網絡端口映射:

隨機映射:

docker -d -P --name mynginx  nginx 

docker ps -l##查看最近的一個容器操作

onds 0.0.0.0:32769->80/tcp,0.0.0.0:32768->443/tcp   mynginx     ##容器的80端口映射到物理機的32769

指定映射:

docker -d -p 91:80 --name mynginx1 nginx              ##91是映射後的端口,80是容器裏的默認端口

-p ip:hostPort:containerPost   ##ip地址端口+容器端口

-p ip::containerPort   ##iP+容器的端口

-p hostPort:containerPort  -p hostPort:containerPor   ##指定多個端口

docker數據管理:

數據卷:-v /data

docker run -it --name volume-test1 -h centos -v /data  centos ##在容器裏會生成一個/data 目錄

docker inspect -f ``.`Volumes` volume-test1                      ##查看數據目錄映射關係

指定目錄:-v src:dst   

docker run -it --name volume-test2 -h centos -v /opt:/opt(:ro只讀) centos  ##物理機的/opt映射到容器的/opt

docker run -it --rm  centos   ##此鏡像爲測試鏡像關閉後自動清楚

數據卷容器:

docker run -it --name volume-test3 --volumes-from volume-test1 centos  ##指定容器1,爲數據卷

docker鏡像構建:

手動構建:

1,nginx 加daemon off;  關閉nginx的後臺運行,並設置開機自啓/etc/rc.d/rc.local

2,docker commit -m "my_nginx" 023d0bc923a9 dihaifeng/my_nginx:v1   ##將容器製作成鏡像

3,docker run -d -p 99:80 dihaifeng/my_nginx:v1 /usr/local/nginx/sbin/nginx 

dockfile:

1,基礎鏡像信息 2, 維護者的信息 3,鏡像操作指令 4,容器啓動時執行指令

1,創建dockerfile的目錄

mkdir -p /opt/docker-file/nginx

vim Dockerfile   ##docker的D必須大寫

Dockerfile指令:

FROM:它的媽媽是誰(基礎鏡像)

MAINTAINER:告訴別人,你創造了它(維護者信息)

ADD:往它肚子裏放點文件(COPY文件,會自動解壓,必須和dockerfile放在一個目錄裏)

RUN:你想讓它幹啥(把命令前面加上RUN)

WORKDIR:我是cd,今天剛化了妝(當前工作目錄)

VOLUME:給我一個存放行李的地方(目錄掛載)

EXPOSE:我要打開的門是啥(端口)

RUN:奔跑吧,兄弟!(進程要一直運行下去)

配置dockerfle的環境變量:

ENV PATH=/usr/local/nginx/sbin:$PATH

CMD ["nginx"]

docker build -t nginx-file:v1 /opt/docker-file/nginx/   ##自動構建dockerfile

docker核心技術:

docker資源隔離:使用Linux的LXC,使用Kernel namespace(命名空間:Pid、net、IPC、mnt、uts、user)

docker資源限制:使用cgroup,支持CPU、內存

壓力測試的工具:stress

CPU測試:

docker run -it --rm stress --cpu 1   ##開一個容器測試cpu佔用率

docker run -it --rm -c 512 stress -cpu 1     ##有幾個CPU指定幾,cpu配額測試,不指定默認是對半分

docker run -it --rm --cpuset-cpus=0,1 stress --cpu 2 ##只會佔用一個CPU

內存測試:

docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0 

docker網絡模式:默認是橋接模式。     docker-compose  ##構建多個鏡像

docker-registry私有倉庫:

docker pull registry

docker run -d -p 5001:5000 registry   ##registry默認是5000端口

docker tag nginx 192.168.10.110:5001/test/nginx:v1   ##打標籤

docker push 192.168.10.110:5001/test/nginx:v1           ##打完標籤可以push到私有倉庫中,新版本會報錯,要使用https的方式,

修改/etc/sysconfig/docker  --->  other_args="--insecure-registry 192.168.10.110:5001"  重新啓動docker ,就可以push了。

docker dashboard (shipyard):

1,vim /etc/sysconfig/docker

other_args="-H tcp://0.0.0.0:235 -H unix:///var/run/docker.sock"  ##容器之間通信

/etc/init.d/docker restart  #重新加載docker

2,安裝shipyard

docker run -it -d --name shipyard-rethinkdb-data --entrypoint /bin/bash shipyard/rethinkdb -l


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章