docker入门

基础概念:

1.基于LXC 技术,基于内核虚拟化,kvm是硬件虚拟化,基本启动过程:构建-传输-运行,三大组件:镜像  容器  仓库

  对比vm:vm基于Guest os    docker基于LXC
  docker使用不建议启动ssh:不要当成虚拟机用  
2.docker带来的改变
   面向产品: 产品交付   面向开发:简化环境配置  面向测试:多版本测试   面向运维:环境一致性   面向架构:自动化扩容-微服务



相关命令记录:

安装:yum install -y docker   
启动: systemctl start docker     
下载基础镜像并保存 docker pull centos    docker save centos  >/opt/centos.tar.gz  docker load 启动容器:docker run     
查看启动容器docker ps -a   
docker run --name mydocker -t -i centos /bin/bash   //运行容器   选择镜像   运行命令
docker start  容器名  //启动  docker  attach  容器名  //进入容器       docker inspect --format "{{.State.pid}}"   容器名  
nsenter (yum install util-linux)     nsenter -t pid -u -i -n -p  (编写脚本)  
docker rm  容器名    (-f  直接删除正在运行的容器)  docker run --rm  centos /bin/bash/  "hehe"
docker ps -a -q //正在运行的容器
brctl show //端口映射   docker logs 镜像名 //查看日志
docker run -it --name  data-test1 -v  /data   centos 
dcoker run -it -v /opt:/opt:rw centos 
docker run -it --volumes-from  /data centos
docker logs --tail 0 -f 容器id  查看日志

镜像管理:

1.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
2.查看当前有些什么images
docker images
3.删除images,通过image的id来指定删除谁
docker rmi
想要删除untagged images,也就是那些id为的image的话可以用
docker rmi $(docker images | grep "^" | awk "{print $3}")
要删除全部image的话
docker rmi $(docker images -q)

启动一个nginx容器

docker run -it centos --name mynginx
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm     yum install -y nginx //退出后
   docker commit -m "my-nginx" 05e1e23eebe4  linge/nginx:v1   //生成镜像
   //启动镜像   docker run  -d -it --name nginx-v1  linge/nginx:v1 


dockerfile 构建

  四部分: 基础镜像信息   维护者信息    镜像操作指令  容器启动时执行指令 
  from:基础镜像
  MAINTAINER:维护者信息
  RUN: 运行命令   ADD :增加文件 相当于copy   WORKDIR:cd 某个目录  VOLUME:目录挂载  EXPOSE:端口 RUN 进程要一直运行下去

  docker build -t  linge/nginx:v1-build /srv/dockerfile/

#version 1
#Author: gelin
#Base image
From  linge/tomcat-basic:v4

#Maintainer
MAINTAINER  [email protected]
ENV LANG C.UTF-8

ENV PATH /usr/bin:$PATH
#Commands
RUN    mv /srv/tomcat/tomcat8/  /srv/tomcat/tomcat_account
ADD ROOT.war  /srv/tomcat/tomcat_account/webapps/
EXPOSE 8080
EXPOSE 20902
ENTRYPOINT ["/srv/tomcat/tomcat_account/bin/catalina.sh", "run" ]





docker 仓库

  docker pull registry  下载仓库镜像
  docker run -d -p 5000:5000 -v /srv/docker-registry:/tmp/registry registry  启动仓库  本地挂载目录存储镜像数据
  echo  "ADD_REGISTRY='--add-registry 192.168.1.203:5000'"  >> /etc/sysconfig/docker
  echo  "INSECURE_REGISTRY='--insecure-registry 192.168.1.203:5000'" >> /etc/sysconfig/docker   //禁用https访问  需要重启docker
  docker commit 容器id,name  192.168.1.203:5000/reg-nginx
  docker tag linge/nginx:v1-touch 192.168.1.203:5000/reg-nginx   //将本地某一个镜像打tag  也可以使容器id
  docker push  192.168.1.203:5000/reg-nginx    //上传镜像到仓库

jenkins+docker+ansible

Jenkins 拉去远端源码 —— git
实现应用打包 —— jenkins本地
把应用程序打包进Docker镜像 —— Dockerfile
镜像上传到Docker私有仓库 —— shell或者 Docker相关的Jekins插件
删除老的Docker容器,运行新的Docker容器 —— shell脚本


限制资源

设置-m,--memory-swap=b,且b > a
给-m设置一个参数 a,给--memory-swap设置一个参数 b。a 时容器能使用的内存大小,b是容器能使用的 内存大小 + swap 分区大小。所以 b 必须大于 a。b -a 即为容器能使用的 swap 分区大小。 
 docker run -it --rm --cpus=2 u-stress:latest /bin/bash   限制cpu能使用的核数,1.13后的版本,也可以设置权重,指定固定的cpu







你可能感兴趣的:(docker)