1 基础知识
1.1 基本概念
1.1.1 Docker的基本概念
– Docker是开发人员和系统管理员使用的容器
– Docker是用于开发,部署和运行应用程序的平台
注:
– 使用Linux容器来部署应用程序称为集装箱化
– 用于轻松部署应用程序
1.1.2 镜像(Images)
镜像的实质是一个可执行的包,包括应用程序代码、运行状态、库、环境变量和配置文件等。
1.1.3 容器(containers)
容器是镜像运行时的实例,即镜像执行是在内存中的内容
1.1.4 容器与虚拟机的区别
– 容器直接共享主机或其他容器的内核,独立运行的进程不占用任何其他可执行文件的内存,因此更轻量。
– 虚拟机运行一个完整的客户操作系统,因此需要使用更多的资源。
1.2 使用对象
– 开发人员
– 系统管理员
1.3 Docker的作用
– 用于开发
– 用于部署
1.4 Docker的特点
– 灵活,Docker能适应负责的应用程序装箱
– 轻量级,容器可直接利用并共享主机内核
– 可互换,可即时部署更新和升级
– 可扩展,可自由增加和自动分发容器副本
– 可堆叠,可垂直堆叠服务并即时堆叠服务
1.5 Docker的版本
– 社区版(CE,Community Edition),适用于个人开发人员或小团队(适用于尝试使用容器)
– 企业版(EE,Enterprise Edition),适用于企业开发和IT团队(适用于生产构建、发布和运行关键业务程序)
2 安装部署
2.1 系统环境配置
2.1.1 配置网络环境
nmcli connection modify ens33 ipv4.addresses "10.168.0.6X/24" nmcli connection modify ens33 ipv4.gateway "10.168.0.1" nmcli connection modify ens33 ipv4.method m nmcli connection modify ens33 ipv6.method i nmcli connection modify ens33 connection.autoconnect yes nmcli connection up ens33
2.1.2 配置主机名称
hostnamectl set-hostname docker.cmdschool.org reboot
2.1.3 配置名称解析
echo "10.168.0.60 docker-m docker-m.cmdschool.org" >> /etc/hosts echo "10.168.0.61 docker-n1 docker-n1.cmdschool.og" >> /etc/hosts echo "10.168.0.61 docker-n2 docker-n2.cmdschool.org" >> /etc/hosts
2.1.4 安装常用工具
yum install -y vim
2.2 软件环境配置
2.2.1 手动配置Docker的源
vim /etc/yum.repos.d/docker.repo
使用国内源建议加入如下配置,
[docker] name=docker baseurl=http://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
使用官方源请加入如下配置(可选),
[docker] name=docker baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/ gpgcheck=1 gpgkey=https://download-stage.docker.com/linux/centos/gpg
2.2.2 自动配置Docker的源(可选)
curl https://download.docker.com/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo
2.3 Docker的安装
2.3.1 安装DockerCE相关包
yum install -y docker-ce
验证管理用户的创建,
grep -i docker /etc/group /etc/passwd
显示如下:
/etc/group:docker:x:995:
注:docker组已经创建,但尚未有用户加入该组
2.3.2 启动Docker并配置自启动
systemctl enable docker.service systemctl start docker.service systemctl status docker.service
2.3.3 修改Docker存储位置
docker info | egrep -i "Docker Root Dir|Storage Driver"
显示如下:
Storage Driver: overlay2 Docker Root Dir: /var/lib/docker
停止Dcoker的服务
systemctl stop docker
定义新的存储位置:
vim /usr/lib/systemd/system/docker.service
更改如下参数:
[Service] ExecStart=/usr/bin/dockerd --graph=/data/docker-runningdata --storage-driver=overlay2
重载服务配置
systemctl daemon-reload
迁移存储数据
mkdir /data mv /var/lib/docker /data/docker-runningdata
启动Dcoker的服务
systemctl start docker
确认钱以后的存储的类型与位置
docker info | egrep -i "Docker Root Dir|Storage Driver"
显示如下:
Storage Driver: overlay2 Docker Root Dir: /data/docker-runningdata
2.3.4 校验安装的版本
In docker-m & docker-n[1-2]
docker --version
2.3.5 查看更详细的版本
In docker-m & docker-n[1-2]
docker info
信息显示如下:
Containers: 0 Running: 0 Paused: 0 […]
2.3.6 配置Docker用户与权限(可选)
2.3.6.1 创建用户
useradd docker -g docker -d /data/docker echo docker | passwd --stdin docker
2.3.6.2 配置用户权限
In docker-m & docker-n[1-2]
visudo
2.3.6.3 加入如下配置
docker ALL=(root) NOPASSWD: /usr/bin/docker,\ /bin/* /data/docker/*,\ /bin/* -* /data/docker/*,\ /bin/* *\:* /data/docker/*,\ /usr/sbin/* /data/docker/*,\ /usr/sbin/* -* /data/docker/*,\ /usr/sbin/* *\:* /data/docker/*,\ /usr/bin/* /data/docker/*,\ /usr/bin/* -* /data/docker/*,\ /usr/bin/* *\:* /data/docker/*
2.3.6.4 创建sudo日志文件
touch /var/log/sudo.log
2.3.6.5 配置sudo日志
visudo
在“Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin”下加入如下行:
Defaults logfile=/var/log/sudo.log Defaults loglinelen=0 Defaults !syslog
2.3.6.6 系统开启sudo日志
vim /etc/rsyslog.conf
在“local7.*”行后加入如下行:
local2.debug /var/log/sudo.log
重启系统日志服务:
systemctl restart rsyslog
2.3.7 代码测试Docker安装
2.3.7.1 创建hell-work代码
vim hell-work
加入如下代码:
FROM scratch COPY hello / CMD ["/hello"]
2.3.7.2 运行hell-work代码
docker run hello-world
信息显示如下:
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9bb5a5d4561a: Pull complete Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. […]
2.3.7.3 列出hell-world下载的镜像
docker image ls
信息显示如下:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e38bc07ac18e 6 weeks ago 1.85kB
2.3.7.4 列出hell-world显示消息退出的容器
docker container ls docker container ls --all docker container ls -aq
其中带all参数的命令行显示如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 078d19a0260e hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago priceless_wozniak
注:all参数可以显示退出的容器
参阅文档:
=============================
基本概念:
—————————–
https://docs.docker.com/get-started/#test-docker-version
安装Docker:
—————————–
https://docs.docker.com/install/
官方源地址:
—————————–
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
没有评论