Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。Docker凭借其轻量、持续部署与测试、跨平台支持、高资源利用率与隔离等特性广泛被应用。近期实践docker基本知识,包括搭建docker、基础命令、镜像构建、高级特性等。
- 基础环境准备
准备centos环境,版本为centos7.5
[root@docker ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@docker ~]# uname -a
Linux docker 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
关闭防火墙
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl disable firewalld
[root@docker ~]# systemctl status firewalld
关闭selinux,并重启(reboot)
[root@docker ~]# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
更新epel源
[root@docker ~]# yum install -y epel-release
安装基础软件包
[root@docker ~]# yum install -y python-devel libffi-devel gcc openssl-devel git python-pip
设置时间同步并查看是否同步成功
[root@docker ~]# yum install ntp ntpdate -y
[root@docker ~]# systemctl enable ntpd.service
[root@docker ~]# systemctl start ntpd.service
[root@docker ~]# ntpq -p
添加docker源
tee /etc/yum.repos.d/docker.repo << 'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
下载docker
安装docker(默认会安装最高版本)
[root@docker ~]# yum install docker-engine docker-engine-selinux -y
查看docker版本号,当前为17.05
[root@docker ~]# docker --version
Docker version 17.05.0-ce, build 89658be
若docker版本不符合要求,需要卸载docker,则
[root@docker ~]# yum list installed | grep docker
docker-engine.x86_64 17.05.0.ce-1.el7.centos @dockerrepo
docker-engine-selinux.noarch 17.05.0.ce-1.el7.centos @dockerrepo
[root@docker lib]# yum -y remove docker-engine.x86_64 docker-engine-selinux.noarch
安装指定版本docker,如指定版本1.12.5
[root@docker lib]# yum install -y docker-engine-1.12.5 docker-engine-selinux-1.12.5
若直接运行docker相关命令,会运行不了
[root@docker ~]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
需要重启docker服务
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl enable docker
[root@docker ~]# systemctl restart docker
此时,运行docker命令,能正常运行
[root@docker ~]# docker images
[root@docker ~]# docker ps -a
由于还没pull镜像,也没开启docker进程,因此镜像和进程显示均为空。