Fork me on Gitee

docker安装及常见命令

1. docker基础知识

1.1 什么是docker


docker就是一项容器虚拟化的技术.

容器虚拟化技术:简单而言,就是把开发环境和代码一起打包做成一个容器,放在其他电脑上就可以直接运行。类似于虚拟机,把环境配好,就可以直接运行了,但是容器虚拟化和虚拟机还是有很大区别。

1.2 docker能做什么

一次构建,随处运行。

更快捷的应用交付和部署;更便捷的升级和扩缩容;更加简单的系统运维;更高效的计算机资源利用。

它解决了虚拟机存在的资源占用多,冗余步骤多和启动慢的特点,剔除掉虚拟机中模拟的硬件以及不必要的的东西都剔除了。保留了必要的内核和用户自己根据需要安装的容器,所以更加轻便。


1.3 docker三要素

镜像(image):docker镜像,image,就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建多个容器。

容器(container): docker利用容器独立运行的一个或者一组应用。容器就是镜像创建的具体实例,可以把容器看成是一个简易版的linux系统

仓库:就是存放镜像的地方


1.4 安装docker

docker要求cent os 系统的内核要高于3.10.

本次安装选择在cent os7上进行安装。

# 查看linux版本
uname -r
3.10.0-1160.el7.x86_64

卸载旧版本(如果之前安装过旧版本)

yum remove docker  docker-common docker-selinux docker-engine

添加yum依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

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

查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装docker

 yum install docker-ce

启动并加入开机自启

# 启动
systemctl start docker
# 允许开机自启
systemctl enable docker

验证是否安装成功

docker version
Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:44:50 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.10
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       e2f740d
  Built:            Mon Oct 25 07:43:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.11
  GitCommit:        5b46e404f6b9f661a205e28d59c982d3634148f8
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

⚠️ 国外镜像一般很难访问,建议配置阿里云镜像

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

1.5 阿里云镜像加速配置

阿里云镜像加速地址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

进入后里面有配置加速器信息

vi /etc/docker/daemon.json

验证配置阿里云镜像加速器成功

docker info后显示Registry Mirrors中显示有阿里云

image-20211117101540513


2. docker 镜像命令

2.1 查看本地镜像

[root@javatools ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
options 含义
-a 列出本地所有的镜像,包含中间镜像
-q 只显示镜像id
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息

2.2 查找镜像

[root@javatools ~]# docker search hello-world
NAME                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
hello-world                                Hello World! (an example of minimal Dockeriz…   1575      [OK]
参数 说明 举例
--no-trunc 显示出完整的镜像描述 docker search hello-world --no-trunc
--filter 过滤 docker search --filter=stars=30 --no-trunc hello-world

2.3 拉取镜像

# 如果不输入:tag, 其实默认是:latest
docker pull image_name: tag

image-20211117102313174

2.4 删除某个镜像

docker rmi 某个镜像名字ID

⚠️ -f 强制删除

命令 说明
docker rmi -f 镜像id 删除一个
docker rmi -f 镜像1:TAG 镜像2:TAG2 删除多个
docker rmi -f $(docker images -qa) 删除全部

3. docker 容器命令

有镜像才能创建容器。本次下载一个cent os 镜像。 docker pull cent os

3.1 新建并启动容器

docker run [options] image [command][args]
参数说明 含义
-name 容器新名字,为容器指定一个名字
-d 以后台运行容器,并返回容器id
-i 以交互式模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪输入终端,通常与-i 同时使用
-P 随机端口映射
-p 指定端口映射

比如: docker run -it centos:latest /bin/bash 后面的 /bin/bash 写不写, 都是一样的。启动成功后,终端左边会显示容器的ID

image-20211117105433255

docker run --name="centos7" -it centos 启动一个容器名为centos7

3.2 列出所有正在运行的容器

docker ps [OPTIONS]
参数说明 含义
-a 列出当前所有正在运行的容器+历史运行过的
-l 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
--no-trunc 不截断输出
docker ps -a

image-20211117110410164

3.3 退出容器

  • exit: 容器停止退出
  • ctrl+p+q: 容器不停止退出

3.4 启动容器

docker start 容器id或容器名

3.5 重启容器

docker restart 容器id或容器名

3.6 停止容器

docker stop 容器id或容器名

3.7 强制停止容器

docker kill 容器id或容器名

3.8 删除已停止的容器

docker rm 容器id

一次性删除所有容器

docker rm -f $(docker ps -a -q)

3.9 启动守护式容器

docker run -d 容器名	

docker容器后台运行,就必须要有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(top、tail), 就会自动退出。这是由于docker的机制问题。

3.10 查看容器日志

docker logs -f -t --tail 容器id
参数 说明
-t 加入时间戳
-f 跟随最新的日志打印
--tail --tail 数字 显示最后多少条

3.11 查看容器内部运行的进程

docker top 容器id

3.12 查看容器内部细节

docker inspect 容器id

3.13 进入正在运行的容器并以命令行交互

  • docker exec -it 容器ID bashShell
  • docker attach 容器ID

区别

attach 直接进入容器启动命令的终端,不会启动新的进程

exec 是在容器中打开新的终端,并且可以启动新的进程

3.14 文件拷贝

docker cp  容器ID:容器内路径 目的主机路径

4. docker卸载

# 停止服务
systemctl stop docker
# 移除docker
yum -y remove docker-ce
# 删除相关依赖包
rm -rf /var/lib/docker

5. 安装过程排错

  • 报错1错误:软件包:docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:slirp4netns >= 0.4
    错误:软件包:docker-ce-rootless-extras-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:fuse-overlayfs >= 0.7
    错误:软件包:3:docker-ce-20.10.12-3.el7.x86_64 (docker-ce-stable)需要:container-selinux >= 2:2.74
    错误:软件包:containerd.io-1.4.13-3.1.el7.x86_64 (docker-ce-stable)需要:container-selinux >= 2:2.74,您可以尝试添加 --skip-broken 选项来解决该问题。

image-20220310141248034

根据报错提示信息,可以看出是container-selinux版本低或没有安装的原因,导致系统不兼容,所以需要升级重新安装。

# 从阿里源拉取依赖
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release -y
# 安装最新的contain-selinu
yum install container-selinux -y 

再次执行docker安装命令yum install docker-ce -y,安装成功。

image-20220310141632493

参考文档

  1. Docker常用命令
posted @ 2021-11-17 11:52  shine-rainbow  阅读(1397)  评论(0编辑  收藏  举报