Docker-基础指令

发布时间:2024年01月17日

前置知识

docker官网地址:https://www.docker.com/
docker镜像地址:https://hub.docker.com/

docker安装教程:https://docs.docker.com/engine/install/centos/
安装只需要注意将仓库源改为国内就好,推荐去阿里云注册自己的账号获得加速地址:

sudo yum-config-manager \
    --add-repo \
   http://mirrors.aliyun.com/ docker-ce/linux/centos/docker-ce.repo

docker 的基本组成 :镜像,容器,仓库

Docker运行的基本流程为:
1 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
2 Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求。
3 Docker Engine执行Docker内部的一系列工作,每-项工作都是以一个Job的形式的存在。
4 Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存
5 当需要为Docker创建网络环境时,通过网络管理驱动Network driver 创建并配置Docker容器网络环境。
6 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成。
7 Libcontainer是一项独 立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

基础篇

命令

  • systemctl docker 指令
#启动docker
systemctl start docker 
#停止docker
systemctl stop docker  
#重启docker
systemctl restart docker 
#查看docker状态
systemctl status docker  
#开机自启动
systemctl enable docker  
  • docker 基础指令
docker version #查看版本
docker info #查看docker 的信息
#这两条指令是等价的
docker container ls #查看正在运行的容器
docker ps  #查看正在运行的容器
docker ps -a #列出所有的容器包含退出的容器
docker create [镜像] #创建出容器并申请资源,但是没有运行需要docker start进行执行;docker run 这个指令包含了这两步的操作
docker logs -f ${container id} | ${container} #监控日志
#优雅的退出
docker stop <container id>
#立即退出
docker kill <container id>
#和docker 内部交互 已reids为例子
docker exec -it redis | <container id> redis-cli
#直接进入docker内部
docker exec -it redis | <container id> /bin/bash 

关于docker
-i 代表使用interactive交互模式
-t 代表模拟tty功能。TTY 代表TeleTYpewriter电报打字机,代表着我们的终端。-t参数会启动终端的一些功能。

  • 镜像(images)
#搜索是否有mysql镜像
docker search mysql 
#查找用的最多的镜像top5
docker search --limit 5 mysql 
#拉取一个镜像
docker pull ubuntu:20.04
#将镜像推送到仓库
docker image push demo:2.0
#查看镜像/容器的数据卷大小
docker system df 
#列出本地所有镜像
docker images
#删除镜像ubuntu:20.04
docker image rm ubuntu:20.04 
docker rmi ubuntu:20.04
#创建某个container的镜像 参数分别容器或容器ID 版本号
docker commit redis redis:comm #images 会多一个 redis:comm
#将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar
docker save -o ubuntu_20_04.tar ubuntu:20.04
#将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来
docker load -i ubuntu_20_04.tar
#查看镜像的源信息
docker image inspect redis
#虚悬镜像
#虚悬镜像就是没有仓库和tag的镜像。
```bash
docker images ls -f dangling=true  列出虚悬镜像
docker image prune 删除虚悬镜像
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2735d51e6eef40a18dfe0a8f7d14a6d7.png)

- 容器(container)
```shell
# 创建一个镜像的容器但是并不会启动需要使用 docker start 进行后续的启动
docker  create  redis
# 查看本地的所有容器
docker ps -a
#启动容器
docker  start <container id> | name #| 表示或者写容器的名称
#停止容器
docker  stop <container id> | name
#重启容器
docker  restart <container id> | name
#创建并启动一个容器
docker  run -itd ubuntu:20.04
#删除容器
docker  rm  <container id> | name
#删除所有已停止的容器
docker container prune
# 查看容器的信息
docker inspect <container id> 
#将容器CONTAINER导出到本地文件xxx.tar.gz中
docker export -o <container id> | name
#将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag
docker import -o redis.tar.gz  redis:custom

docker export/import与docker save/load的区别:
export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
save/load会保存完整记录,体积更大

#查看某个容器内的所有进程
docker top <container id> | name 
#查看所有容器的统计信息,包括CPU、内存、存储、网络等信息
docker stats
#在本地和容器间复制文件
docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx
#将reids中的/data/dump.rdb 复制到本地
docker cp redis:/data/dump.rdb ./ 
#将demo.txt 复制到redis 目录/data中
docker cp  demo.txt  redis:/data
#重命名容器
docker rename redis newredis
#修改容器限制
docker update CONTAINER --memory 600MB
#这样就可以提交当前的容器为镜像存到镜像仓库中,相当于对原来的镜像做了拓展
docker commit -m "提交描述信息" 容器id  demo:1.0  
#过滤容器
docker ps -a -f 'exited=137'
#组合使用
docker rm $(docker ps -a -f 'exited=137');
docker stop $(docker ps -a -f 'exited=137');
文章来源:https://blog.csdn.net/qq_43259860/article/details/135624185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。