Docker(小白刚进门)

Docker(小白刚进门)

本文仅对所学知识所做的笔记,如果能给你带来帮助,我也会感到非常幸运

Docker简介

什么是容器?

  • 一种虚拟化的方案
  • 操作系统级别的虚拟化
  • 只能运行相同或相似内核的操作系统
  • 依赖于Linux内核特性:NamespacesCgroups(Control Group)

Docker(小白刚进门)_第1张图片

什么是Docker?

  • 将应用程序自动部署到容器
  • Go语言开源引擎 Github地址:https://github.com/docker/docker

Docker的目标

  • 提供简单轻量的建模方式
  • 职责的逻辑分离
  • 快速高效的开发生命周期
  • 鼓励使用面向服务的架构

Docker的使用场景

  • 使用Docker容器开发、测试、部署服务
  • 创建隔离的运行环境
  • 搭建测试环境
  • 构建多用户的平台即服务(PaaS)基础设施
  • 提供软件即服务(SaaS)应用程序
  • 高性能、超大规模的宿主机部署

Docker的基本组成

  • Docker Client:客户端
  • Docker Daemon:守护进程
  • Docker Image:镜像
  • Docker Container:容器
  • Docker Registry:仓库:提供docker镜像的存储服务(与后面的镜像仓库REPOSITORY不同)

Docker容器相关技术简介

Namespaces命名空间

  • PID(Process ID):进程隔离
  • NET(Network):管理网络接口
  • IPC(InterProcess Communication):管理跨进程通信的访问
  • MNT(Mount):管理挂载点
  • UTS(Unix Timesharing System):隔离内核和版本标识

Control groups控制组

  • 资源限制
  • 优先级设定
  • 资源计量
  • 资源控制

Docker容器的能力

  • 文件系统隔离:每个容器都有自己的root文件系统
  • 进程隔离:每个容器都运行在自己的进程环境中
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
  • 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

安装Docker

Ubuntu

安装前检查
  • 内核版本

    • uname -a
      
  • 检查Device Mapper

    • ls -l /sys/class/misc/device-mapper
      
安装方式
  • 安装Ubuntu维护的版本
  • 安装Docker维护的版本(推荐
安装Docker维护的版本

以下都是使用root用户操作,非root需要在命令前加sudo

  1. 检查APTHTTPS支持,查看/usr/lib/apt/methods/https文件是否存在,如果不存在,运行安装命令

    • apt-get update
      sudo apt-get install \
         apt-transport-https \
         ca-certificates \
         curl \
         gnupg-agent \
         software-properties-common
      
  2. 添加仓库的key

    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      
  3. 设置稳定版仓库

    •  sudo add-apt-repository \
         "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
      
  4. 安装docker-ce

    • apt-get update
      apt-get install docker-ce docker-ce-cli containerd.io
      
  5. 查看docker是否安装好了

    • docker version
      
  6. 设置一个用户组,因为普通用户每次都要在命令前加sudo,root则不用加。设置完后普通用户使用docker命令也可以不用加sudo

    • #添加组的命令,格式如下:
      groupadd [选项] 组名
      选项:
      -g GID:指定组ID
      groupadd tg:添加组tg
      #例子
      eg:groupadd docker 
      
    • #添加用户到组里,或者把用户从组里删除,命令格式如下:
      gpasswd 选项 组名
      选项:
      -a 用户名:把用户加入组
      -d 用户名:把用户从组中删除
      #例子:添加
      eg:gpasswd -a root docker
      #例子:删除
      eg:gpasswd -d root docker
      
    • 如果添加完组还不能使用,可以试试注销账号重新登录或者重启系统。

Docker容器

容器的基本操作

命令
#在新容器中执行命令
#(一次性的)运行完这条命令,容器就关闭
docker run IMAGE [COMMAND] [ARG...]
#(交互式的),exit后容器就关闭
docker run -i -t IMAGE /bin/bash

#查看容器,-a是指列出所有容器,-l是指列出最新创建的容器
docker ps [-a][-l]
eg:
	docker ps:#不带选项,输出的是正在运行的容器
	docker ps -a:#输出的是所有的容器
	docker ps -a:#输出的是最新创建的容器
	
#查看容器详细信息
docker inspect 容器名 或 容器id
eg:
	docker inspect 53ccbc3188b4
	
#自定义容器名
docker run --name=自定义名 -i -t IMAGE /bin/bash

#重新启动停止的容器,-i表示重新启动已经停止的容器
docker start [-i] 容器名

#删除停止的容器,不能删除正在运行的
docker rm 容器名

守护式容器

  • 能够长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务
命令
#启动交互式容器,然后组合键退出,可以以守护形式运行容器
docker run -i -t IMAGE /bin/bash
Ctrl+P Ctrl+Q

#附加到运行中的容器
docker attach 容器名

#启动守护式容器
docker run -d 镜像名 [COMMAND][ARG...]

#查看容器日志
docker logs [-f][-t][--tail] 容器名
	-f	--follows=true | false #默认为false,是否一直跟踪日志
	-t	--timestamps=true | false #默认为false,返回时是否加上时间戳
	--tail= "all"#返回结尾处多少数量的日志,默认所有都返回
eg:docker logs -tf --tail 0 容器名

#查看容器内进程
docker top 容器名
	
#在运行中的容器内启动新进程
docker exec [-d][-i][-t] 容器名 [COMMAND][ARG...]

#停止守护式容器
docker stop 容器名	#发送一个命令给容器,等待容器停止
docker kill 容器名	#直接杀死容器

在容器中部署静态网

你可能感兴趣的:(docker,docker)