Docker基本管理

目录

查看docker信息

Docker镜像操作

Docker挂载阿里云加速器

1.阿里云官网获取加速器地址

2.在服务器上挂载加速器

3.重启docker服务

搜索,下载镜像

查看镜像信息

本地的镜像添加新的标签

删除镜像

如何将镜像传送给其他主机的docker?

镜像导出成文件

镜像文件导入镜像库

上传镜像

创建阿里云个人镜像仓库(免费)

设置registry密码

创建命名空间和镜像仓库

​编辑创建完毕

上传阿里云仓库

Docker容器操作

创建容器

查看容器的运行状态

启动容器

停止容器

删除容器

[命令docker run](#命令docker run)

[docker run的启动过程](#docker run的启动过程)

创建并启动容器

进入容器

将本地文件复制到容器中

从容器复制文件到本地主机

查看容器日志

如何将镜像传送给其他主机的docker?

导出容器

导入容器


查看docker信息

docker version                #查看docker版本

docker info                   #查看docker详细信息
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0						# 容器数量
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 1							# 镜像数量
 Server Version: 20.10.3			# server 版本
 Storage Driver: overlay2			# docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs			# 宿主机上的底层文件系统
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs			# Cgroups 驱动
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-693.el7.x86_64		# 宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 976.3MiB
 Name: localhost.localdomain
 ID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDT
 Docker Root Dir: /var/lib/docker			# docker 数据存储目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/		# registry 地址
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:							# 加速站点
  https://6ijb8ubo.mirror.aliyuncs.com/
 Live Restore Enabled: false

Docker镜像操作

Docker挂载阿里云加速器

  • 防止docker拉取镜像失败:download failed after attempts=6: dial tcp 104.18.125.25:443: i/o timeout

1.阿里云官网获取加速器地址

每个阿里云账号都会生成一个加速器

2.在服务器上挂载加速器

cd /etc/docker/                                    #切换目录

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速器地址"]
 }
EOF                                               #使用加速器

3.重启docker服务

systemctl restart docker.service

搜索,下载镜像

docker search 关键字                              #根据仓库或镜像的关键字搜索镜像
      
docker pull 仓库名/镜像名:标签              
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

查看镜像信息

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。
 
#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json
 

docker images [-q]                    #查看下载到本地的所有镜像 #-q 表示仅显示镜像ID
docker inspect 镜像ID号                #根据镜像的唯一标识 ID 号,获取镜像详细信息
  • lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
  • upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这层
  • MergedDir是表现层,是容器的挂载点

本地的镜像添加新的标签

docker tag 名称:旧标签  新名称:新标签          #添加新的标签但ID号不会变

删除镜像

docker rmi 镜像名或镜像ID [-f]                    #删除镜像
                         -f                     #强制删除

#快速删除所有镜像
docker rmi $(docker images -q)
 
docker rmi nginx:1.18
docker rmi 50fe74b50e0d
docker rmi 605c77e624dd -f

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
docker rmi nginx:web

如何将镜像传送给其他主机的docker?

镜像导出成文件

有镜像主机操作

docker save -o 存储文件名 存储的镜像          #将镜像导出成文件
scp /opt/nginx-1.20.tar 20.0.0.70:/opt     #传输文件给另一台主机

镜像文件导入镜像库

无镜像主机操作

#将镜像文件导入镜像库
docker load < 存出的文件
docker load -i 存出的文件

上传镜像

  • 默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com

  • 可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录

  • 在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传

    docker login #输入用户名及密码
    docker tag nginx:1.20 别名 #添加别名
    docker push 别名 #上传即可

官网账户稍有问题,改上传阿里云

创建阿里云个人镜像仓库(免费)

设置registry密码

创建命名空间和镜像仓库

创建完毕

上传阿里云仓库

docker login --username=aliyun6346886006 registry.cn-hangzhou.aliyuncs.com   
#登录阿里云,输入密码

docker tag nginx:latest registry.cn-hangzhou.aliyuncs.com/xy101-jlh/nginx:1.20       
#设置别名

docker push registry.cn-hangzhou.aliyuncs.com/xy101-jlh/nginx:1.20           
#上传镜像

Docker容器操作

创建容器

  • 容器创建:就是将镜像加载到容器的过程。

  • 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

    docker create [选项] 镜像名:标签 [容器启动命令] #创建容器

    常用选项:
    -i:让容器开启标准输入接受用户输入命令
    -t:让Docker分配一个伪终端tty
    -it :合起来实现和容器交互的作用,运行一个交互式会话shell
    --name : 指定容器名

    例:docker create -it nginx:latest /bin/bash

查看容器的运行状态

docker ps -a	            #-a选项可以显示所有的容器
docker ps -a -q              #查看容器id号
docker inspect 容器名/容器id  #查看容器详细信息

启动容器

docker start 容器的ID/名称
docker ps -a    #查看所有容器
docker ps       #查看正在运行的容器

停止容器

docker stop 容器的ID/名称 [-t 等待时间]   #停止容器,发送SIGTERM信号,默认等待10d 
docker kill 容器的ID/名称      #强制退出容器,默认发送SIGKILL信号

删除容器

docker rm [-f] 容器ID/名称   #删除已经停止的容器  [-f]选项强制删除
#若想删除正在 运行的容器,必须先暂停该容器的启动状态,在进行删除或使用-f选项,否则无法删除

docker rm $(docker ps -a -q)          #批量清理后台停止的容器    
docker rm $(docker ps -a -q) -f       #批量清理后台所有容器

命令docker run

docker run的启动过程

  1. 检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器
  2. 在只读的镜像层上再挂载一层可读可写的容器层
  3. 从docker网桥给容器分配一个虚拟接口和IP地址
  4. 使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止

创建并启动容器

  • 等同于先执行docker create命令,再执行docker start命令

  • 当运行一个容器时,镜像不存在会先自动创建镜像,然后再创建容器并启动容器

    docker run -d [-i -t] [--name 容器名] 镜像名:标签 [容器启动命令] #创建并启动容器
    -P #使用随机的宿主机端口映射容器端口(从32768开始)
    -p 宿主机端口:容器端口 #使用指定的宿主机端口映射容器端口

同时也会在本地为这个容器创建一个IP

进入 容器

需要进入容器进行命令操作时,可以使用docker exec命令进入运行着的容器

docker exec -it 容器ID/名称 容器启动命令
            -i 选项表示让容器的输入保持打开;
            -t 选项表示让Docker分配一个伪终端。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
例
   #进入容器前,确保容器正在运行
   docker exec -it c3 /bin/sh
   ls
   exit				#退出容器后,容器仍在运行

将本地文件复制到容器中

docker cp 宿主机文件路径  容器名或容器ID:绝对路径                      #复制宿主机文件到容器中

从容器复制文件到本地主机

docker cp 容器名或容器ID:绝对路径  宿主机文件路径                      #复制容器文件到宿主机中

查看容器日志

docker logs 容器名/容器id    #查看容器中PID=1的主进程的日志

如何将镜像传送给其他主机的docker?

导出容器

有容器主机操作

docker export 容器名/id > 保存目录/文件名
docker export -o 保存目录/文件名 容器id/容器名

导入容器

无容器主机操作

#镜像是创建容器的根本,因此只能先将容器文件导出为镜像,再有镜像创建、启动容器,才能导入容器
docker import 容器文件 -- 名称:标签
cat 容器文件 | docker import - 镜像名:标签     #将容器模板文件导入成镜像
相关推荐
杨充4 分钟前
13.观察者模式设计思想
java·redis·观察者模式
Lizhihao_7 分钟前
JAVA-队列
java·开发语言
喵叔哟16 分钟前
重构代码之移动字段
java·数据库·重构
喵叔哟16 分钟前
重构代码之取消临时字段
java·前端·重构
fa_lsyk18 分钟前
maven环境搭建
java·maven
Daniel 大东38 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
wind瑞44 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen44 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
马剑威(威哥爱编程)1 小时前
读写锁分离设计模式详解
java·设计模式·java-ee
鸽鸽程序猿1 小时前
【算法】【优选算法】前缀和(上)
java·算法·前缀和