目录
1 初识 Docker 1.1 Docker 原理简介1.2 Docker 核心概念2 安装 Docker 2.1 查看系统内核版本2.2 更新 yum 包2.3 安装软件包2.4 向 yum 中添加 Docker 仓库2.5 安装指定版本的 Docker2.6 启动 Docker2.7 验证安装是否成功3 扩展内容 3.1 卸载旧版本 Docker3.2 常用的 Docker 命令容器大行其道, 不来试一手怎能感知其强大? 本文主要是写给0基础的小白 (对, 就是博主本人?) 作为入门参考, 步骤详细, 对安装过程中遇到的坑都有一一记录, 如有疑问, 可直接评论区留言?
关于 Docker, 引用百度百科上的介绍:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 的架构:Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类。
Docker 服务端(daemon)一般在宿主机后台运行,等待接收来自客户端的请求,并处理这些请求(创建、运行、分发容器)。 Docker 客户端可以和服务端既可以运行在一个机器上,为用户提供一系列命令,用户通过这些命令(也可以是 Socket 或者RESTful API )与 Docker daemon 进行交互。
Docker 与虚拟机的区别, 可以参考这篇博客: 虚拟机与Docker有何不同?
Docker 的核心概念有三个:
(1) 仓库 (Repository): Docker 存放镜像文件的仓库, 与 Maven、 Git 等的仓库类似, Docker 官方提供了一个名为 Docker Hub 的注册服务器来保存多个仓库, 每个仓库又可以包含多个不同tag的镜像;
(2) 镜像 (Image): 是构建容器的源代码, 是一个只读的模板, 由一层一层的文件系统组成;
(3) 容器 (Container): 是由 Docker 镜像创建的运行实例, 容器中包含特定的应用及其所需的依赖文件, 容器之间相互隔离.
镜像与容器的理解:
Docker 镜像: 相当于面向对象语言(比如 Java)中的类, 也可简单类比虚拟机的镜像;Docker 容器: 相当于面向对象语言中由类创建的对象, 也可简单类比虚拟机.要安装 Docker, 首先要保证 Linux 系统是否符合要求, Docker 官方建议Linux内核版本要在 3.8以上.
以root用户登录系统, 查看系统的内核版本及发行版本号:
[root@localhost ~]# uname -a Linux localhost 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux可以看出来, 博主这里演示所用的内核版本是3.10.
(1) 修改系统的 yum 源为阿里源:
为了提高安装时的下载速度, 国内用户建议将 yum 源修改为阿里云提供的源. —— 此步骤可省略.
# 备份原镜像文件, 便于后期恢复 [root@localhost ~]# cd /etc/yum.repos.d [root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup # 下载新的 CentOS-Base.repo # CentOS-5: [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo # CentOS-6: [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # CentOS-7: [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清除缓存: [root@localhost yum.repos.d]# yum clean all # 生成缓存: [root@localhost yum.repos.d]# yum makecache如果上述清除缓存、生产缓存过程中, 发生如下异常:
Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 24 M RSS (328 MB VSZ) Started: Fri Sep 27 17:38:23 2019 - 04:02 ago State : Traced/Stopped, pid: 10512可通过 ps aux | grep yum 定位正在使用yum服务的进程, 然后通过kill -9 PID 杀死该进程, 最后再尝试清除缓存、生成缓存操作.
(2) 更新 yum 包 —— 为了避免发生不必要的异常, 必须更新:
[root@localhost ~]# yum update Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package GeoIP.x86_64 0:1.5.0-11.el7 will be updated --> Processing Dependency: geoipupdate for package: GeoIP-1.5.0-14.el7.x86_64 ---> Package NetworkManager.x86_64 1:1.8.0-9.el7 will be updated ...... --> Finished Dependency Resolution Dependencies Resolved ...... Total 2.2 MB/s | 412 MB 00:03:04 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : libgcc-4.8.5-39.el7.x86_64 1/745 Updating : centos-release-7-7.1908.0.el7.centos.x86_64 2/745 ...... Verifying : e2fsprogs-1.42.9-10.el7.x86_64 743/745 Verifying : python-slip-0.4.0-2.el7.noarch 744/745 ...... Complete!安装需要的软件包, 其中 yum-util 提供 yum-config-manager 功能, 另外两个是 device-mapper 驱动的依赖.
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2(1) 完成上述步骤后, 即可查看仓库中的所有 Docker 版本:
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r * updates: mirrors.aliyun.com Loading mirror speeds from cached hostfile Loaded plugins: fastestmirror, langpacks * extras: mirrors.aliyun.com docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable ...... docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable ...... * base: mirrors.aliyun.com Available Packages(2) 通过命令 yum install docker-ce-版本号安装Docker, 这里安装的是18.06.3.ce:
[root@localhost ~]# yum install -y docker-ce-18.06.3.ce Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies ...... Complete!通过docker version命令查看, 如果有 Client 和 Server 两部分信息, 表示 Docker 安装、启动成功了:
[root@localhost ~]# docker version Client: Version: 18.06.3-ce API version: 1.38 Go version: go1.10.3 Git commit: d7080c1 Built: Wed Feb 20 02:26:51 2019 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.3-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: d7080c1 Built: Wed Feb 20 02:28:17 2019 OS/Arch: linux/amd64 Experimental: false如果宿主机上曾经安装过 Docker, 再次安装时可能发生错误, 卸载方法如下:
[root@localhost ~]# yum remove docker docker-common docker-selinux docker-engine详细内容请参考: Docker 基础用法和命令帮助
docker ps # 查看当前正在运行的容器 docker ps -a # 查看所有容器的状态 docker images # 查看本地镜像 docker rm id/name # 删除某个容器 docker rmi id/name # 删除某个镜像 docker attach id # 进入某个容器(使用exit退出后, 容器也将停止运行) docker exec -it id # 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行) docker start/stop id/name # 根据 id/name 启动/停止某个容器 docker build -t heal/tomcat:8.5.43 . # 通过当前目录下的Dockerfile创建一个名为heal/tomcat:8.5.43的镜像 docker run -it -d -p 7070:8080 --name tomcat heal/tomcat:8.5.43 # 以镜像heal/tomcat:8.5.43创建名为tomcat的容器, 并以后台模式运行, 将端口映射到宿主机的2222端口上下篇将介绍如何通过 Docker 部署一个 Tomcat 容器, 并发布 Web 项目, 请关注?
Centos修改yum源为国内阿里源
Docker 基础用法和命令帮助
Centos7下安装Docker(详细的新手装逼教程)
作者: 马瘦风(https://healchow.com)
出处: 博客园 马瘦风的博客(https://www.cnblogs.com/shoufeng)
感谢阅读, 如果文章有帮助或启发到你, 点个[好文要顶?] 或 [推荐?] 吧?
本文版权归博主所有, 欢迎转载, 但 [必须在文章页面明显位置标明原文链接], 否则博主保留追究相关人员法律责任的权利.
转载于:https://www.cnblogs.com/shoufeng/p/11598106.html
