Docker系列(一)

 本章内容

  • 如何安装docker
  • docker的基本架构
  • 如何配置docker镜像加速器
  • docker 服务相关命令的使用
  • docker镜像相关命令的使用
  • docker容器相关命令的使用

一、安装Docker

将Docker安装到CentOS上

注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

第一步:将yum 包更新到最新

sudo yum update

第二步:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

第三步:设置yum源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

第四步:安装docker(docker有社区版和商业版之分,平常安装ce版即可)

sudo yum install docker-ce

第五步:安装后查看docker的版本

docker -v

二、Docker架构

Docker架构图

Docker三大组成部分:镜像(images),容器(Container),仓库(Repoitory)

2.1 镜像

镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。例如:

添加一个文件;

执行一个命令;

打开一个窗口。

也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

Docker镜像(Image),就相当于是一个root文件系统,比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统

2.2 容器

Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。  容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。所以Docker容器就是:

  • ​ 一个镜像格式;
  • ​ 一些列标准操作;
  • ​ 一个执行环境。

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

    和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。

Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

镜像与容器的关系,就像面向对象程序设计中的咧与对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

2.3 仓库(Registory,也叫注册中心)

Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营公共的Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像(说明:在Docker Hub下载镜像巨慢,可以自己构建私有的Registry)。https://hub.docker.com/ 。仓库可以看成一个代码控制中心,用来保存镜像。

三、配置Docker的镜像加速器

镜像源

 

3.1 配置阿里云镜像源

配置阿里云镜像源

四、Docker服务相关命令

systemctl命令是系统服务管理器指令

4.1 启动docker服务

systemctl start docker

4.2 停止docker服务

systemctl stop docker

4.3 重启docker服务

systemctl restart docker

4.4 查看docker服务状态

systemctl status docker

4.5 设置开机启动docker服务

systemctl enable docker

查看docker服务的概要信息

docker info

查看docker服务帮助文档

docker --help

五、Docker镜像相关命令

5.1 查看镜像:查看本地所搜有镜像

  • docker images 
  • docker images -q    #查看所有镜像的id
查看镜像
  • REPOSITORY:镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

5.2 搜索镜像:从网络中查找需要的镜像

docker search 镜像名称

搜索镜像
  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

5.3 拉取镜像

从Docker仓库中下载镜像到本地,镜像名称格式为   名称:版本号 。如果版本号不指定则hi最新的版本,如果不知道镜像版本,可以在docker Hub搜索对应镜像查看

docker pull 镜像名称

例如,我要下载centos7镜像

docker pull centos:7

5.4 删除镜像:删除本地所有镜像

  • docker rmi 镜像id    #删除指定id的本地镜像
  • docker rmi `docker images -q`   #删除所有本地镜像

六、Docker容器相关命令

6.1 查看容器

查看正在运行的容器

docker ps

查看所有容器

docker ps –a

查看最后一次运行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited

6.2 创建与启动容器

创建容器常用的参数说明:

创建容器命令:docker run

  • -i:表示保持运行容器。通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪输入终端;通常与-i同时使用
  • --name :为创建的容器命名。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入容器。退出后,容器不会关闭
  • -it创建的容器一般称为交互式容器。-id创建的容器一般称为守护式容器
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

1)交互式方式创建容器

docker run -it --name=容器名称 镜像名称:标签 /bin/bash

这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态

退出当前容器

exit

(2)守护式方式创建容器:

docker run -id --name=容器名称 镜像名称:标签

登录守护式容器方式:

docker exec -it 容器名称 (或者容器ID)  /bin/bash

6.3 容器其他命令

  • 进入容器

docker exec  容器名称(或者容器ID)           #退出容器,容器不会关闭

  • 停止容器

docker stop  容器名称(或者容器ID)

  • 启动容器

docker start  容器名称(或者容器ID)

  • 删除容器:如果容器是运行状态则会删除失败,需要停止容器才能删除

docker rm  容器名称(或者容器ID)

  • 查看容器信息

docker inspect  容器名称(或者容器ID)

6.4 文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录

6.5 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。 创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如

docker run -id -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果你共享的是多级的目录,可能会出现权限不足的提示。

这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

6.6 查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

docker inspect 容器名称(容器ID) 

也可以直接执行下面的命令直接输出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

6.7 删除容器

删除指定的容器:

docker rm 容器名称(容器ID)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值