Devops之Docker安装和使用

一、前情回顾

1.Docker是什么?

Docker是一个容器化平台

2.Docker容器与传统虚拟化之间的区别?

Docker容器运行在主机上,不需要完整的操作系统

3.容器与镜像关系?

镜像是容器的只读模版,镜像是模版,容器是实例

4.docker拉取镜像的常用指令

docker pull

二、Docker安装

二进制安装

压缩包内容详解(这里22.04版本为示例进行安装)

Contarinerd (容器运行时核心)、dockerd (docker守护进程)、docker(客户端命令)、runc底层容器运行工具

解压tar包----> 添加docker用户和用户组---->放入/etc/profile目录

docker vesion查看docker环境变量信息

验证启动的容器

复制代码
Client:
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:30:51 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine(引擎):
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:32:17 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd(管理容器的生命周期):
  Version:          v1.7.3
  GitCommit:        7880925980b188f4c97b462f709d0db8e8962aff
 runc(基于OCI标准实现):
  Version:          1.1.9
  GitCommit:        v1.1.9-0-gccaecfc
 docker-init(docker初始化,防止僵尸进程):
  Version:          0.19.0
  GitCommit:        de40ad0

Systemctl 安装Docker

这里版本针对于26版本以上,并且可以指定/usr/local/docker目录到/usr/bin/docker

注意: 链接形式必须是如下截图(需要将/usr/local/docker/文件转移到/usr/bin/下)

复制代码
sudo vi /usr/lib/systemd/system/docker.service


[Unit]
Description=Docker server daemon
Documentation=man:docker(8) man:sshd_config(5)
After=network.target docker-keygen.target
Wants=docker-keygen.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
 
[Install]
WantedBy=multi-user.target

检查sock中daemon文件启动情况

复制代码
[root@localhost system]# ps -ef | grep dockerd | grep -v grep
root        2998    2046  0 22:54 pts/1    00:00:00 /usr/local/docker/dockerd


[root@localhost system]# netstat -lnp | grep docker.sock
unix  2      [ ACC ]     STREAM     LISTENING     33369    2998/dockerd         /var/run/docker.sock
[root@localhost system]# 

YUM源安装Docker

安装docke-ce docker源使用Yum一键安装

复制代码
wget -O /etc/yum.repos.d/docker-ce.repo 
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

yum makecache    # 更新 YUM 缓存(使新配置生效)   
yum install -y docker-ce docker-ce-cli containerd.io  # 安装 Docker   
systemctl start docker   # 启动 Docker 服务   
systemctl enable docker  # 设置开机自启

三、Docker基础命令

镜像管理

1.基础操作

复制代码
docker --version  # 查看docker版本信息

docker info       # 交互相关信息

2.镜像管理

复制代码
1.docker pull  # 拉取镜像
2.docker images # 列出镜像
3.docker rmi    # 删除镜像
备注:
<none>       <none>    557466b563c2   5 days ago   412MB
如果删除镜像后(通过名称删除会出现上面问题,这个问题也叫空镜像)
docker image -f dangling=true -q # 用于过滤没有标签(<none>  <none> )的镜像
# 清理空镜像
docker rmi $(docker images -f dangling=true -q)    ## docker images -f dangling=true -q 获取空镜像的id
docker rmi <镜像id>
4. docker search nginx # 搜索镜像
5.docker build # 构建镜像
  1. 查看正在运行的容器

    [root@localhost system]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  2. 查看所有容器(包括停止的容器)

    [root@localhost docker]# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

5.拉取镜像 需修改daemon.json文件

使用 之前关闭docker进程 或systmctl docker reload

复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.mybacc.com",
    "https://dytt.online",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.yomansunter.com",
    "https://aicarbon.xyz",
    "https://666860.xyz",
    "https://docker.zhai.cm",
    "https://a.ussh.net",
    "https://hub.littlediary.cn",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

针对docker速度问题吧可以修改/etc/resolv.conf 提高速度

由于dokcer search 查询到的是公有仓库的镜像,而我们docker search 查看的是本地私有镜像,所以docker search 查询不到本地镜像。

若出现容器被占用情况,可以先停止容器,然后再删除镜像

复制代码
#停止容器
docker stop containerd-id

# 删除镜像
docker rmi -f containerd-id

# 一次性删除未使用镜像
docker image prune -a

容器管理

前后台运行容器

复制代码
# 前台运行
[root@localhost docker]# docker run --name my-nginx -p 80:80 nginx:latest


# 后台运行
[root@localhost docker]# docker run -d --name my-nginx2 -p 80:80 nginx:latest


# 查看容器状态
docker ps -a | grep "my-nginx"

# 彻底删除容器
docker stop my-nginx && docker rm my-nginx

查看容器的状态

复制代码
#1. 查看所有容器状态
docker ps -a

#2. 进入容器
docker exec

#3. 删除容器
docker rm 

#4. 查看日志
docker logs

#5. 删除容器
docker rm

#6. 查看日志
docker logs

#7. 资源监控
docker status

Exited 为退出,UP状态为正在启用

相关推荐
码界奇点2 小时前
基于Django与Zabbix集成的运维故障管理系统设计与实现
运维·django·毕业设计·zabbix·源代码管理
longxibo2 小时前
Ubuntu datasophon1.2.1 二开之二:解决三大监控组件安装后,启动失败:报缺失common.sh
大数据·linux·运维·ubuntu
小尧嵌入式2 小时前
Linux的shell命令
linux·运维·服务器·数据库·c++·windows·算法
码界奇点2 小时前
基于Django与Ansible的自动化运维管理系统设计与实现
运维·python·django·毕业设计·ansible·源代码管理
OnlyEasyCode2 小时前
.net程序部署Linux运行
linux·运维·服务器
kobe_OKOK_2 小时前
在 Ubuntu Server 24.04 (Noble)** 上安装 **SQL Server 驱动程序
linux·运维·ubuntu
haiyanglideshi2 小时前
ubuntu上使用samba访问另一台ubuntu的数据
linux·运维·ubuntu
Lethehong2 小时前
RAG-全链路问答系统:从零到容器化部署的终极指南
docker·云原生·cnb
机灵猫3 小时前
OpenFeign 声明式客户端的动态代理与 LoadBalancer 负载均衡策略
运维·负载均衡