Linux 学习笔记(四):Docker

预期学习目标

  • Docker基本概念
  • 配置本地Docker环境
  • 容器的生命周期与配置
  • 端口映射和容器链接
  • 利用volume保存持久化容器数据
  • 检查容器日志
  • 监控容器内部进程状态
  • 构建容器镜像
  • 镜像管理

基本信息

安装预卸载

Windows 环境需要运行 Microsoft Hyper-V

安装完成后使用 Docker Hub 账号登录,需要注意的是,使用 Docker ID 登录而不是邮箱登录,不然 run 的时候会出错

# 卸载旧版本
rpm -qa | grep docker | xargs yum -y remove

#安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 配置稳定版仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装最新版本的Docker CE和containerd
yum install docker-ce docker-ce-cli containerd.io

# 启动
systemctl start docker

# 设置开启自启
systemctl enable docker

# 运行 hello-world 验证安装结果
docker run hello-world

基本配置

编排多个容器

# 创建多容器套件并在后台运行
docker-compose up -d

# 销毁多容器套件
docker-compose down

# 列出所有容器ID
docker ps -aq

# 停止所有的容器
docker stop $(docker ps -aq)

# 删除所有停止的容器
docker container prune

# 删除所有不使用的镜像
docker image prune

编排文件格式

# 指定 Dockerfile 所在文件夹的路径
build

# 数据卷所挂载路径设置
volumes

# 指定设备映射关系
devices

# 配置容器连接的网络
networks

# 自定义 DNS 服务器
dns

# 挂载一个 tmpfs 文件系统到容器
tmpfs

# 设置环境变量
environment

# 暴露端口信息 (使用宿主端口)
ports

# 暴露端口,但不映射到宿主机,只被连接的服务访问 (仅可以指定内部端口为参数)
expose

使用远程连接

Docker 使用客户端-服务器 (C/S) 架构模式。Docker 系统有两个程序:docker 服务端和 docker 客户端。其中 docker 服务端是一个服务进程,管理着所有的容器。docker 客户端则扮演着 docker 服务端的远程控制器,可以用来控制 docker 的服务端进程。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、运行、发布你的 Docker 容器。Docker 客户端和守护进程可以运行在同一个系统上,当然你也可以使用 Docker 客户端去连接一个远程的 Docker 守护进程。Docker 客户端和守护进程之间通过 socket 或者 RESTful API 进行通信。
  • 配置远程访问(不安全)
# 编辑或创建文件
vim /etc/docker/daemon.json

# 配置
{
  "hosts":[
    "unix:///var/run/docker.sock",
    "tcp://0.0.0.0:2375"
  ]
}

# 重新读取配置文件,
systemctl daemon-reload

# 重新启动服务
systemctl restart docker

# 使用测试机器进行连接测试
docker -H tcp://35.24.113.168:2375 info
# 编辑文件
vim /usr/lib/systemd/system/docker.service

# 配置远程访问
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

# 重新读取配置文件,
systemctl daemon-reload

# 重新启动服务
systemctl restart docker

# 使用测试机器进行连接测试
docker -H tcp://35.24.113.168:2375 info

基本命令

# 查看docker的运行情况
docker ps

# 查看docker的信息
docker info

# 进入终端 : [-t | --tty] 交互式连接 : [-i | --interactive]
docker exec -it container_name /bin/bash

# 查看容器IP和容器ID
cat /etc/hosts

# 帮助命令
docker --help

# 列出所有容器
docker container ls -all

# 列出所有镜像
docker image ls -all

# 查看版本
docker --version

# 查容器编排工具的版本
docker-compose -v

# 拉取一个hello-world镜像,并创建容器并运行
docker run hello-world

错误排查

# 查看端口
netstat -ano | findstr 2375

# 探测端口
telnet 127.0.0.1 2375

# 查看端口是否被过滤
netsh interface ipv4 show excludedportrange protocol=tcp

# 禁用Hyper-V并重新启动
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

# 保留 2375 端口
netsh int ipv4 add excludedportrange protocol=tcp startport=2375 numberofports=1

# 启用Hyper-V并重新启动
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

相关文章

Linux 学习笔记(一):内网穿透
Linux 学习笔记(二):搭建个人Git服务器
Linux 学习笔记(三):Ubuntu 操作系统
Linux 学习笔记(四):Docker
Linux 学习笔记(五):Redis
Linux 学习笔记(六):Linux

相关推荐