docker介绍
Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤“沙 盒”机制,容器之间不会存在任何接口。
Docker 通过 Linux Container(容器)技术将任意类型的应⽤进⾏包 装,变成⼀种轻量级、标准化、可移植、⾃管理的组件。在包装应 ⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以将 这种“包”移植到任意环境去运⾏,省去兼容性的问题。
安装docker环境
# cat << EOF | tee /etc/modulesload.d/k8s.conf
# modprobe overlay # 加载overlay内核模块
# modprobe br_netfilter # 加载br_netfilter内核模块
# cat << EOF | tee/etc/sysctl.d/k8s.conf
# sysctl --system
# yum install -y yum-utils devicemapper-persistent-data lvm2
# yum-config-manager --add-repo
https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
# 添加阿⾥云yum源
# yum install docker-ce docker-ce-cli
containerd.io docker-buildx-plugin docker-composeplugin -y --allowerasing
# 安装docker,allowerasing:允许卸载旧版本
配置docker镜像站
#配置变量
#/etc/modules-load/k8s.conf
# vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
先启动服务,再看一眼centos
#systemctl start docker.service
#docker images
#第一次创建容器
[root@docker ~]# docker run -i -t --name=c1 centos:latest /bin/bash
[root@effd480552d9 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@effd480552d9 /]# cd /etc/yum.repos.d/
[root@effd480552d9 yum.repos.d]# ls
CentOS-Linux-AppStream.repo
CentOS-Linux-BaseOS.repo
CentOS-Linux-ContinuousRelease.repo
CentOS-Linux-Debuginfo.repo
CentOS-Linux-Devel.repo
CentOS-Linux-Extras.repo
CentOS-Linux-FastTrack.repo
CentOS-Linux-HighAvailability.repo
CentOS-Linux-Media.repo
CentOS-Linux-Plus.repo
CentOS-Linux-PowerTools.repo
CentOS-Linux-Sources.repo
[root@effd480552d9 yum.repos.d]# cd
[root@effd480552d9 ~]# ifconfig
bash: ifconfig: command not found
#配置阿里云yum仓库
[root@effd480552d9 ~]# rm -rf /etc/yum.repos.d/*
#下载镜像
[root@effd480552d9 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --100 2495 100 2495 0 0 4221 0 --:--:-- --:--:-- --:--:-- 4228
[root@effd480552d9 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo
#清除缓存
[root@effd480552d9 ~]# yum clean all
Failed to set locale, defaulting to C.UTF-8
0 files removed
#建立缓存
[root@effd480552d9 ~]# yum makecache
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors. 268 kB/s | 4.6 MB 00:17
CentOS-8.5.2111 - Extras - mirror 1.9 kB/s | 10 kB 00:05
CentOS-8.5.2111 - AppStream - mir 180 kB/s | 8.4 MB 00:48
Metadata cache created.
#下载httpd及net-tools
[root@effd480552d9 ~]# yum -y install httpd
[root@effd480552d9 ~]# yum -y install net-tools
[root@effd480552d9 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 11955 bytes 17197230 (16.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8428 bytes 462523 (451.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#进程
[root@effd480552d9 ~]# ps
PID TTY TIME CMD
1 pts/0 00:00:00 bash
74 pts/0 00:00:00 ps
#查时间
[root@effd480552d9 ~]# uptime
06:52:13 up 4:13, 0 users, load average: 0.01, 0.03, 0.05
#当前目录
[root@effd480552d9 ~]# pwd
/root
#版本
[root@effd480552d9 ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
#写入内容并访问测试
[root@effd480552d9 ~]# echo "docker_httpd_derver" > /var/www/html/index.html
#启动失败
[root@effd480552d9 ~]# systemctl start httpd
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
#手动启动才成功
[root@effd480552d9 ~]# httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
#访问,在宿主机上访问也可以,但无法在物理机上访问,也无法ping到这个主机
[root@effd480552d9 ~]# curl localhost
docker_httpd_derver
[root@effd480552d9 ~]# curl http://localhost:80
docker_httpd_derver
#退出
[root@effd480552d9 ~]# exit
exit
#如果没有指令正在执行,容器就会停止
#重新启动容器
docker start c1
c1
#将c1的终端附加到当前的终端
docker attach c1
#此时httpd服务又停了,如果希望退出之后服务继续运行,
#crtl+ p + q
--查看状态
#查看sock套接字
ls -l /var/run/docker.sock
#要允许远程连接,需要有一个服务,使用端口体现
netstat -lnput|grep 2375
--设置允许远程管理
停用docker.service服务
#修改/usr/lib/systemd/system/docker.service
#删除13行dockerd之后的内容
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
#修改daemon.json文件
[root@docker ~]# vim /etc/docker/daemon.json
......
"hosts":[
"tcp://0.0.0.0:2375",
"unix:///var/run/docker.sock"
]
}
#加载daemon.json
[root@docker ~]# systemctl daemon-reload
#启动服务
[root@docker ~]# systemctl start docker.service
#查看状态
[root@docker ~]# netstat -lnput|grep 2375
tcp6 0 0 :::2375 :::* LISTEN 7287/dockerd
#此时,通过 ls -lh /var/run/可以看出,docker.sock时间已经发生变化
#远程管理
[root@docker ~]# docker -H 192.168.1.20 images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 2 years ago 231MB