初识docker一

理论

一,简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker是基于容器技术的轻量级虚拟化解决方案,是容器引擎,把linux的cgroup,namespaces等容器底层进行完美的封装,并抽象为用户提供穿件和管理容器的编辑界面

二,三要素

●镜像:一个面向Docker容器引擎的只读模板

●容器:从镜像创建的运行实例

●仓库:集中保存镜像的地方;分公有和私有仓库

三,容器和虚拟机区别
特性虚拟机容器
隔离级别操作系统级进程级
系统策略HypervisorCGroups
系统资源5~15%0~5%
启动时间分钟级秒级
镜像存储GB-TBKB-MB
群集规模上百上万
高可用策略备份、容灾、迁移弹性、负载、动态
四,名称空间

UTS hostname and domainname 主机名和域名隔离
User 用户隔离。运行进程的用户和组
Mount 挂载点隔离。即挂载点隔离,主要指根目录
IPC Inter-process-connection 进程间通信隔离。消息队列、共享内容、信号量
Pid Process
ID PID隔离 内核版本:2.6.24
Net Network 网络隔离。网络设备、协议栈、端口

五,三个统一

docker吧容器技术做成了标准化平台,
统一了基础设施环境-----image封装一个简易的操作系统
统一了程序打包------docker镜像
统一了程序部署-------docker容器基于镜像,运行容器

安装部署

网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p

root@localhost ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker

[root@localhost ~]# yum -y install docker-ce

启动docker

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker

优化网络配置

[root@localhost docker]# vim /etc/docker/daemon.json

{
  "graph": "/data/docker",
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "172.17.50.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-opts": {"max-size":"32M", "max-file":"2"},
  "live-restore": true
}
[root@ ~]# mkdir -p /data/docker
[root@localhost docker]# systemctl restart docker

查看网络
在这里插入图片描述
登录注册的docker镜像仓库
镜像名称的结构
r e g i s t r y n a m e / {registry_ name}/ registryname/{repository. name}/ i m a g e . n a m e : {image. name}: image.name:{tag. name}
例如:
docker.io/library/alpine:3.10.1

docker search alpine

docker login docker.io
在这里插入图片描述
在这里插入图片描述

容器启动过程四个步骤

  1. Docker客户端联系Docker服务端。
  2. Docker服务端从Docker中心拉取“hello-world”映像。
  3. Docker服务端(用新拉的镜像)创建了一个新的容器,该容器运行可执行文件(脚本),生成您当前读取的输出。
  4. Docker服务端将信息流推到Docker客户端,由客户端展示在你的终端。
镜像的操作

查看docker版本:docker version

●搜索nginx镜像(公有仓库):docker search nginx

●下载nginx镜像:docker pull nginx;下载后存放在/var/lib/docker

●查看镜像列表

docker images #查看下载镜像信息列表

docker inspect nginx:latest #获取镜像详细信息

●为镜像添加新标签

docker tag nginx:latest nginx:web
删除镜像+标签名
docker rmi nginx:web

拉去镜像

[root@localhost docker]# docker pull alpine

对镜像进行打标签和上传镜像到仓库

[root@localhost docker]# docker tag 14119a10abf4 docker.io/shiqiang02/alpine:123
[root@localhost docker]# docker images
REPOSITORY          TAG       IMAGE ID       CREATED      SIZE
alpine              123       14119a10abf4   4 days ago   5.6MB
alpine              latest    14119a10abf4   4 days ago   5.6MB
shiqiang02/alpine   123       14119a10abf4   4 days ago   5.6MB
[root@localhost docker]# docker push docker.io/shiqiang02/alpine:123

存出镜像并命名为nginx,存到/opt目录下

docker save -o /opt/nginx.tar nginx:latest

●载入镜像

docker load < /opt/nginx

容器的操作

docher ps -a 查看容器
docher ps -aq 只过滤容器id
docher rm -f docher -aq
docher create -it nginx:latest /bin/bash
docher start 容器id 持续运行
docher run centos:7 /usr/bin/bash -c ls / 启动容器,一次性运行
docker stop 容器id
docher run -d centos:7 /usr/bin/bash -c “while ture ;do echo “holle””
docher run -it nginx:latest /bin/bash 进入容器
-i:让容器的标准输入保持打开

-t:让Docker分配一个伪终端
docher exec -it 容器id /bin/bash
docher export 容器id > 文件名 导出
docher import 文件名 centos:7 导入
cat 文件 | docker import - centos:7

[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE        COMMAND     CREATED          STATUS                        PORTS     NAMES
9d9dbe3a8473   alpine:123   "/bin/sh"   31 seconds ago   Exited (130) 11 seconds ago             tender_davinci
[root@localhost docker]# docker run -it alpine:123

四种高级操作

在这里插入图片描述
第一种:映射端口
docker run -p 容器外端口:容器内端口

[root@localhost docker]# docker run --rm --name mynginx -d -p81:80 shiqiang02/nginx:12
f859641e2ab613cf43fec7024bdfb23e8b57bfe0354337bc64398c6f798db52f
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS                        PORTS                               NAMES
f859641e2ab6   shiqiang02/nginx:12   "/docker-entrypoint.…"   42 seconds ago   Up 41 seconds                 0.0.0.0:81->80/tcp, :::81->80/tcp   mynginx
f95087550adf   alpine:123            "/bin/sh"                11 minutes ago   Exited (0) 11 minutes ago                                         distracted_roentgen
9d9dbe3a8473   alpine:123            "/bin/sh"                15 minutes ago   Exited (130) 15 minutes ago                                       tender_davinci

在这里插入图片描述
第二种:挂载数据券
docker -v 容器外:容器内

[root@localhost html]# docker run -d --name nginx_baidu -p82:80 -v/root/html:/usr/share/nginx/html shiqiang02/nginx:12
20103a4cfd16e0fd23fb002f79ca086cc4d61dbb40bc2a5d4a02e5542932243e
[root@localhost html]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS                        PORTS                               NAMES
20103a4cfd16   shiqiang02/nginx:12   "/docker-entrypoint.…"   12 seconds ago   Up 11 seconds                 0.0.0.0:82->80/tcp, :::82->80/tcp   nginx_baidu

第三种:传参环境变量
docker run -e 环境变量key=环境变量vlue

在这里插入图片描述
第四种,容器内下载工具
yum/apt-get/get

容器网络

Docker网络模式配置说明
host模式–net=host容器和宿主机共享Network namespace。
container模式–net=container:NAME_or_ID容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式–net=none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式–net=bridge(默认为该模式)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值