【yum指令安装docker和离线安装docker及基础指令】
docker基础学习篇
构建,分享,运行
1、容器类似轻量级的VM
2、共享操作系统的内核
3、容器拥有自己的文件系统、CPU、内存、进程空间等
4、互相隔离
优点:轻量,快速,隔离,跨平台,高密度
一、安装docker
本次安装系统Centos7
官方: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/
清华:https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/BaseOS/x86_64/iso/
阿里云:https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/iso/
准备一台centos 7虚拟机
1、Docker 要求 CentOS 系统的内核版本高于 3.10
通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove -y docker*
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动
依赖的
yum install -y yum-utils
5、设置yum源,并更新 yum 的包索引
#设置下载Docker的镜像源,如果不设置下载速度慢, 安装失败
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker
yum install -y docker-ce-3:26.1.4-1.el7.x86_64 #这是指定版本安装
docker version #查看安装版本
8、启动并加入开机启动
systemctl start docker
systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
注意:一般需要配置docker镜像加速器
我们可以借助阿里云的镜像加速器,登录阿里云(https://cr.console.aliyun.com/#/accelerator)
可以看到镜像加速地址如下图:
cd /etc/docker
查看有没有 daemon.json。这是docker默认的配置文件。
如果没有新建,如果有,则修改。
vim daemon.json
{
"registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"]
}
保存退出。
重启docker服务
systemctl daemon-reload
systemctl restart docker
10、卸载docker
yum remove -y docker*
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
二、手动安装Docker
1、Docker包链接
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
#1将下载好的rpm包放入服务器内,地址随便,指令
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-26.1.4-1.el7.x86_64.rpm
#2或者先把rpm包先下载好
2、安装
rpm -ivh docker-ce-cli-26.1.4-1.el7.x86_64.rpm 安装nginx,此命令不行执行下面这条
rpm -ivh docker-ce-cli-26.1.4-1.el7.x86_64.rpm --nodeps --force
3、提示需要的依赖包,下载安装就好
docker-buildx-plugin
docker-compose-plugin
错误:依赖检测失败:
docker-buildx-plugin 被 docker-ce-cli-1:26.1.4-1.el7.x86_64 需要
docker-compose-plugin 被 docker-ce-cli-1:26.1.4-1.el7.x86_64 需要
4、启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
三、搭建镜像仓库
1、导入导出镜像
1)下载镜像
docker pull nginx
2)导出镜像,以nginx举例
docker save b52e0b094bc0 > nginx.tar
docker rmi nginx 删除镜像
docker rmi $(docker images -q) #删除所有镜
3)导入镜像
#导入
docker load < nginx.tar
#更改名字
docker tag b52e0b094bc0 nginx:latest
2、搭建镜像仓库
1)下载启动镜像仓库
p 用于端口映射,将主机的端口与容器的端口绑定。
5000:5000 表示将主机的 5000 端口映射到容器的 5000 端口
#下载镜像仓库
docker pull registry
#启动镜像仓库
docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
2)举例:将nginx传到镜像仓库,done
Docker 默认不允许直接推送镜像到非 HTTPS 的 Registry(如 127.0.0.1:5000)。因此,需要先将镜像标记为指向你的 Registry
#更名标记镜像,以便我们指定传的哪个
docker tag nginx:latest 127.0.0.1:5000/nginx:latest
#推送镜像
docker push 127.0.0.1:5000/nginx:latest
#验证推送是否成功
curl 127.0.0.1:5000/v2/_catalog
四、docker常用命令
1.1常用命令
1)查看版本信息: docker version
2)查看docker信息 : docker info
3)拉取镜像 : docker pull nginx
4)查看容器进程信息: docker top 3a4084aa5b71/容器名
5)文件拷贝:docker cp
#进入容器目录
docker exec -it 3a4084aa5b71 sh
exut #退出容器目录
#拷贝一个test.txt文件到3a4084aa5b71 容器
docker cp test.txt 3a4084aa5b71:/
1.2常用命令
1)查看容器日志命令 docker logs
docker logs 3a4084aa5b71
#实时观看数据
docker logs -f 3a4084aa5b71
#查看容器的以原数据
docker inspect 3a4084aa5b71
2)使用 exec进入 docker内部,退出时不会关闭容器
#进入容器内部
docker exec -it 3a4084aa5b71 sh
3)docker inspect 获取容器的信息
docker inspect 3a4084aa5b71
4)/bin/echo 不进入容器内,只是echo个信息
#不进入docker内部
docker exec -it 3a4084aa5b71 top
#
docker exec -it 3a4084aa5b71 ps -ed
#查看容器内所有进程的详细信息,适合调试或监控容器运行状态
docker exec -it 3a4084aa5b71 ps -ef
#
docker exec -it 3a4084aa5b71 ip a
5)查看所有容器 :docker ps -a
只看运行的容器:docker ps
1.3常用命令
1)docker runlike 查看docker容器的启动参数
#需要先安装 pip(Python 包管理工具)
yum install -y python3-pip
#pip 安装 runlike
pip3 install runlike
#
2)docker rm -f (强制删除所有容器–)除了正在运行的容器
#正在运行的容器无法删除
docker rm d6ce906bf872
#删除正在运行的容器
docker rm -f d6ce906bf872
3)docker 停止、启动、杀死一个容器
#停止
docker stop d7308b8b6a8c
#启动
docker start d7308b8b6a8c
#杀死
docker kill d7308b8b6a8c
#查看正在运行的容器
docker pa
4)docker stats显示容器使用的系统资源
#查看资源使用率cpu、内存
docker stats d7308b8b6a8c
5)查看容器的占用资源信息
Images:镜像资源数量
Containers:容器数量
6)docker images 查看镜像资源
#其中127.0.0.1:5000/nginx在搭建的私有服务里
127.0.0.1:5000/nginx latest b52e0b094bc0 4 weeks ago 192MB
#这是在docker服务里
nginx latest b52e0b094bc0 4 weeks ago 192MB
1.4常用命令(docker commit、docker rmi)
1)docker commit命令
是 用于将容器的当前状态保存为一个新的镜像。这个命令通常用于在容器中进行了一些修改(例如安装了软件、修改了配置文件等)后,将这些更改保存为一个新的镜像,以便后续使用或分享
-a:提交的镜像作者
-c:使用dockerfile指令来创建镜像
-m:提交时的说明文字
-p:在commit时,将容器暂停
操作示例:
#命名mzh,说明文字nginxtest,镜像名nginxabc,版本1.0
docker commit -a "mzh" -m "nginxtest" d7308b8b6a8c nginxabc:1.0
#将新保存的镜像拷贝到 /docker/dockerfile/目录下
cd /docker/dockerfile/
docker save 726535e4e078 > nginxtest.tar
2)docker删除镜像
#单个删除
docker rm
docker rmi
#批量删除,删除当前没有运行的镜像,正在运行的会拒绝删除
for i in `docker images -q` ; do docker rmi $i; done;
#有镜像正在被容器使用,强制删除,可以添加 -f
for i in `docker images -q`; do docker rmi -f $i; done
五、自定义构建 Docker 基础镜像(dockerfile)
1、构建镜像
#编辑
vim dockerfile
#将以下内容复制到dockerfile中
# 使用 CentOS 7.9 作为基础镜像
FROM centos:7.9.2009
# 更换为阿里云镜像源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &&
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &&
yum clean all &&
yum makecache
RUN yum install -y epel-release && yum install -y nginx
#测试将主机上的文件复制到镜像中
ADD test.txt /home
RUN echo 123456 > /home/test.txt
#暴露端口
EXPOSE 7899
ENV abc=123
# 设置容器启动时运行的命令
CMD ["top","-b"]
2、构建并运行容器
#构建
docker build -t mzh-1 .
#查看镜像
docker images
#启动
docker run -d --name dockergoujian-1 mzh-1
#查看容器运行
docker ps
3、启动nginx
#进入容器
docker exec -it 6510e8548bc7 sh
#验证nginx是否配置成功
nginx -t
#查看nginx是否启动
ps -ef | grep nginx
#启动 Nginx
nginx 或者 nginx -c /etc/nginx/nginx.conf 指定Nginx 配置文件的路径
#查看启动状态
ps -ef | grep nginx