Docker 小记

Docker安装

移除 docker

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 安装docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  

根据网络环境国内仓库/国外仓库二选一,安装docker,设置开机启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# docker 官方仓库
#  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache
  
# 安装 docker 及相关组件,这些组件按需选择。
sudo yum install -y docker-ce

 mkdir -p /etc/docker
 echo '{
          "registry-mirrors": ["https://kj2sj2l6.mirror.aliyuncs.com"]
        }' >> /etc/docker/daemon.json

sudo systemctl enable docker
sudo systemctl start docker

其他

Docker运行CentOS并远程连接

  1. 拉取镜像并创建容器

    可以创建并运行一个CentOS 7容器。为了远程连接,你需要映射容器的SSH端口(默认为22)到宿主机的某个端口上。例如,将宿主机的端口5022映射到容器的SSH端口22:

    1
    2
    3
    
    docker pull centos:7  # 拉取CentOS 7镜像
    
    docker run -itd --name mycentos -p 5022:22 --privileged=true centos:7 /usr/sbin/init

    注意–privileged=true参数,它给予容器更多的权限,以便它可以启动SSH服务等。/usr/sbin/init作为启动命令可以确保容器在SSH服务启动时有正确的初始化过程。

  2. 进入容器并进行配置

    容器创建成功后,进入容器进行配置。使用以下命令进入容器:

    1
    
    docker exec -it mycentos /bin/bash
  3. 安装并配置SSH服务

    在容器内部,需要安装SSH服务并进行配置。首先,安装SSH服务和其他必要的工具:

    1
    
    yum install -y openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip initscripts net-tools

    然后,启动SSH服务,设置SSH服务开机自启动,并设置root密码(或者创建新的用户并设置密码):

    1
    2
    3
    
    systemctl start sshd
    systemctl enable sshd
    passwd root
  4. 配置SSH访问

    可能还需要编辑SSH的配置文件/etc/ssh/sshd_config,以允许root用户登录(如果默认配置不允许的话)。找到PermitRootLogin这一行,将其值设置为yes。

注意事项

  • 确保宿主机的5022端口没有被防火墙或其他安全软件阻止。
  • 对于生产环境,不建议使用root用户进行远程连接,而是应该创建具有适当权限的用户。
  • 映射的端口(在本例中是5022)可以根据你的需要进行更改,但请确保它没有被其他服务占用。
  • --privileged=true 参数给予了容器过多的权限,可能会带来安全风险。在生产环境中,应谨慎使用,并尽量使用更细粒度的权限控制。

Dockerfile CentOS镜像

使用 Dockfile 构建centos7镜像,安装常用工具并支持ssh连接。

创建文件eddie_centos_dockerfile,内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
FROM centos:7
LABEL Author=Eddie Version=7 Comment="Hello, My CentOS."
RUN yum install -y sudo openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel \
        zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 \
        libstdc++.i686 lsof unzip zip initscripts net-tools \
        && ssh-keygen -A \
        && echo 'root:root' | chpasswd \
        && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
        && echo "#!/bin/bash" > /etc/init.d/eddie_init.sh \
        && echo "/usr/sbin/sshd" >> /etc/init.d/eddie_init.sh \
        && echo "/bin/bash" >> /etc/init.d/eddie_init.sh \
        && chmod +x /etc/init.d/eddie_init.sh

WORKDIR /root
EXPOSE 22
CMD ["/etc/init.d/eddie_init.sh"]

运行容器,使用ssh工具连接宿主机绑定的端口:

1
docker run -id --name e1 -p 8023:22 eddie/centos:7

Docker 关键组件说明

这些组件为Docker用户提供了强大的工具集,用于构建、运行和管理容器化应用程序。

  1. Docker CE(Docker Community Edition)

    • Docker CE 是 Docker 的社区版,由 Docker 社区维护和提供技术支持。这是一个免费的版本,适合个人开发人员和小团队使用。
    • 它包含了 Docker 引擎、Docker 客户端(CLI)以及其他必要的组件,用于构建、发布和运行容器化应用。
  2. docker-ce-cli(Docker CE Command Line Interface)

    • docker-ce-cli 是 Docker CE 的命令行客户端工具,允许用户通过命令行界面与 Docker 守护程序进行交互。
    • 使用 docker 命令,用户可以构建、运行、停止、删除容器,以及管理 Docker 镜像、网络、卷等。
  3. containerd.io

    • containerd.io 是一个容器运行时组件,负责容器的生命周期管理,包括容器的创建、销毁和运行等操作。
    • 它提供了镜像管理和容器执行的功能,是 Docker 引擎的核心组件之一。containerd.io 的设计注重稳定性和可扩展性。
  4. docker-buildx-plugin

    • docker-buildx-plugin 是 Docker 的一个插件,用于构建多平台的容器镜像。
    • 它可以在一个构建过程中同时构建多个不同平台的镜像,如 x86、ARM 等,方便为不同平台的设备提供适配的容器镜像。
  5. docker-compose-plugin

    • docker-compose-plugin 是 Docker 的另一个插件,用于管理和编排多个容器的运行。
    • 它允许用户通过一个单独的配置文件定义多个容器之间的关系和依赖,并通过简单的命令启动、停止和删除这些容器。

关系归纳

  • Docker CE 是一个完整的容器化平台,包含了 docker-ce-cli、containerd.io 以及其他必要的组件。
  • docker-ce-cli 是 Docker CE 的命令行客户端工具,用于与 Docker 守护程序进行交互。
  • containerd.io 是 Docker 引擎的核心组件,负责容器的生命周期管理。
  • docker-buildx-plugin 和 docker-compose-plugin 是 Docker 的扩展插件,分别用于构建多平台镜像和编排多个容器。