美文网首页
1. docker基础

1. docker基础

作者: epiiplus1equal0 | 来源:发表于2019-09-25 22:54 被阅读0次

docker基础

本文基于马哥的docker和k8s视频总结, 在此致谢马哥.

主机级虚拟化:

  • Type-Ⅰ
  • Type-Ⅱ

容器级虚拟化:

  • linux领域的容器化技术依靠六个namespaces (UTS, Mount, IPC, PID, User, Net) + chroot + cgroups 实现
  • 隔离性远不如主机级虚拟化好

3.8版本以后的内核才支持容器化技术 (centos6天然被排除在外, 在centos6上可以跑docker, 但是会有很多问题)

namespaces.png

资源限制:

cgroups.png

LXC (容器引擎)

LinuX Container工具包含的命令:

  • lxc-create, template (指向仓库, 完成内部依赖环境的安装, 可定制)

一个容器中运行多个进程

docker

LXC的增强版

一个容器中只运行一个进程

程序之间有依赖关系, 因此需要容器编排工具:

  • machine + swarm + compose
  • mesos + marathon
  • kubernetes -> k8s (google研发)

LXC -> libcontainer -标准化-> runC

docker architecture

docker architecture.png

C/S架构应用程序

分层构建, 联合挂载

基于http/https

通过贴标签的形式给repository中的镜像做标注

  • 镜像: 静态
  • 容器: 动态, 有生命周期

docker objects

create and use: images, containers, networks, volumes, plugins and other objects

images: read-only

containers: a runnable instance of an image

安装及使用docker

安装及使用docker.png

docker安装包位于: extras仓库

# 先下载源
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

# 然后把里面原本指向外国的centos仓库的url改为指向国内的docker仓库
# 如清华的docker源:
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg
# 也可以使用阿里云的docker源, 直接指向了阿里云的docker镜像仓库, 无需修改
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce # 注意安装docker-ce而不是docker, 否则使用的是ee版
# docker-ce配置文件: /etc/docker/daemon.json 
# 此目录默认不存在, 需自建, 可在此文件中定义加速器, 末尾加上
{
    "registry-mirrors": ["https://p2aci6x1.mirror.aliyuncs.com", "https://registry.docker-cn.com"]
}
# 注意添加完成之后重启docker daemon!
# docker镜像加速方式: 
#   1. docker cn
#   2. 阿里云加速器, 需要去阿里云容器镜像服务网站注册, 然后系统会给你分给你一个地址, 如我的加速器地址: https://p2aci6x1.mirror.aliyuncs.com
#   3. 中科大

Docker 镜像加速器

systemctl start docker
# 检查前面的加速器是否被使用:
docker info
Registry Mirrors:
  https://p2aci6x1.mirror.aliyuncs.com/ # 有这两项显示这说明配置成功
  https://registry.docker-cn.com/

常用操作

常用操作.png

搜索并下载指定镜像

docker search nginx:tags # 搜索到指定镜像后可以用pull拉取
       image pull nginx:alpine
       image ls 

docker image pull quay.io/coreos/flannel # 拉取某个镜像

alpine: 专门用于构建容器小镜像的发行版本

启动或停止容器

docker container create | run # run: 新建并启动
                 start | restart | stop | kill # kill: 强制停止
                 pause | unpause
                 rm
                 ls

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
  --name string  Assign a name to the container # 指定容器名
  -h, --hostname string  Container host name # 指定容器的主机名, 默认的主机名是ID
  -p, --publish list  # Publish a container's port(s) to the host  指定暴露的端口
  --add-host list  Add a custom host-to-IP mapping (host:ip)
                   # 启动container时在容器的/etc/hosts中自动注入ip和主机名的对应关系
  --network network  Connect a container to a network
            # 指定容器连接的网络类型
            # bridge: default
            # none: 只有lo, 封闭式容器
            # host: 与宿主机共享一块网卡
  --dns list  Set custom DNS servers # 设置DNS主机
  -i, --interactive  Keep STDIN open even if not attached
  -t, --tty  Allocate a pseudo-TTY # 附加终端
  # shell进程可以进行交互, 因此可以加上-it选项
  -d, --detach  Run container in background and print container ID 
                # 后台运行容器, 注意: 程序依旧在容器中的前台运行
  --rm  Automatically remove the container when it exits 
        # 容器运行完后自动删除
docker container run --name b1 -it busybox:latest
docker container stats b1 # 查看镜像的资源使用情况

exit # 进程退出之后容器并没有被删除
docker ps [-a] # -a: 可显示停止状态的容器
docker container ls [-a]
  • 当指定的镜像本地不存在时, 只要本地设置的register没问题, docker会自动到register去下载镜像, 因此可以启动镜像是不需要事先下载镜像
  • 启动一个程序不能让程序在容器中运行在后台, 只要运行在后台, 一启动就终止!!!

启动一个名为ngx1的容器, 在上面跑nginx进程

docker container run --name ngx1 -d nginx
docker inspect ngx1 # 可以查看到nginx运行的ip地址-> "IPAddress": "172.17.0.2"
curl http://172.17.0.2

启动一个名为kvstor1的容器, 在上面跑redis进程

docker container run --name kvstor1 -d redis:4-alpine
a877b2696e4cdc404c114c939a31c6e3733d76717703da171900be2f264d0a8a # 执行此命令后返回一串container ID
docker container exec CONTAINER_NAME COMMAND # 在容器中执行另外一个命令, 但要指明容器
docker container exec -it kvstor1 /bin/sh # 使用/bin/sh进入container进行交互
/data # redis-cli

查看日志

docker container logs ngx1

docker常用命令及状态

[图片上传失败...(image-6a4af8-1567102253287)]

相关文章

网友评论

      本文标题:1. docker基础

      本文链接:https://www.haomeiwen.com/subject/jcwgectx.html