docker容器Centos篇

一、docker介绍

1、什么是docker容器

  • docker是一个开源的应用容器引擎,有Docker公司(前dotCloud公司)开发,基于Apache2.0开源授权协议发行。
  • 该引擎提供了一个轻量、快递的环境,能够运行开发者的程序,并方便高效的将程序从开发者的电脑部署到测试环境,然后再部署到生产环境。

2、docker容器的优点

  • 启动速度快(秒级),由于去除了管理程序的开销,docker容器拥有很高的性能,同一台宿主机可以运行更多的容器,有效的利用了资源。
  • 能够为开发,测试和部署提供一致的环境,避免了在开发或测试时一切正常,但在生成环境中却不能运行的问题。
  • 鼓励面向服务架构,Docker 推荐单个容器只运行一个应 用程序或进程,这样就形成了一个分布式的应用程序模型。

3、docker容器的用途

  1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
  3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

4、docker与虚拟机的区别

VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用。

Docker在宿主机的操作系统上创建Docker引擎,直接通过宿主机的操作系统调用硬件资源,而不是虚拟化操作系统和硬件资源,所以占用资源更少,性能更高。

5、docker核心组件

docker三要素:仓库、镜像、容器

  • Docker客户端和服务器,也称为Docker引擎:docker是客户端/服务器架构的程序,docker客户端只需向docker服务器或守护进程发送请求,守护进程或服务器完成后返回结果,docker的守护进程有时也称作为docker引擎。用户可以在同一台宿主机上运行Dokcer守护进程和客户端,也可以从本地的docker客户端连接到另一台宿主机上的docker引擎。
  • Docker镜像:镜像是docker容器的基石,用户基于镜像来运行容器的,镜像在docker生命周期中属于“构建阶段”,镜像基于联合文件系统的一种层式结构,由一系列的命令构建出来。可以将镜像理解为容器的“源代码”。镜像体积小,便于分享,存储,更新。
  • Registry:Registry即仓库,Registry分为公共和私有的两种。docker公司运营的公共Registry是docker hub。用户可以自己注册账号,在其中保存自己的镜像。也可以搭建私有的仓库。
  • Docker容器:镜像处在docker生命周期的“构建”阶段,容器则处在“运行”阶段,如果将镜像理解为一个“类”,则容器可以理解为这个“类”的“运行时实例”,可以被创建,启动,停止,删除。
    总结起来容器就是:一个镜像格式,一系列标准操作,一个执行环境。

二、docker安装

1、docker安装条件

  • 运行64位cpu架构的机器(x86_64, amd64),不支持32位机器
  • 运行linux3.8或更高的内核(可以使用uname -a 命令查看系统内核)
  • 内核必须支持一种合适的存储驱动:Device Messager,AUFS,vfs等, 默认为Device Messager。
  • 内核支持cgroup和命名空间

2、CentOS安装docker

1.登录root用户查看内核版本号

uname -a

在这里插入图片描述
2.yum包更新到最新

yum update

3.设置docker源(二选一即可)
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
4.装yum-util, 该包提供yum-config-manager功能

yum install -y yum-utils

5.安装docker, yum install docker-ce-版本号

yum install docker-ce-18.06.3.ce

在这里插入图片描述

如果出现了这个问题:
在这里插入图片描述
原因就是上次没有正常退出docker,请使用一下代码,
systemctl start docker.service

6.验证

docker version

在这里插入图片描述
7.启动docker

systemctl start docker

8.设置docker开启自启动

systemctl enable docker

三、配置镜像加速器

1、获取加速器地址

登录阿里云网站:https://www.aliyun.com/,注册 / 登录账号阿里云网站。

2、复制加速器链接

  • 搜索容器,选择容器镜像服务在这里插入图片描述
  • 点击容器工具–>镜像加速器,复制该加速器链接。
    在这里插入图片描述

3、配置docker

在/etc/docker目录下创建daemon.json配置文件

vim /etc/docker/daemon.json

配置如下:

{
    "registry-mirrors":["你的阿里云专属加速器地址"]
}

在这里插入图片描述

4、重新加载docker

systemctl daemon-reload

5、重启docker

systemctl restart docker

到这里镜像就已经配置好了,下面是镜像的常用操作。

四、镜像常用操作

1、搜索镜像

docker search 镜像名称

示例:搜索ubuntu

docker search ubuntu

2、下载镜像

docker pull 镜像名称:标签

标签也就是版本号:

# 未指定标签
docker pull ubuntu

#指定标签
docker pull ubuntu:16.04

在这里插入图片描述
3、查看镜像

docker images

这是我前面下载的Ubuntu
在这里插入图片描述
4、删除镜像

docker rmi 镜像id或名称

如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像,如需强行删除可以使用-f参数,例如:docker rmi -f ubuntu:16.04

五、容器常用命令

1、运行容器

  • 创建容器
docker create -it ubuntu:latest

参数与docker run命令相同,与docker run命令不同的是docker create命令创建的容器不会自动启动。

  • 创建并启动容器
sudo docker run -it ubuntu:18.04 /bin/bash

使用该命令时,如果镜像还没有下载,则docker会首先下载该镜像,然后执行创建并启动容器。

