首页 > 技术文章 > docker容器部署

jeffzhao 2019-10-10 15:14 原文

一.容器三大概念

1.镜像    2.容器 相当于打隔断,独立的空间     3.仓库

2.概念:由于在物理机上实行的隔离,启动容器和启动进程一样快速

二.核心技术

1.Cgroups (Control Groups)-资源管理:控制最多使用多少内存,cpu,用来限制使用资源

2.NameSpace-命名空间   在总空间(系统驱动所有资源)的基础上划分出独立的空间,隔离6个东西如下:

     1.主机名(一个终端改主机名,其余所有终端打开都能看到改过的主机名) -容器看不到

     2.网络命名空间(当一个终端改ip地址的时候,其余终端用原ip则登不上去)-容器ip变了

     3.文件系统命名空间(chroot 改变根目录路径)

     4.进程命名空间(pstree执行几个进程,)只能看见自己的进程,别的进程看不见

     5.信号向量命名空间(比如kill -l 有64个信号,发一个信号进程会有回应)

     6.用户隔离(不同的命名空间里有不同的用户)

3.Selinux安全

三.Docker概念

1.是一套完整的容器管理系统

2.docker提供了一组命令,让用户更加直接方便的使用

3.优点:相比传统虚拟化技术,容器更加简洁高效,容器不需要虚拟机操作系统(缺点就是linux不能兼容windows),容器使用共享公共库和程序

 缺点:1.隔离线没有虚拟化强(改一个所有全变了)

         2.公用linux内核,安全性有先天缺陷

         3.Selinux 难以控制

         4.监控容器和容器排错是挑战

四.安装docker

1.安装前准备:

  需要64位操作系统

  至少是RHEL6.5以上的版本,强烈推荐RHEL7

  关闭防火墙(必须)

2.配置yum源(创建两台虚拟机docker1,docker2)

1.docker软件包位于光盘RHEL-extras.iso下面

2.在物理机ftp目录下创建文件夹extras

mkdir  /var/ftp/extras

3.挂载光盘在此目录下

mount RHEL-extras /var/ftp/extras
df -h 查看一下
4.安装docker

yum -y install docker(35个包)

systemctl restart docker

systemctl enable docker

五.镜像

1.在docker中容器是基于镜像启动的

2.镜像 是启动容器的核心

3.镜像启用分层设计

4.使用快照的cow技术,确保底层数据不丢失

5.查看镜像 docker images

6.官网:(hub.docker.com网址上下载镜像)

7.命令行搜索镜像: docker search 关键字(如nginx)

]#docker search busybox

]#docker pull docker.io/busybox (这个是官方的,下载次数最多)

六.下载.上传镜像

]#docker help pull

]#docker pull [options] name[:tag| @digest]

]#docker pull docker.io/busybox   下载镜像

]#docker push docker.io/busybox  上传镜像

七.打包镜像

docker save 名称(repository)   :    标签(tag) -o 文件名

docker1]#docker save docker.io/busybox:latest -o busybox.tar

docker1]#scp busybox.tar root@192.168.1.32:/root

docker2]#ls

docker2]# docker images

docker2]#docker load -i busybox.tar

docker2]#docker images

八.运行容器:

docker run -it docker.io/busybox:latest /bin/sh   #/bin/sh 为启动命令,如果不写就为默认的启动命令

/ # ps -ef 进程隔离

/ # hostname  主机名隔离

/ # ifconfig     网络隔离

/ # ls /        文件系统隔离

/ # cat /etc/passwd    用户隔离

/ #       信号向量命名空间隔离

九.镜像常用命令  (镜像:标签)

1.docker history 查看镜像的制作历史

  ]#docker history docker.io/redis:latest

2.docker inspect 查看底层详细信息

  ]#docker inspect docker.io/redis:latest

  Env 环境变量

  Cmd 启动命令

3.docker images 查看镜像列表

4.docker pull 下载镜像

  ]#docker pull docker.io/busybox   下载镜像

5.docker push 上传镜像

  ]#docker push docker.io/busybox  上传镜像

6.docker rmi 删除本地镜像

  ]#docker rmi docker.io/centos

7.docker save 镜像另存为tar包

  ]#docker save docker.io/busybox:latest -o busybox.tar

8.docker load 使用tar包导入镜像

  ]#docker load -i busybox.tar

9.docker search 搜索镜像

10.docker tag 修改镜像名称和标签

  ]#docker tag docker.io/centos:latest cen:v1     将 docker.io/centos:latest 改为 cen:v1

十.容器常用命令:  (命令+id)

1.docker run 运行容器          #创建一个新的容器并且启动

   docker run -it docker.io/centos

2.docker run -itd docker.io/nginx:latest     启动后放在后台(比如nginx)

   docker inspect 882117d0581d 可以查看到nginx的地址

   ping 172.17.0.2
   curl 172.17.0.2

3.docker ps 查看容器列表

           ]#docker ps -a  显示所有容器

            ]#docker ps -aq  只显示ID

4.docker stop 关闭容器

       通过docker ps 查看容器的Id       docker stop id号 关闭容器

5.docker start 启动容器

      通过docker ps 查看容器的Id       docker start id号 开启容器

6.docker restart 重启容器

      通过docker ps 查看容器的Id       docker restart id号 重启容器

7.docker attach|exec 进入容器

   1.docker attach 进入已经启动的容器  连接的是systemd(上帝进程)  exit会导致容器关闭   需要 ctrl + p q 放入后台

   docker ps 查看id 后   docker attch id号 进入

   2.docker exec 进入新的进程     比较常用(新开一个控制台) 直接退出后不会影响进程

  docker exec  -it   id号  /bin/bash

  进入后:pstree -p

8.docker inspect 查看容器底层信息

  ]#docker top 882117d0581d

9.docker top 查看容器进程列表

  ]#docker top 882117d0581d

10.docker rm 删除容器

     ]#docker rm 882117d0581d

推荐阅读