Docker 是一个开源的应用容器引擎
Docker 是一个开源的应用容器引擎,让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
传统虚拟机(virtual machine)
虚拟机,就是在操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。但占用空间更大,启动更慢。
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
Linux 容器(Linux Containers,缩写为 LXC)
而容器不是模拟一个完整的操作系统,容器只需要软件工作所需的库资源和设置。容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
1、Docker 镜像(Image)就是一个只读的模板,可以看作是创建docker容器的模板。
镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
2、Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。
容器可以被创建、启动、停止、删除、暂停等。每个容器都是相互隔离的,保证安全的平台。
3、仓库(Repository)是集中存放镜像文件的场所。
一个仓库注册服务器(Registry)放着多个仓库(Repository)。每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。我 们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。
镜像:CentOS-7-x86_64-DVD-1810.iso
# 1、配置网络:(NAT模式)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=8.8.8.8
# 2、修改DNS:
vi /etc/resolv.conf
nameserver 8.8.8.8
# 3、重启网络:
systemctl restart network
# 4、测试网络:(确保可以上外网)
ping www.baidu.com
# 5、关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
# 6、设置主机名
hostnamectl set-hostname wzg
bash
# 7、更新yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
# 8、安装需要的工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 9、设置阿里源为镜像仓库地址
yum-config-manager –add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 1、删除旧版本
yum remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2、安装docker
yum install docker-ce docker-ce-cli containerd.io
# 3、查看当前版本
[root@wzg ~]# docker –version
Docker version 20.10.13, build a224086
# 4、卸载docker-ce及其依赖包
yum remove docker-ce
yum remove docker-ce-cli
yum remove docker-selinux
yum remove docker-engine-selinux
# 5、检查版本
[root@wzg ~]# docker –version
-bash: /usr/bin/docker: No such file or directory
# 6、安装指定版本的docker-ce
yum install -y docker-ce-19.03.2-3.el7 docker-ce-cli-19.03.2-3.el7 containerd.io
# 7、验证是否安装成功
[root@wzg ~]# docker –version
Docker version 19.03.2, build 6a30dfc
# 8、启动docker
systemctl start docker
# 9、查看docker服务状态
systemctl status docker
# 10、测试docker(运行hello-world镜像)
[root@wzg ~]# docker run hello-world
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:6d60b42fdd5a0aa8a718b5f2eab139868bb4fa9a03c9fe1a59ed4946317c4318
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
……
#出现上面,说明docker安装成功
# 1、执行卸载命令
yum remove docker-ce docker-ce-cli containerd.io
# 2、卸载后,主机上的镜像、容器等不会被删除,删除命令如下:
rm -rf /var/lib/docker
# 管理员必须手动删除任何已编辑的配置文件
# 1、设置Docker开机自启
systemctl enable docker
# 2、以普通用户管理docker
sudo groupadd docker
useradd wzg
sudo usermod -aG docker wzg
# 3、编辑docker.service单元配置文件
systemctl edit docker.service
# 输入以下信息:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
# 4、重新加载systemctl配置
systemctl daemon-reload
# 5、重启docker
systemctl restart docker
# 6、安装网络监测工具
yum install -y net-tools
# 7、检查Docker守护进程是否在所配置的端口上侦听
[root@wzg ~]# netstat -lntp | grep dockerd
tcp6 0 0 :::2375 :::* LISTEN 16678/dockerd
# 8、在Docker客户端命令中通过-H选项指定要连接的远程主机
[root@wzg ~]# docker -H tcp://192.168.100.100:2375 info
Client:
Debug Mode: false
Server:
Containers: 1
Running: 0
……