docker基础

docker

2013 诞生,短短几年称霸 Build Once Run Anywhere!

Docker基于容器技术的轻量级虚拟化解决方案
Docker是容器引擎,把Linux的cgroup、 namespace等容器
底层技术进行封装抽象为用户提供了创建和管理容器的便
捷界面(包括命令行和API)
Docker是-一个开源项目,诞生于2013年初,基于Google
公司推出的Go语言实现
微软,红帽Linux,IBM, Oracle等 主流IT厂商已经在自己的
产品里增加对Docker的支持。
相比其他早期的容器技术,Docker引入了一 整套容器管理
的生态系统,包括分层的镜像模型,容器注册库,友好的
Rest API。

6个维度隔离

docker基础

docker EE (企业版) docker CE(社区版)

安装和配置

~]# curl -o /etc/yum.repos.d/CentoS-Base.repo http://mirrors.aliyun.com/ repo/Centos-7.repo
~]# yum install epel-release -y
~]# yum list docker --show-duplicates
yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce. repo
~]# yum list docker-ce --show-duplicates
I
~]#vi /etc/docker/daemon.json 对容器引擎配置

{
"graph":"/data/docker"       #工作目录 
"storage-driver":"overlay2",   ##存储驱动
”insecure-registries": [” registry . access. redhat .com",”quay.10" ], ##不安全的仓库,可加自建的仓库
registry-mirrors": [ "https ://q2gr04ke,mirror.aliyuncs.com"],   ##拉镜像需要加速源 
"bip": "172.7.5.1/24",   ##容器的ip  中间两位建议个宿主机一样,容器有问题好定位在哪个宿主机
”exec-opts": [ native.cgroupdriver=systemd" ],  ##启动后的一些额外参数 ,cgroupdriver是谷歌在2007写在Linux内核中的关于CPU内存资源的控制方法
"live-restore": true   ##docker死活不依赖引擎
}

启动第一个容器 hello-world

~]# systemctl enable docker
~]# systemctl start docker

docker info ##容器信息 /docker version

docker 引擎是典型的C/S 架构软件

启动容器4步

docker run hello-world

1. The Docker cllent contacted the DOC ker daemon.  ##客户端连接服务端
2.The Docker daemon pulled the "hello-world" image from the Docker Hub。
(amd64)       ##服务端拉取镜像从docker hub
3. The DOC ker daemon Created a new Container from that image which runs the
executable that produces the output you are currently reading. ##docker守护进程拉取的镜像创建了一个新容器可执行文件,生成当前正在读取的输出
4.The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. ##Docker守护进程将输出流到发送它的Docker客户机,你的终端。

docker 引擎三大概念

docker基础

镜像的结构:
{registry. name}/​{repository. name}/​{image_ name}:{tag. _name}
例如: docker.io/library/alpine:3.10.1

镜像版本或日期时间戳做标签

容器是由镜像实例化而来的

docker 镜像特性

docker基础

镜像 1G 正常 ,每次更新完.拉只是增量部分,第一次会慢

docker 基于aufs 构建,base image 第一次后每个节点都有

比如:
docker基础

快速清除所有镜像

systemctl stop docker      (仅限docker环境有问题,测试可以瞎搞)
rm -fr  /var/lib/docker/*
systemctl start docker

查看镜像层数

docker history  centos7.6_nginx:v1  |grep -v '0B'
 几个文件有变化就有几层

docker镜像分层:节省空间,复用.

删除也是删除层id ,镜像id 解压tar包,每层一个文件夹,镜像id文件包含层ID,CMD,ENV等等

镜像命令

1.登录

docker login docker.io

2. 查找镜像

docker search alpine

3.下载镜像

​ docker pull alpine 直接下载镜像 (啥也不加,默认从docker-hub下载)

​ docker pull alpine:3.10.1 下载指定tag

​ docker pull docker.io/library/alpine:3.10.1

镜像结构:registry_name/repository_name/image_name:tag_name

例如: docker.io/library/alpine:3.10.1

4. 查看本地镜像

docker images

latest 实际上是个指针 指向一个版本

5.给镜像打标签

docker tag 965ea09ff2eb docker.io/jiajun01/alpine:v3.10.3

6.推送镜像

docker push docker.io/jiajun01/alpine:v3.10.1 推送镜像

7.删除镜像

docker rmi docker.io/jiajun01/alpine:v3.10.1 删除镜像(标签)

​ docker rmi -f 8984y323758 强制本地删除

容器命令

1. 启动容器

docker run是日常用的最频繁用的命令之一,同样也是较为复杂的命令 ;之一
命令格式: docker run (OPTIONS] IMAGE [COMMAND] [ARG..]
OPTIONS :选项
i:表示启动一个可交互的容器.井持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上
-d :表示将容器放置后台运行
--rm:退出后即删除容器
--name:表示定义容器唯一名称
IMAGE :表示要运行的镜像
COMMAND :表示启动容器时要运行的命令*

docker run -ti gao01/alpine:latest /bin/sh

非交互式启动一个容器

docker run --rm gao01/alpine:latest /bin/echo hello 执行完就从 列表中删除

非交互式启动一个后台容器

docker run -d --name myalpine gao01/alpine:latest /bin/sleep 300 需要命令夯住

查看容器

查看运行中的容器

docker ps

查看所有容器

docker ps -a

查看属主机进程

ps aux |grep sleep |grep -v grep 能查到刚才的sleep

进入正在运行的容器

docker exec -ti e0b7fcf28418 /bin/sh

停止/启动/重启 容器

docker stop/start/restart e0b7fcf28418

docker stop/start/restart myalpine

删除容器

docker rm myalpine

docker rm -f myalpine (运行状态强制删)

批量删除属主机上已经退出的的容器

for i in `docker ps -a |grep -i exit|awk '{print $1}'`;do docker rm -f $i ;done

提交镜像

docker commit -p myalpine gao01/alpine:v1.1_with_1.txt (创建个1.txt文件 -p 提交期间暂停容器)

导出镜像

docker save 433rthurth > alpine:v.1.1_with_1.txt.tar

导入镜像

docker load < alpine:v.1.1_with_1.txt.tar

docker tag 4243tfdghfdg gao01/alpine:v.1.1_with_1.txt (因为导入没有标签)

docker run --rm -ti --name myalpine_with_1.txtgao/alpine:v1.1_with_1.txt /bin/sh

查看容器日志

docker logs 34552df35

docker logs -f 34552df35 (类似tail -f )

常用命令

映射端口

●docker run -p容器外端口:容器内端口

docker run --rm --name mynginx -d -p81:80 gao01/nginx:v1.12.2

挂载数据卷

●docker run -V容器外目录:容器内目录

mkdir html

wget www.baidu.com -O index.html

docker run -d --rm --name nginx_with_baidu -d -p82:80 -v /root/html:/usr/share/nginx/html gao01/nginx:v1.12.2

docker inspect 8c440bed2ccb 容器运行的细节

传递环境变量

●docker run - e环境变量key=环境变量value

docker run --rm -e E_OPTS=abcdefg oldboy1103/alpine:latest printenv

打印容器中环境变量就删除

●容器内安装软件(工具).
, yum/apt-get/apt等

redhat /ubuntu,debian/alpine

16 高级 后半段

上一篇:(七)部署coredns组件


下一篇:alpine修改镜像源