Docker安装CentOS7镜像

Docker安装CentOS7镜像

由于经常使用CentOS系统,于是突发奇想,想利用Docker搭建一个CentOS7环境,于是就有了本教程。

拉取镜像

docker pull centos:7

创建容器

docker run -dit --name='centos7_testerzhang' centos:7 /bin/bash

进入容器

docker exec -it centos7_testerzhang /bin/bash

更新yum

yum update -y

# 安装小工具和依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* wget vim make -y

容器打包为基础镜像

# 格式docker commit -m '描述' -a '作者' -p 容器名 镜像名:标签名

docker commit -m 'base centos7' -a 'testerzhang' -p centos7_testerzhang centos7-basic:v1.0

查看镜像容量,多了623MB

$ docker images|grep centos
centos7-basic            v1.0      2480caba1c17   16 seconds ago   827MB
centos                   7         eeb6ee3f44bd   13 months ago    204MB

打包一个自带ssh服务的镜像

但是有时候会需要ssh,那么我们可以打造一个ssh的镜像,这样后续容器就可以用这个镜像产生。

由于我们ssh启动使用了systemctl,所以需要设置特权模式启动容器,否则会报错:

# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Failed to get D-Bus connection: Operation not permitted

那我们删掉之前的容器,重新创建一个

$ docker stop centos7_testerzhang
centos7_testerzhang

$ docker rm centos7_testerzhang
centos7_testerzhang

# 注意这里是/usr/sbin/init
$ docker run -dit --name='centos7_testerzhang'  --privileged=true  -p 9001:22  centos:7 /usr/sbin/init

进入容器

$ docker exec -it centos7_testerzhang /bin/bash

# 安装初始化脚本和网络工具
yum install -y initscripts  net-tools.x86_64

# 安装包括ssh在内的诸多小工具。
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 passwd

# 开启服务
service sshd restart

# 查看是否启动成功
netstat -antp | grep sshd

# 配置管理员密码
passwd root

# 最后退出
exit
  • 容器打包为基础镜像

    # 格式docker commit -m '描述' -a '作者' -p 容器名 镜像名:标签名
    
    docker commit -m 'base centos7 ssh' -a 'testerzhang' -p centos7_testerzhang centos7-ssh:v1.0
    

    查看镜像容量,多了387MB

    $ docker images|grep centos
    centos7-ssh              v1.0      b2802eb6d570   11 seconds ago   591MB
    
    centos                   7         eeb6ee3f44bd   13 months ago    204MB
    

自定义一些环境生成镜像

我在ssh基础上增加了python3、node环境,提交到本地镜像,方便后续使用。

docker commit -m 'base centos7 ssh node py' -a 'testerzhang' -p centos7_testerzhang centos7-ssh_node_py:v1.0

映射目录

使用-v来映射,格式:-v 宿主机路径:容器路径

docker run -dit --name='centos7_testerzhang'  --privileged=true  -p 9001:22 -p 18002:8002 -v /2023/dockerdata/centos7:/opt/.sign/script centos7-ssh_node_py:v1.0 /usr/sbin/init

Docker Build编译生成镜像

有时候上面的指令太麻烦,那么我们就自己编译执行需要的命令生成镜像。

1.创建一个Dockerfile

FROM centos:7

RUN yum update -y
RUN yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* wget vim make -y
RUN yum install -y initscripts  net-tools.x86_64
RUN 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 passwd

RUN echo "testerzhang" | passwd --stdin root
RUN echo

CMD ["service sshd restart","/sbin/init"]

2.使用当前目录的 Dockerfile 创建镜像,标签为build-centos7-basic:v1.0。

docker build -t build-centos7-basic:v1.0 .

Docker Compose运行容器

你需要提前安装好Docker Compose

# curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# chmod +x /usr/local/bin/docker-compose

#  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

1.创建一个docker-compose.yml文件

version: '3'
services:
  centos7basic:
    restart: always
    image: build-centos7-basic:v1.0
    container_name: centos7_testerzhang
    privileged: true
    ports:
      - "9001:22"
    command: /usr/sbin/init

2.运行

docker-compose up -d

本文没有授权给任何组织、企业和个人转载,未经作者允许禁止转载!

欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。

公众号二维码

updatedupdated2022-10-232022-10-23