#docker常用命令 更多操作 docker --help / docker run --help查看
#安装docker
yum install docker-io
#启动docker
/etc/init.d/docker start 或者service docker start
#查看docker状态
service docker status
#查找centos镜像
docker search centos
#获取centos镜像
docker pull centos
#查看镜像
docker images
#查看docker进程
docker ps -a
#镜像操作
#安装nginx镜像, --name名称为tomnginx, -d后台运行 -p设置docker端口映射到系统端口,
#格式为 系统端口:docker端口, 启动nginx镜像
docker run -d -p 1234:80 --name tomnginx nginx
#进入某个进程
docker attach contain_id或者容器名称
如果无法进入还可以通过下面的脚本
#!/bin/bash
# 如果无法通过docker attach containId进入运行中的容器可以通过下面方式
# 查找进程pid
# 传入参数
CNAME=$1
CPID=$(docker inspect -f "{{.State.Pid}}" "$CNAME")
# 进入容器
nsenter --target "$CPID" --mount --uts --ipc --net --pid
#查看ip地址, 系统命令 ifconfig也可以
ip ad li
#删除镜像
docker rm contain_id
#将docker文件夹映射到系统, -i交互式, -t字符终端, 容器名称volumetest
#-h 自定义主机名, -v docker容器内目录, centos为镜像名称
docker run -it --name testvolume1 -h hostvolume -v /data centos
#查看testvolume1容器的卷映射到系统的位置,
#-f 格式化format匹配.Volumes信息, testvolume1为容器名称
docker inspect -f {{.Volumes}} testvolume1
#docker inspect 镜像名称 //查看某个镜像的配置信息
#docker的磁盘文件卷
#自定义docker映射到系统文件的路径, -v 系统路径:docker路径,
#如果映射的目录只读, 则 -v 系统路径:docker路径:ro
docker run -it --name testvolume2 -h hostvolume -v /usr/local/tom:/tom centos
#从已有的镜像容器中挂在文件卷
docker run -it --name testvolume3 --volumes-from testvolume1
#创建自己的镜像, -m信息, 生成自己的镜像, 名称为tom/nginx, tag为v1
#通过docker images查看自己生成的镜像
docker commit -m "this is message" contain_id tom/nginx:v1
#运行自己的镜像, 并映射80端口
docker run -d -p 2345:80 --name my-nginx-mirror tom/nginx:v1
#docker的资源隔离
#docker容器的资源使用限制 docker run --help查看更多命令
#docker 执行容器测试 --rm 执行完毕删除,
#stress是一个压力测试软件, 需要安装, 可以编写Dockerfile安装, -cpu是stress的参数
docker run -it --rm stress -cpu 1
# -c 是该容器可用cpu的占比和nginx的weight类似,
# 还可以设置-cpuset-cpus设置可用哪几个cpu, juti kan help
docker run -it -c 30 --rm stress -cpu 1
#-m 内存使用限制, 限制可用128m, 压力测试是测试200m,
#最多能用128m, 能超过一点如130,多了就无法运行
docker run -it -rm -m 128m stress --vm 1 --vm-bytes 200m --vm-h
#下载registry镜像,用于搭建私有仓库
# docker 的网络模式, 默认采用桥接 bridge
#查看docker网桥, 每启动一个容器就会创建一个网络接口interface
brctl show
docker pull registry
#启动registry仓库, 映射 系统端口:docker容器端口 , 注意这个registry的容器端口是固定5000的
docker run -d -p 5001:5000 registry
#打包一个镜像用于push到私有仓库供其他服务器使用,
#注意 tag后面跟的是镜像Image, 不是容器名也不是容器id
#可以通过docker ps -a 查看image列对应的名称
#打包完毕查看 docker images
docker tag tom/nginx:v1 192.168.42.1:5001/docker/nginx:v1
# push到私有仓库, 此时会报错, 需启用https或者修改配置
#/etc/sysconfig/docker里other_args加入--insecure-registry 192.168.42.1:5001
#other_args="--insecure-registry 192.168.42.1:5001" 之后重启docker
#之前启动的registry容器要删掉重新run一次才可以,
#需要pull也要配置other_args加入--insecure-registry 192.168.42.1:5001
docker push 192.168.42.1:5001/docker/nginx:v1
#push成功后, 在其他机器上通过pull即可下载本地仓库的镜像
docker pull 192.168.42.1:5001/docker/nginx:v1
#docker自动构建脚本Dockerfile
#docker自动构建脚本Dockerfile, 可以采用原始的手动构建
#docker-compose 是一个同时可以构建多容器的工具,带学习
#例:nginx自动化构建脚本
# This is my first Dockerfile
# Author tom
# Version 1.0
#docker容器内手动安装构建相关软件,需要自己安装, 安装命令和linux中安装相同, 通过Dockfile可以自动化构建安装,
#下面这就是一个Dockfile自动化构建安装nginx的脚本, 文件名称是Dockerfile, D大写
#下面大写部分是关键字
#Base images 基础镜像来自于
FROM centos
#维护人
MAINTAINER tomZ
#ADD 添加内容到指定目录, 这些包要提前下载Dockfile到同一级目录下, 或者指定绝对路径也行
ADD pcre-8.3.7.tar.gz /usr/local/src
ADD nginx-1.10.0.tar.gz /usr/local/src
#RUN 执行命令, 安装相关依赖
RUN yum install -y wget gcc gcc-c++ make openssl-devel
#添加一个www用户不登陆,-M不生成用户文件夹
RUN useradd -s sbin/nologin -M www
#工作目录
WORKDIR /usr/local/src/nginx-1.10.0
#执行安装nginx
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-prce=/usr/local/src/pcre-8.3.7 && make && make install
#将daemon off;写入nginx.conf, 让nginx在前台运行
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
#把nginx加入到环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
#暴露80端口
EXPOSE 80
#运行nginx
CMD ["nginx"]
#运行构建, 在该文件目录执行 docker build -t tom/nginx:v2 .
#如果Dockfile文件不在当前目录那么要写全路径 docker build -t tom/nginx:v2 /usr/local/tom/nginx/Dockfile
# -t 是自定义的镜像仓库名称, 执行完毕构建以后, 执行docker images 查看即可
# 运行docker run -d -p 3456:80 --name dockfilebuildnginx tom/nginx:v2
#docker web管理界面 https://github.com/kevana/ui-for-docker
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker