一、环境准备

Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包。

  1. CentOS环境

Docker安装到CentOS上:

  • 建议安装在CentOS7.x以上的版本,内核版本高于 3.10。通过命令查看当前 CentOS 版本,如版本不符,需升级系统版本。
  • 在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。
    1. uname -r
    2. cat /proc/version
  1. Yum环境

    1. yum -y install yum-utils
    1. yum -y update

    yum执行命令可能会出现: Error: rpmdb open failed
    解决方案:https://www.yuque.com/metacode/dico73/iv3td6

    1. yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    1. yum install -y yum-utils device-mapper-persistent-data lvm2

    新机器CentOS8系统会出现:
    Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/CentOS-Linux-epel.repo; Configuration: OptionBinding with id “failovermethod” does not exist
    原因:
    CentOS官方已计划停止维护CentOS Linux项目(即2022年1月1日起CentOS官方将不再对CentOS 8提供服务支持;CentOS 7也将在2024年6月30日停止技术服务支持),详情见CentOS官方公告
    解决:
    更换到CentOS7系统,或切换源

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

    二、安装 docker

    1. yum install docker-ce docker-ce-cli containerd.io
    1. systemctl start docker
    1. systemctl enable docker
    1. systemctl stop docker
    1. docker -v

    输出类似信息表示安装成功:
    image.png

    三、配置 docker

  2. 设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,早在ubuntu 5.04版本的时候就已经在使用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
Ustc使用帮助:https://lug.ustc.edu.cn/wiki/mirrors/help/docker

  1. # 编辑该文件:
  2. vi /etc/docker/daemon.json
  3. # 在该文件中输入如下内容:
  4. { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

四、常用命令

systemctl命令是系统服务管理器指令

1. docker 相关命令

1.1 启动docker

  1. systemctl start docker

1.2 停止docker

  1. systemctl stop docker

1.3 重启docker

  1. systemctl restart docker

1.4 查看docker状态

  1. systemctl status docker

1.5 开机启动docker

  1. systemctl enable docker

1.6 查看docker概要信息

  1. docker info

1.7 查看docker帮助文档

  1. docker --help

2. 镜像相关命令

2.1 查看镜像

  1. docker images
  2. REPOSITORY:镜像名称
  3. TAG:镜像标签
  4. IMAGE ID:镜像ID
  5. CREATED:镜像的创建日期(不是获取该镜像的日期)
  6. SIZE:镜像大小
  7. 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

2.2 搜索镜像

  1. docker search 镜像名称
  2. NAME:仓库名称
  3. DESCRIPTION:镜像描述
  4. STARS:用户评价,反应一个镜像的受欢迎程度
  5. OFFICIAL:是否官方
  6. AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

2.3 拉取镜像

  1. docker pull 镜像名称

2.4 删除镜像

  1. # 按镜像ID删除镜像
  2. docker rmi 镜像ID
  3. # 删除所有镜像
  4. docker rmi `docker images -q`

3. 容器相关命令

3.1 容器创建

  • 创建启动容器命令:docker run
  • 容器创建两种方式:

    • 交互式方式

      1. docker run -it --name=自定义容器名称 镜像名称:标签 /bin/bash
    • 守护式方式

      1. docker run -di --name=自定义容器名称 镜像名称:标签
  • 附带参数解释:

    • -i:表示运行容器
    • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    • –name :为创建的容器命名。
    • -v:表示目录映射关系(前者是宿主机目录,后者是映射到容器目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

image.png
例如:
docker run -di —name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc@123 -d mysql:5.7

  1. docker exec -it 容器名称 (或者容器ID) /bin/bash
  1. exit

3.2 容器查看

  1. #查看正在运行的容器
  2. docker ps
  3. #查看所有容器
  4. docker ps a
  5. #查看最后一次运行的容器
  6. docker ps l
  7. #查看停止的容器
  8. docker ps -f status=exited

3.3 容器停止与启动

  1. #停止容器:
  2. docker stop 容器名称(或容器ID
  3. #启动容器:
  4. docker start 容器名称(或容器ID

3.4 文件拷贝

  1. docker cp 需要拷贝的文件或目录 容器名称:容器目录
  1. docker cp 容器名称:容器目录 需要拷贝的文件或目录

3.5 目录挂载

在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

  1. docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

如果共享的是多级的目录,可能会出现权限不足的提示。这是因为CentOS7中的安全模块selinux把权限禁掉了,通过添加参数 –privileged=true 来解决挂载的目录没有权限的问题

3.5 查看容器IP地址

  1. docker inspect 容器名称(容器ID
  1. docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID

3.6 删除容器

  1. docker rm 容器名称(容器ID

3.7 docker中使用VIM

  1. #进入容器
  2. docker exec -it (容器Id) /bin/bash
  3. apt-get update
  4. apt-get install vim