DOCKER 安装步骤-最靠谱的笔记
一、系统环境规划
服务器名
项目名称 |
docker |
操作系统 |
CentOS Linux release 7.1.1503 (Core) |
Docker 版本 |
17.03.2-ce |
二、Docker 简介
Docker 容器可以简单的理解为是一个轻量级的虚拟机,容器和容器之间是相互隔离的。虚拟机和虚拟机之间是操作系统上的隔离,而容器和容器之间是进程上的隔离。
使用Docker 可以给我们带来很大的方便,比如:可以在一台主机上创建多个容器,当做多个节点来使用;在一台机器上安装多个MySQL 实例,它们的端口都是3306;可以把我们的应用程序进行打包等等。
Docker 官方主页: https://www.docker.com
Docker 官方文档: https://docs.docker.com/
Docker Hub: https://hub.docker.com
三、Docker 的安装
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本CentOS 7 的内核一般都是3.10的,而CentOS 6.X 的内核一般都是2.6,在2.6的内核下,Docker运行会比较卡,所以一般会选择升级到3.10版本。
3.1、卸载掉系统自带的老版本docker
yum remove -y docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate \
docker-selinux docker-engine-selinux docker-engine
3.2、安装相关的依赖包:
安装docker的时候可能会报错缺包或者依赖包版本过低等问题,可视具体情况安装或升级相关依赖包。
yum install -y yum-utils device-mapper-persistent-data lvm2
3.3、配置docker 源
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.4、安装docker
安装之前我们可以先查看下有哪些docker 版本
yum list docker-ce –showduplicates | sort -r
安装docker:这里我们安装的是 17.03.2 版本。
yum install -y –setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
3.5、我们也可以使用官方提供的脚本来安装docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
四、查看Docker 版本和相关信息
4.1、安装完成,查看docker 版本信息
4.2、启动docker
安装完docker 服务是没有启动的,需要启动服务。
systemctl enable docker
systemctl start docker
启动完毕,查看docker 服务状态:
4.3、docker info 查看docker 相关信息
五、拉取镜像创建容器
Image(镜像) 和 Container(容器) 是Docker 中最基本的两个概念。
此处的 Image 可以理解为创建虚拟机的时候需要的操作系统镜像,也就是说Image 是创建容器的时候需要的镜像。
我们需要从网络上来拉取镜像:这是一个centos 7.6的镜像
docker pull centos:7.6.1810
拉取完毕,查看已下载的镜像:
有了镜像我们就可以使用镜像来创建容器了。
当然其他各个版本的镜像也都是可以下载的
下载 7.8 镜像
[root@docker ~]# docker pull centos:7.8.2003
7.8.2003: Pulling from library/centos
9b4ebb48de8d: Pull complete
Digest: sha256:8540a199ad51c6b7b51492fa9fee27549fd11b3bb913e888ab2ccf77cbb72cc1
Status: Downloaded newer image for centos:7.8.2003
六、创建容器
6.1、我们使用docker ps 或者 docker ps -a 命令来查看所有的容器信息,如下,当前没有任何容器,我们来创建一个。
docker run -d –name centos7_6_01 -h container_01 \
-p 220:22 \
–privileged=true \
centos:7.6.1810 /usr/sbin/init
参数解释:
–name centos7_6_01 为容器名字:centos7_6_01
-h container_01 为容器hostname:container_01
-p 220:22 为将22端口映射到220,也就是可以使用220端口直接连接到此容器
centos:7.6.1810 选择使用哪个镜像来创建容器
创建完毕,docker ps 查看下当前的容器:
这里我们看到有一个 NAMES 为 centos7_6_01 的容器了。
进入某个容器有两种方式,如下:
docker exec -it <NAMES> bash
docker exec -it <CONTAINER ID> bash
也就是可以直接使用容器名字或者容器ID来进入
docker exec -it centos7_6_01 bash
docker exec -it ed20ee9b8226 bash
6.2、每个容器都是有独立的IP的,IP可以在创建的时候指定,也可以自动生成。
6.3、修改容器时间:
容器创建完成会后,内部时间跟宿主机操作系统不一致,需要修改。
宿主机操作系统上执行:
docker cp /usr/share/zoneinfo/Asia/Shanghai centos7_6_01:/etc/localtime
修改完成再次进入容器查看:
七、将某个容器提交为一个镜像模板
Docker 中可以把某个容器提交为一个 image,也就是说我们可以以某个容器为模板来创建容器或者说是复制容器,这可以为我们提供极大的方便,节约更多的时间。
比如:我们在centos7_6_01 容器中安装完了MySQL 数据库以及相关的一些配置,我们此时还需要创建一个相同环境相同配置的容器centos7_6_02,那我们是先创建一个空的容器,然后去安装MySQL数据库以及配置其他的信息,还是直接把centos7_6_01 作为一个模板直接复制一个容器出来呢?当然是直接复制一个要更快捷更高效。
查看当前容器和镜像信息如下,我们把name 为 centos7_6_01 的容器提交为一个模板来供我们后续使用,也可以说是把 centos7_6_01 进行复制来实现一个自动化部署的功能。
我们把容器 centos7_6_01 提交为 centos7_6 版本为2.0 的一个镜像:
docker commit centos7_6_01 centos7_6:2.0
我们再以这个新创建的镜像来创建一个容器:创建一个名为 mysql_01,主机名为 mysql_01,端口为 221 的容器:
docker run -d –name mysql_01 -h mysql_01 \
-p 221:22 \
–privileged=true \
centos7_6:2.0 /usr/sbin/init
此时我们创建出来的 mysql_01 容器就跟 centos7_6_01 容器是一摸一样的了。
容器mysql_01 拥有独立的ip地址。