参数说明:
-i 开启容器中的STDIN(标准输入流),能接受命令,可以理解为已交互模式启动容器
-t 为容器分配一个tty终端,即:分配一个命令行窗口, 有了这两个参数新创建的容器才能有一个交互式shell。
/bin/bash 参数告诉docker在容器中启动一个bash shell
可以通过–name 参数为容器命名
如果指定 -d 参数,则说明容器以守护进程形式启动
可以使用 docker help run查看更详细的参数说明
在容器中使用,“cat /etc/issue”可以查看到运行中的容器其实为ubuntu系统。

在这里插入图片描述

2、使用容器

这是一个精简但完整的ubuntu系统,例如执行以下的命令:

root@ee40a28bc5de:/# hostname
ee40a28bc5de
root@ee40a28bc5de:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

就跟有系统一样,有属于自己的目录、用户这些的。但是你想查找ip的时候却找不到命令。
在这里插入图片描述
查看环境变量
在这里插入图片描述

查找不到是因为那些命令还没有安装,ubuntu镜像是精简版的系统,如果需要使用这些命令需要另外安装net-tools,包括vi,vim等也是需要另外安装的。

3、查看运行的容器

  • 查看运行中普通交互式容器信息,包括id,镜像,名称等。
docker ps
  • 查看所有容器,包括停止运行的。
docker ps -a

4、容器停止

docker stop ee40

ee40是要停止容器的id号,可以不用完全输入,只要保证唯一就行。

5、容器启动

docker start ee40

跟上面一样,输入要启动的容器的id,换了个启动的单词罢了。

6、进入容器

/bin 这个是可以省略的,可写可不写,看个人习惯。

[root@localhost /]# docker exec -it ee40 /bin/bash
root@ee40a28bc5de:/# exit
exit
[root@localhost /]# docker exec -it ee40 bash
root@ee40a28bc5de:/# 

只能进入运行中的容器哦

7、复制文件

1、从宿主机复制到容器

这一步是在宿主机操作!

1、创建一个abc文件

[root@localhost /]# echo hgfds >abc.txt
[root@localhost /]# ls
abc.txt  boot  etc   lib    media  opt   root  sbin  sys  usr
bin      dev   home  lib64  mnt    proc  run   srv   tmp  var

2、把abc.txt拷贝到容器idxxx里面的根目录下。

[root@localhost /]# docker cp /abc.txt ee40a28:/

3、运行容器并查看,这时会看见容器id名为ee40的里面多了一个abc.txt文件。

[root@localhost /]# docker exec -it ee40 bash
root@ee40a28bc5de:/# ls
abc.txt  boot  etc   lib    media  opt   root  sbin  sys  usr
bin      dev   home  lib64  mnt    proc  run   srv   tmp  var

对,这就是已经拷贝完了,就这么简单。

2、从容器复制到宿主机

启动并进入容器,接着上面继续走就行。
1、创建aaa.txt文件

root@ee40a28bc5de:/# echo tyuio > aaa.txt
root@ee40a28bc5de:/# ls
aaa.txt  bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
abc.txt  boot  etc  lib   media  opt  root  sbin  sys  usr

2、退出容器

root@ee40a28bc5de:/# exit

3、复制容器id名为xxx的aaa.txt文件,复制到根目录下。

这里已经是root用户了
直接查看会看到root用户根目录下有个aaa.txt的文件,这件就是从容器里面拷贝过来的。

[root@localhost /]# docker cp ee40:/aaa.txt /
[root@localhost /]# ls
aaa.txt  bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
abc.txt  boot  etc  lib   media  opt  root  sbin  sys  usr

总结区分一下:
这些都是在各自的根目录创建的。
从宿主机复制到容器里:

#拷贝根目录下名为abc的文本到id名为ee40a28的容器里面的根目录下。
docker cp /abc.txt ee40a28:/

从容器复制到宿主机里

#拷贝 id名为ee40的容器里面的aaa的文本到根目录下。
docker cp ee40:/aaa.txt /

也就是不用指定宿主机里面的名称,只需要指定容器名称即可。两者拷贝的位置换了一下罢了。

8、查看容器信息

  • 查看容器信息可以进入容器后,使用命令查看,例如:hostname,env等
[root@localhost /]# docker exec ee40 hostname
ee40a28bc5de

如果运行ifconfig,ip addr等命令,则需要先安装

  • 推荐使用docker inspect命令查看容器信息
docker inspect 7b8b

该命令以json的方式返回容器的信息,内容比较多,可以只查询一种一部分,示例如下:

root@ubuntu:/# docker inspect -f {{.Config.Hostname}} 7b8b
7b8b196818d5

9、删除容器

命令格式:docker rm 容器ID,(与删除镜像的命令很像,只少个i,镜像删除docker rmi 镜像名)

参数:

-f, --force=false 是否强行终止并删除一个运行中的容器
-1, --link=false :删除容器的连接 ,但保留容器
-v, --volumes=false :删除容器挂载的数据卷

扩展:如何卸载原先装有的docker

1.打开Terminal,执行下面命令: sudo apt-get purge docker-ce

2.删除Docker安装目录 sudo rm -rf /var/lib/docker

3.验证是否删除成功 docker info bash: /usr/bin/docker: No such file or directory 我们可以看到已经无法找到 docker 安装目录,证明 卸载成功

  • 35
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值