docker容器

1.docker简介

    通过内核虚拟技术,来提供资源隔离和安全保障

    开源的应用容器引擎go语言开发,源代码托管在githup,一次编译、到处运行。

    组成:server端和client端(C/S架构),server挂掉所有服务挂掉(弊端)

 

2.Docker组件

    镜像(image):一个只读模板可是完整的操作系统

    容器(container):启动的Linux简化版系统    

    仓库(repository)存放镜像文件

    Docker Hub 官方维护仓库    docker pool 国内镜像

    Docker特点:简化配置 一次配置到处运行、代码流水线管理、提升开发效率、应用隔离、服务器群整合、多用户环境、快速部署

 

3. docker镜像

    查看 images/ 搜索 search/ 获取 pull/ 删除 rmi/ 导出 save/ 导入 load

    docker images   //查看镜像      docker search   //搜索镜像

    docker pull 镜像名      //获取(下载镜像文件),没有则安装

    dokcer rmi 镜像ID     //删除镜像(docker rmi -f 镜像ID   //强制删除) 删除镜像前先删除镜像中所有容器(dokcer rm 容器ID)

    docker save centos > /opt/centos.tar.gz     //导出一个镜像

    docker load < /opt/centos.tar.gz           //导入一个镜像

    systemctl restart  docker.service 启动docker服务

 

4. docker容器

    查看 ps -a/ 启动 run/ 停止 stop/ 进入容器 exec/ 

    删除 rm/ 查看容器ID ps -a -q

    docker ps -a   //查看所有容器,运行或关闭的

    dokcer ps -a -l  //查看容器,(-a 显示所有容器,docker ps 只显示运行的容器)

    docker run --name -h hostname (或docker start 容器ID)  //启动容器

    docker stop 容器ID   //停止容器

    Docker exec 容器ID (或 docker attach 容器ID)推荐nsenter  //进入容器

    Docker rm 容器ID    //删除容器(删除前需要管理) (或docker rm -f 容器ID  //可以删除运行的容器,慎用)

    dokcer ps -a -q    //查看容器ID, docker kill $(docker ps -a -q)  //杀死所有运行的容器ID

    例子:docker run --name mydocker -it centos /bin/bash     (//--name 指定命令,-i 打开,-t -t  分配一个伪终端  //进入容器)

 

5. docker网络

    Docker run -d -P nginx    //随机端口映射  (docker logs 容器ID  //查看Nginx日志)

    指定端口映射:

    -p  主机端口:容器端口

    -p  ip:主机端口:容器端口  

    -p  ip::容器端口

    -p  主机端口:容器端口:UDP   (指定协议)

    例子:docker run -d -p 81:80 nginx   //指定端口,主机81端口映射容器80端口

 

6. docker存储

    数据卷:

    -v  /data        //自动挂载

    -v  src:dst       //指定挂载路径(源:目标)

    例子:docker run -it --name volume-test -v /data centos     

     //docker容器创建数据卷/data

    /var/lib/docker/volumes  查看挂载路径,挂载到物理机该路径下

    (docker inspect 容器ID   //查看挂载路径,所有信息)。 

    例子:挂载时可指定权限

    docker run -it --name volume-test1 -v /opt:/opt centos  

    //docker容器指定挂载路径(映射)

    docker run -it --name volume-test1 -v /opt:/opt:ro centos  //ro 只读,rw 读写

    docker run -it -v ~/.bash_history:/.bash_history  centos  //挂载

    数据卷容器:

    让一个容器访问另一个容器的卷  --volumes-from

    docker run -d --name nfs -v /data centos 

    //先起一个容器挂载/data目录,作为数据卷容器(-d  创建直接启动)

    docker run -it --name test --volumes-from nfs centos    //创建数据卷容器

    好处:后期不挂载,多个容器直接指向一个容器(数据卷容器,容器停止还是可以访问)

 

7.dockerfile

    docker build /opt/nginx/Dcokerfile    //构建镜像,纯文本文件

    镜像构建语法:

    FROM         基础镜像(它的妈妈) --第一条指令

    MAINTAINER   维护者信息(创造者)

    RUN          命令前加run(你想让他干啥)

    ADD          copy文件,会自动解压(往肚子里放文件)

    WORKDIR      当前工作目录(相当于Cd)

    VOLUME       目录挂载(存放行李的地方)

    EXPOSE        端口(要打开的门是啥)

    RUN          进行要一直运行下去(奔跑吧,兄弟)

    制作镜像:

    dcoekr commit -m "my nginx"  镜像ID  huchao/mynginx:v1

    (huchao/mynginx 仓库名     v1:tag,版本)

 

    例子:vi /opt/nginx/Dockerfile 

#This dcoker file

#VERSION

#Author: HU CHAO

#Base image

FROM centos

 

#Maintainer

MAINTAINER chao.hu  huhcao@189.com

 

#Commands

RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-rease-latest-7.noarch.rpm

RUN yum -y install nginx

ADD index,htl /usr/share/nginx/html/index.html

RUN echo "daemon:" >> /etc/nginx/nginx.conf

EXPOSE 80

CMD["nginx"]

 

8.私有仓库

    Dockerhub   -->github

    docker registry(私有) --> gitlab(私有)

    Docker pull  registry           //安装私有仓库

    docker run -d -p 5000:5000  registry       //运行容器

    docker tag huchao/mynginx:v3 192.168.8.130:5000/huchao/mynginx:latest

 

9.Docker-compose

    负责对docker容器集群的快速编排

    将管理的容器分为三层:工程(project)、服务(service)、容器(container)

    工程配置文件默认为:docker-compose.yml

    docker-compose Python语言编写,调用docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持docker API,就可以在其上利用compose进行编排

    安装:yum -y install epel-release  && yum -y install python-pip

    pip install --upgrade pip   //更新pip 

    Pip install docker-compose  //安装docker-compose

    Docker-compose version   //查看版本

    常用命令:

    Docker-compose up  

    Docker-compose ps    //列出项目中所有容器

    Docker compose stop  //停止正在运行的容器,可以通过docker-compose start 再次启动

    docker-compose down   //停止或删除容器、网络、卷镜像

    docker-compose rm  //删除所有(停止状态的)服务容器

    Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分

posted on 2023-07-14 20:14  枫飘过的天1  阅读(19)  评论(0编辑  收藏  举报