1.docker简介
通过内核虚拟技术,来提供资源隔离和安全保障。
开源的应用容器引擎,go语言开发,源代码托管在githup,一次编译、到处运行。
组成:server端和client端(C/S架构),server挂掉所有服务挂掉(弊端)
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 [email protected]
#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两个部分
标签:容器,compose,--,镜像,docker,ID From: https://www.cnblogs.com/huchao12/p/17554898.html