docker基础之01doe

什么是Docker概述

什么是容器?

• 容器技术已经成为应用程序封装和交付的核心技术(打包:pxe、nginx、openstack等)

• 容器技术的核心由以下几个内核技术组成:

  1. – CGroups(Control Groups)-资源管理
  2. – NameSpace-进程隔离
  3. – SELinux安全

• 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速

 

什么是Docker?

• Docker是完整的一套容器管理系统

• Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术

 

Docker优点有?

• 相比于传统的虚拟化技术,容器更加简洁高效

• 传统虚拟机需要给每个VM安装操作系统

• 容器使用的共享公共库和程序

 

 

Docker缺点有?

• 容器的隔离性没有虚拟化强

• 共用Linux内核,安全性有先天缺陷

• SELinux难以驾驭

• 监控容器和容器排错是挑战

 

怎么部署Docker

安装前准备

• 需要64位操作系统

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

• 关闭防火墙(不是必须)

 

安装Docker

• 软件包列表:

1、Yum自定义源的配置

mkdir /var/ftp/docker

手动将docker-engine-1.12.1-1.el7.centos.x86_64.rpm          docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm这两个包放到/var/ftp/docker

createrepo  /var/ftp/docker-----------自定义yum仓库

[root@room9pc01 ~]# ls /var/ftp/docker/
docker-engine-1.12.1-1.el7.centos.x86_64.rpm          repodata
docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm

2、在虚拟机里面配置信息的yum地址repo文件

vim /etc/yum.repos.rep/dev.repo

Baseurl=http://192.168.1.254/docker

3、配置完成后开始安装docker

yum clean all

yum -y install docker-engine.x86_64-------docker-engine-selinux会被依赖而安装

Systemctl start docker

Systemctl enable docker

 

[root@jacob ~]# Ifconfig 会出现一个docker0 

 

运用Docker镜像

什么是镜像

  1. 在Docker中容器是基于镜像启动的
  2. 镜像是启动容器的核心
  3. 镜像是启动容器的模版
  4. 镜像采用分层设计
  5. 使用快照的COW技术,确保底层数据不丢失(后端盘采用cow技术)
  • 无数的前端共享一个后端。

 

遇到虚拟机不能ping通真实网络的问题

因为eth0没有ip地址了

systemctl restart network就好了,感觉这是一个bug(因为有时出现有时不出现这种情况)

 

 

Docker hub镜像仓库

• https://hub.docker.com

• Docker官方提供公共镜像的仓库(Registry)

 [root@docker1 ~]# docker search rhel7----------搜索

 [root@docker1 ~]#docker search nginx -----------搜索-

 [root@docker1 ~]#docker search centos ----------搜索-

 [root@docker1 ~]#docker search mysql-------- 搜索-

 

 

镜像操作之下载、上传镜像

• 下载镜像(从镜像仓库中下载镜像)

 [root@docker1 ~]# docker help pull

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

 [root@docker1 ~]# docker pull rhel7------------ 下载rhel7

• 上传镜像(上传镜像到仓库)

 [root@docker1 ~]# docdocker help push

Usage: docker push [OPTIONS] NAME[:TAG]

 [root@docker1 ~]# docker push rhel7 -----------------上传rhel7

 

镜像操作之导入、导出镜像

• 导出镜像(将本地镜像导出为tar文件)

