环境准备

Docker版本及支持平台

Docker版本:

  • 社区版(Community Edition,CE)
  • 企业版(Enterprise Edition,EE)

支持平台:

  • Linux(CentOS,Debian,Fedora,Oracl,Linux,RHEL,SUSE和Ubuntu)
  • Mac
  • Windows

系统推荐

系统CentOS 7.6+以上,最好不要使用centos7.4以及一下,容器技术依赖于内核技术,低版本系统部署和运行后可能问题会非常多。

  1. [root@master ~]# uname -r
  2. 3.10.0-1062.9.1.el7.x86_64

防火墙,SELinux,swap关闭

  1. #关闭防火墙
  2. systemctl stop firewalld
  3. systemctl disable --now firewalld
  4. #关闭selinux
  5. setenforce 0
  6. sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config
  7. #关闭swap
  8. swapoff -a && sysctl -w vm.swappiness=0
  9. sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

yum准备

  1. yum install -y epel-release bash-completion wget yum-utils
  2. cd /etc/yum.repos.d/
  3. #阿里云docker yum镜像源
  4. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. #docker官网 yum镜像源
  6. wget https://download.docker.com/linux/centos/docker-ce.repo

docker官方脚本检查

  1. curl -s https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh
  2. bash ./check-config.sh

docker官方的内核检查脚本建议(RHEL7/CentOS7: User namespaces disabled; add 'user_namespace.enable=1' to boot command line),如果是yum系列的系统使用下面命令开启

  1. grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
  2. #然后重启
  3. reboot

docker CE安装

yum安装docker-ce最新版本
yum install docker-ce -y
docker version

Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:25:41 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

配置加速源并配置docker的启动参数

镜像从哪里来?
Docker Hub是由Docker公司负责维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。地址:https://hub.docker.com

使用systemd是官方的建议,详见 https://kubernetes.io/docs/setup/cri

mkdir -p /etc/docker/
cat>/etc/docker/daemon.json<<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://2lefsjdg.mirror.aliyuncs.com"],
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

或者
cat>/etc/docker/daemon.json<<EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

复制补全脚本

cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/

docker启动并看下信息是否正常

systemctl daemon-reload 
systemctl restart docker
docker info

docker 使用

开发人员首先构建一个镜像,然后把镜像推到镜像仓库中。因此,任何可以访问镜像仓库的人都可以使用该镜像。然后,他们可以将镜像拉取到任何运行着Dock er 的机器上并运行镜像。Docker 会基于镜像创建一个独立的器,并运行二进制可执行文件指定其作为镜像的一部分。

镜像分类

1、基础镜像,例如centos、ubuntu
2、环境镜像,基于基础镜像构建,例如java、php
3、项目镜像,基于环境镜像打包项目代码,最终交付物