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

docker基础学习

时间:2015-11-17 19:15:43      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:search   ip地址   images   hello   world   

基础命令学习

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


本文出自 “Henry” 博客,请务必保留此出处http://dihaifeng.blog.51cto.com/8814208/1713512

docker基础学习

标签:search   ip地址   images   hello   world   

原文地址:http://dihaifeng.blog.51cto.com/8814208/1713512

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