[root@docker1 ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
rhel7               latest              d023afdfeea3        10 days ago         200.7 MB

[root@docker1 ~]# docker save rhel7:latest > xx.tar-------导出镜像

[root@docker1 ~]# scp rhel7.tar 192.168.1.124:/root-------将导出镜像传到docker2
root@192.168.1.124's password:
rhel7.tar                                     100%  201MB  81.5MB/s   00:02

• 导入镜像(通过tar包文件导入镜像)

[root@docker2 ~]# ls
rhel7.tar  RPM-GPG-KEY-CentOS-7  v.sh

[root@docker2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

[root@docker2 ~]# docker load < rhel7.tar---------导入镜像

[root@docker2 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
rhel7               latest              d023afdfeea3        10 days ago         200.7 MB

镜像操作之启动生成容器

• 启动centos镜像生成一个容器

命令格式
docker run -it 镜像的名称:镜像的标签 【启动命令】---------- -i交互式的  -t 终端

以非交互式启动交互式程序。以-d启动交互式是启动不了的。会被当作脚本执行了

[root@docker1 docker_images]# docker images 查看本机镜像

会有busybox、ubuntu、centos、registry、nginx、redis镜像 标签默认是latest

[root@docker1 docker_images]# docker run -it centos /bin/bash

• 开启另一个终端(查看容器信息)

[root@server0 ~]# docker ps  或加-a

docker ps -a------显示所有容器的详细信息

docker ps -q-----只显示当前容器的id

 

可能会遇到的问题?

1.容器退出以后,我怎么能再进入原来的容器。  

系统的一个进程,退出后进程关闭。

容器我们在退出以后就关闭了,

如果想进入原来的容器需要重新启动那个容器

退出两种:ctrl p q    和  exec进入

 

2.为什么有的容器不加启动命令就起不来(nginx,redis)

因为是启动容器的默认命令是非交互式命令。

docker inspect nginx

docker inspect redis

3.启动参数-it是干什么用的?

-i表示交互的

-t表示终端

-d 表示非交互式

4.redis系统为什么是空的?

不是空的,因为你不熟悉 2891ae9b7744

debian系列(ubantu)    vs   redhat(centos、redhat)

dpkg rpm

apt-get yum

docker run -it redis /bin/bash

5.怎么查看系统中有几个容器?

在另一个终端查看    docker ps

6.怎么管理这些容器?

用docker常用命令     

 

案例2:镜像基本操作

镜像基本操作:

– 导入镜像(centos、nginx、mysql)

– 导出镜像为tar包文件(方便其他主机使用镜像)

– 启动centos、nginx镜像

 

Docker基本命令

命令列表

  1.  docker images  ---------------查看镜像列表
  2. – docker pull  //下载镜像
  3. – docker push  //上传镜像
  4. – docker save  //镜像另存为tar包
  5. – docker load  //使用tar包导入镜像
  6. – docker search  //搜索镜像
  7. – docker tag  //修改镜像名称和标签
  8. – docker history  //查看镜像制作历史
  9. – docker inspect  //查看镜像底层信息
  10. – docker rmi  //删除本地镜像

 

 

详解之docker images

• 查看镜像列表

– 镜像仓库名称

– 镜像标签

– 镜像ID

– 创建时间

– 大小

[root@jacob ~]# docker images

REPOSITORY     TAG     IMAGE ID        CREATED       SIZE

Centos    latest     980e0e4c79ec    8 months ago   196.7 MB

 

详解之docker history

• 查看镜像历史

– 了解镜像制作过程

– 详细参考后面的dockerfile内容

[root@jacob ~]# docker history centos

IMAGE CREATED CREATED BY SIZE COMMENT

980e0e4c79ec  8 months ago /bin/sh -c #(nop) CMD ["/bin/bash"]

0 B

 

 

详解之docker inspect

• 查看镜像底层信息

– 了解镜像环境变量、存储卷、标签等信息

命令格式:docker inspect 镜像的名称:镜像的标签

 

[root@jacob ~]# docker inspect centos

... ...

{

"Id": "sha256:980e0e4c79ec933406e467a296ce3b86685e6b42eed2f873745e6a91d718e37a",

"RepoTags": [

"centos:latest"

],

"RepoDigests": [],

"Parent": "",

"Comment": "",

"Created": "2016-09-06T21:10:20.397787682Z",

"Container": "37446a1771cbec3e85b76d9159fd6a5a92743655cb92a65661e8a174bad81c7e“

... ...

 

 

详解之docker rmi

• 删除本地镜像

– 注意:启动容器时删除镜像会提示错误

[root@jacob ~]# docker rmi centos

Error response from daemon: conflict: unable to remove repository reference

"centos" (must force) - container 3daba799135c is using its referenced image

980e0e4c79ec

 

详解之docker save|load

• 保存本地镜像另存为tar文件

– 方便其他人使用tar包导入镜像

[root@jacob ~]# docker save centos > centos.tar

[root@jacob ~]# ls centos.tar

centos.tar

• 使用tar包文件导入镜像

[root@jacob ~]# docker load < centos.tar

 

详解之docker tag

• 重命名镜像名称(复制)

[root@jacob ~]# docker images

REPOSITORY    TAG    IMAGE ID     CREATED    SIZE

Centos    latest 980e0e4c79ec 8 months ago 196.7 MB

 

[root@jacob ~]# docker tag centos:latest test:v1

[root@jacob ~]# docker images

REPOSITORY    TAG       IMAGE ID CREATED SIZE

Centos   latest 980e0e4c79ec 8 months ago 196.7 MB

Test   SIZE 980e0e4c79ec 8 months ago 196.7 MB

 

 

 

容器常用命令列表

• 命令列表

  1. – docker run //运行容器
  2. docker ps ---------显示当前容器的详细信息
  3. docker ps -a------显示所有容器的详细信息
  4. docker ps -q-----只显示当前容器的id
  5. – docker stop //关闭容器
  6. – docker start //启动容器
  7. – docker restart //重启容器
  8. – docker attach|exec //进入容器
  9. – docker inspect //查看容器底层信息
  10. – docker top //查看容器进程列表
  11. – -docker rm 容器ID------删除容器
  12. docker rm $(docker stop $(docker ps -aq))-------------批量删除容器前必须先将容器停止

 

 

上帝进程也叫根进程。Pid为1的进程。系统就是根进程。也就是pid为1的进程。

Redhat6的根进程为init(1)  cat /etc/redhat-reles

 

删除进程(两种组合命令)

docker ps -aq |xargs docker rm

docker rm $(docker ps -aq) 前面命令的结果作为后面命令的参数

 

 

详解之docker run

• 使用镜像启动容器

[root@jacob ~]# docker run -it centos bash

[root@bbb51ac87b08 /]#exit

[root@jacob ~]# docker run -itd centos bash

b8f218f2341c12655e6092d7d2e7fd5229824fdefce84075fb3a9569ebf82079

[root@jacob ~]# docker ps

 

详解之docker ps

• 列出容器列表

– docker ps 查看正在运行的容器

– docker ps -a 查看所有容器列表

– docker ps -aq 仅显示所有容器id

[root@server0 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS  NAMES

b8f218f2341c centos "bash" 9 minutes ago Up 8 minutes    jovial_pasteur

 

详解之docker stop|start|restart

• 管理容器

– docker stop 关闭容器

– docker start 开启容器

– docker restart 重启容器

[root@server0 ~]# docker ps

CONTAINER ID  IMAGE    COMMAND   CREATED STATUS    PORTS    NAMES

b8f218f2341c centos   "bash"   9 minutes ago Up 8 minutes    jovial_Pasteur

 

[root@server0 ~]# docker stop b8f

 

详解之docker attach|exec

• 进入容器

– docker attach  进入容器,exit会导致容器关闭 动态查看docker attach id号

– docker exec  进入容器,exit不会关闭容器 相当于ssh连接,不会造成损失

[root@server0 ~]# docker ps

CONTAINER ID IMAGE  COMMAND   CREATED STATUS   PORTS  NAMES

b8f218f2341c centos "bash" 9 minutes ago Up 8 minutes

  1. [root@server0 ~]# docker attach b8f
  2. 先按ctrl不松手先按p再按q 退出终端而不关闭终端

[root@server0 ~]# docker exec -it 7e4e*  /bin/bash
 

 

 

详解之docker inspect

• 查看容器底层信息

[root@server0 ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b8f218f2341c centos "bash" 9 minutes ago Up 8 minutes    jovial_Pasteur

 

[root@server0 ~]# docker inspect 7e4e

"Id": "0cc385eb6f63373397e678347890914347dc8efa3cefd809c1ed8c157651a261",

"Gateway": "172.17.0.1",

"IPAddress": "172.17.0.2",

"MacAddress": "02:42:ac:11:00:02"

 

详解之docker top

• 查看容器进程列表

[root@server0 ~]# docker ps

CONTAINER ID  IMAGE COMMAND CREATED PORTS NAMES

b8f218f2341c centos "bash" 9 minutes ago jovial_Pasteur

 

[root@server0 ~]# docker top 7e4e

UID PID PPID C  STIME TTY   TIME CMD

root 3177 3163 0  21:25 pts/8  00:00:00 /bin/bash

虚拟机和真机进程是完全分离的。

容器执行的命令在系统中能看见。可以直接杀掉容器中的进程。容器很轻量,随时启随时关。就是优势。

 

 

 

详解之docker rm

• 删除容器

– 注意,删除正在运行的容器时会提示错误

[root@server0 ~]# docker rm 7e4e

[root@server0 ~]# docker rm `docker ps -aq`

docker镜像命令:

  1.  docker images  ---------------查看镜像列表
  2. – docker pull  //下载镜像
  3. [root@docker1 ~]# docker pull rhel7------------ 下载rhel7
  4. – docker push  //上传镜像
  5. [root@docker1 ~]# docker push rhel7 -----------------上传rhel7
  6. – docker save  //镜像另存为tar包
  7. [root@docker1 ~]# docker save rhel7:latest > xx.tar-------导出镜像
  8. – docker load  //使用tar包导入镜像
  9. [root@docker2 ~]# docker load < rhel7.tar---------导入镜像
  10. – docker search  //搜索镜像
  11. [root@docker1 ~]# docker search rhel7----------搜索
  12. – docker tag  //修改镜像名称和标签
  13. – docker history  //查看镜像制作历史
  14. [root@jacob ~]# docker history centos
  15. – docker inspect  //查看镜像底层信息
  16. [root@jacob ~]# docker inspect centos
  17. – docker rmi  //删除本地镜像
  18. [root@jacob ~]# docker rmi centos

docker 容器命令:

  1. docker run //运行容器
  2. docker run -it 镜像的名称:镜像的标签 【启动命令】---------- -i交互式的  -t 终端
  3. docker ps ---------显示当前容器的详细信息
  4. docker ps -a------显示所有容器的详细信息
  5. docker ps -q-----只显示当前容器的id
  6. docker pa -aq ----显示当前所有容器的id
  7. – docker stop 容器ID-------------关闭容器
  8. – docker start 容器ID-----------启动容器
  9. – docker restart 容器ID-------------重启容器
  10. – docker attach 容器ID----------进入容器
  11.  docker exec -it 容器ID----------进入容器
  12. – docker inspect 容器ID-----------查看容器底层信息
  13. – docker top 容器ID-----------查看容器进程列表
  14. – -docker rm 容器ID------删除容器
  15. docker rm $(docker stop $(docker ps -aq))-------------批量(删除容器前必须先将容器停止)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值