docker笔记1-安装与基础命令

docker的用途:

  1. 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各种环境部署。
  2. 可以将镜像(image)启动成容器(container),并提供多容器的生命周期进行管理(起、停、删)
  3. container容器之间相互隔离,且每个容器都可以设置资源限额
  4. 提供轻量化虚拟功能,容器在宿主机中就是一个个虚拟的空间,彼此相互隔离,完全独立。

docker的安装

确定centos内核版本

查看centos内核版本 内核版本不能低于3.10

**查看命令:**uname -r

基础环境配置

bash 复制代码
##配置yum源
wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

##清除yum缓存
yum clean all

##生成yum缓存    
yum makecache

##安装一些基础依赖,避免最小安装的虚拟机少一些命令不能使用(可省略)
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel

##关闭防火墙
systemctl stop firewalld

##关闭防火墙开机自启
systemctl disable firewalld

开启linux内核流量转发

bash 复制代码
##开启流量转发
cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF

##加载修改内核参数,使配置生效
sysctl -p /etc/sysctl.d/docker.conf

报错:

sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录

sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: 没有那个文件或目录

使用yum安装docker

配置yum仓库

bash 复制代码
##配置docker 的阿里云yum仓库
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo

##更新yum缓存
yum clean all && yum makecache

安装docker

查看可安装社区版本:yum list docker-ce --showduplicates |sort -r

安装docker 社区版20.10.6 版本

bash 复制代码
yum install docker-ce-20.10.6 -y

配置docker加速器

配置国内的镜像加速源,提高镜像下载速度

bash 复制代码
##创建docker配置文件目录
mkdir -p /etc/docker

##创建docker配置文件
touch /etc/docker/daemon.json

##编辑配置文件
vim /etc/docker/daemon.json

##添加阿里的加速器
{
	"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}

##加载配置文件
systemctl daemon-reload

#设置该配置开机自启
systemctl enable docker

##启动docker
systemctl restart docker

设置开机启动

看下docker启动是否正常

docker 镜像基础命令

搜索镜像

复制代码
docker search 镜像名称:版本标签(可省略)

拉取镜像

|---------------|---------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| 标题 | 命令 | 示例 |
| 拉取镜像最新版本 | docker pull <镜像名称> | 拉取最新版的 Ubuntu 镜像: docker pull ubuntu |
| 拉取特定版本(标签)的镜像 | docker pull <image-name>:<tag> | 拉取 Ubuntu 18.04 版本的镜像: docker pull ubuntu:18.0 |
| 从非官方仓库拉取镜像 | docker pull <repository>/<image-name>:<tag> | 从私有仓库 myregistry.com 拉取名为 myapp 的镜像,标签为 v1.0: docker pull myregistry.com/myapp:v1.0 需要认证的私有仓库拉取镜像,首先需要使用 docker login 命令登录:docker login <repository> |

查看本地镜像

复制代码
#命令1 - 查勘所有镜像
docker image ls
#命令2 命令1的简写
docker images 
# 命令3 -查找某个镜像
docker images 镜像名
#查找单个镜像的单个版本
docker images 镜像名:版本标签

#只查看镜像的id
docker images -q

|----------------|------------|---------------|--------------|-----------|
| REPOSITORY:仓库名 | TAG:标签(版本) | IMAGE ID:镜像id | CREATED:创建时间 | SIZE:占用空间 |

本地镜像存储目录:/var/lib/docker/image/overlay2/imagedb/content/sha256

里边存放的文件为json格式,

删除本地镜像

bash 复制代码
#根据镜像名删除
docker rmi 镜像名:版本标签

#根据镜像id删除
docker rmi 镜像名id (镜像id可是id的前三位或完整id)

#如果报以下错误,证明镜像被启动过,被容器依赖,需要先删除依赖这个镜像的容器,在删除镜像
#Error response from daemon: conflict: unable to remove repository reference "hello-world:latest" (must force) - container a3d5a322e732 is using its referenced image d2c94e258dcb

#查看运行过的容器
docker ps -a

#删除容器
docker rm 容器id

#批量删除镜像

docker rm 删除容器 docker rmi 删除镜像

查看镜像详细信息

bash 复制代码
docker image inspect 镜像名称:版本标签/镜像id

启停容器 - 查看容器进程

复制代码
#启动镜像命令
docker run 可选参数 镜像名称/镜像id 
示例:docker run -d -p 80:80 nginx
-d:后台启动
-p 80:80 端口映射,宿主机端口映射容器端口,访问宿主机的80映射到容器内的80端口 

查看容器运行进程

复制代码
docker ps

CONTAINER ID:容器id

停止容器运行

复制代码
docker stop 容器id

启动容器:

复制代码
docker start 容器id

利用docker获取不同版本系统镜像

一个完整的系统是由linux内核 + 发行版(例如:centos 、redhat、suse)才组成一个系统,利用docker容器可以获取不同的发行版镜像,然后基于该镜像运行出各种容器去使用.

复制代码
#获取发型版镜像
docker pull 镜像名称:版本号
#运行容器且进入容器内部 -i 交互式命令操作 -t开启一个终端 bash进入容器
docker run -it 镜像id bash

示例:

复制代码
#示例:
#获取centos镜像
# docker pull centos (默认最新版本)
#查看镜像id
#docker images
#运行镜像
#docker run -it e6a0117ec169 bash
#退出 exit
相关推荐
xian_wwq12 小时前
【学习笔记】多租户的 Agent 隔离设计
笔记·学习
互联网江湖12 小时前
腾讯AI的时代之问:姚顺雨是不是另一个张小龙?
笔记
深蓝海拓12 小时前
PySide6,图形按钮使用系统内置图标
笔记·python·学习·pyqt
chushiyunen12 小时前
npy文件笔记
笔记·python
eRTE XFUN12 小时前
docker下搭建redis集群
redis·docker·容器
十安_数学好题速析13 小时前
二进魔法:16人分组难题的4个月破解
笔记·学习·高考
一只小bit13 小时前
Docker 存储卷:本地文件与容器内部文件建立绑定关系
运维·docker·容器
都在酒里13 小时前
在公共服务器上构建 RK3588 SDK 的纯净 Docker 方案
运维·服务器·docker
中屹指纹浏览器13 小时前
2026浏览器多开环境深度优化:虚拟指纹一致性与风控协同优化方案
经验分享·笔记
stars-he13 小时前
基于 Design Compiler 的 UDP Payload 追加控制模块综合与门级后仿真
笔记·fpga开发·udp