Linux系统搭建docker环境

产品文档

云主机 CVM

2024-06-03 09:30:04

Linux系统搭建docker环境

应用场景

Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。

如需了解更多关于 Docker 相关信息,请参见 Docker 官方文档

核心概念

docker是基于Go语言实现的云开源项目,Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

    Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

    可参考下图理解docker的架构

环境准备

前提条件:

准备一台服务器,推荐使用Linux操作系统可参考创建Linux实例

操作步骤

yum方式安装 :

centos7.9系统安装docker的示例 :

首先使用ssh工具登陆实例,可参考登陆Linux实例

1.安装docker-ce必要的一些系统工具

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

2.复制以下命令执行,添加 Docker 软件源。

 yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.更新并安装Docker-CE

 yum makecache fast
 yum -y install docker-ce

4.安装完成后检测docker是否安装完成并检查版本

docker -v

离线方式安装:

官网安装包:

https://download.docker.com/linux/static/stable/x86_64/docker-23.0.1.tgz

centos7.9系统安装docker的示例 :

首先使用ssh工具登陆实例,可参考登陆Linux实例

1.安装docker-ce必要的一些系统工具

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

2.复制以下命令执行,下载安装包

wget https://download.docker.com/linux/static/stable/x86_64/docker-23.0.1.tgz

3.解压压缩包

 gunzip docker-23.0.1.tgz
 tar -xvf docker-23.0.1.tar

4.解压完成后,得到的文件复制到 /usr/bin目录下

cp docker/* /usr/bin/ -n

5.编写一个docker-ce的启动文件 ,并设置权限

cat <<  EOF >/etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

EOF
chmod 755 /etc/systemd/system/docker.service

6.查看版本

docker -v

验证测试:

可通过查看docker进程运行状态的方式验证

systemctl  daemon-reload  
systemctl  start docker
systemctl  status docker  # 查看运行状态 

docker基本管理

操作以centos系统为例:

docker镜像管理

1.查找镜像 docker search name:tag

  docker search centos7

2.下载镜像 docker pull name:tag

 docker pull rpmbuild/centos7

3.列出本地镜像

docker images

4.删除本地镜像 docker rmi name:tag

docker rmi nginx

5.查看镜像详细信息docker inspect name:tag

docker inspect nginx

6.修改标签:您可以修改镜像标签以便记忆区分。docker tag name:oldtag name:newtag

docker  tag nginx:latest nginx:v1.0

7.编写Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

dockerfile 的命令摘要

FROM 镜像从那里来
MAINTAINER 镜像维护者信息
RUN 构建镜像执行的命令,每一次RUN都会构建一层
CMD 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
VOLUME 定义数据卷,如果没有定义则使用默认
USER 指定后续执行的用户组和用户
WORKDIR 切换当前执行的工作目录
HEALTHCHECH 健康检测指令
ARG 变量属性值,但不在容器内部起作用
EXPOSE 暴露端口
ENV 变量属性值,容器内部也会起作用
ADD 添加文件,如果是压缩文件也解压
COPY 添加文件,以复制的形式
ENTRYPOINT 容器进入时执行的命令

以下是一个基于openresty 所编写的一个Dockerfile示例:

vim Dockerfile #复制以下文件内容到此文件
FROM  centos:centos7
MAINTAINER Nginx Dockerfile Write by  Zhao
RUN  yum -y install   epel-release &&yum clean all &&yum makecache && yum -y install wget gcc make pcre-devel \
     zlib-devel openssl-devel libxml2-devel  libxslt-devel luajit GeoIP-devel \
     gd-devel libatomic_ops-devel luajit-devel  perl-devel  perl-ExtUtils-Embed
RUN cd /tmp && wget https://openresty.org/download/openresty-1.19.3.2.tar.gz && \
    tar -zxmf  openresty-1.19.3.2.tar.gz && \
    cd openresty-1.19.3.2  && \
    ./configure \
        --with-threads \
        --with-file-aio \
        --with-http_ssl_module \
        --with-http_v2_module \
        --with-http_realip_module \
        --with-http_addition_module \
        --with-http_xslt_module=dynamic \
        --with-http_image_filter_module=dynamic \
        --with-http_geoip_module=dynamic \
        --with-http_sub_module \
        --with-http_dav_module \
        --with-http_flv_module \
        --with-http_mp4_module \
        --with-http_gunzip_module \
        --with-http_gzip_static_module \
        --with-http_auth_request_module \
        --with-http_random_index_module \
        --with-http_secure_link_module \
        --with-http_degradation_module \
        --with-http_slice_module \
        --with-http_stub_status_module \
        --with-stream=dynamic \
        --with-stream_ssl_module \
        --with-stream_realip_module \
        --with-stream_geoip_module=dynamic \
        --with-libatomic \
        --with-pcre-jit \
        --with-stream_ssl_preread_module && \
    gmake && gmake install
ENV PATH $PATH:/usr/local/nginx/sbin
RUN ln -s /usr/local/openresty/nginx  /usr/local/nginx
RUN ln -sf /dev/stdout /usr/local/nginx/logs/access.log && \
    ln -sf /dev/stderr /usr/local/nginx/logs/error.log
EXPOSE 80
ENTRYPOINT ["nginx","-g","daemon off;"]

编辑完成后 保存退出,build镜像

docker build -t nginx:openresty  . # build完成后可使用 docker images查看

docker容器管理

1.创建容器 docker create [options] image

常用参数:

--add-host=[] 指定主机到IP地址的映射关系,其格式为host:ip
--dns=[]  为容器指定域名服务器
-h 为容器指定主机名
-i 打开容器的标准输入
--name  指定容器的名称
-u,--user= 创建用户
docker  create  nginx:v1.0 

2.创建启动并进入容器 docker run -it ImageId /bin/bash

docker run 参数与docker create 相似需要注意以下两个参数

-t参数 :为当前容器分配一个命令行终端,以便于用户与容器交互,以该选项创建的容器可以称为交互式容器。
-d参数 : 以该选项创建的容器为后台运行,新的容器保持在后台运行。

例如下面命令创建一个名称为demo_nginx 的容器,创建之后立即启动,且进入交互模式

docker run -i -t --name demo_nginx nginx:v1.0 /bin/bash

3.查看容器状态 docker ps

查看当前运行中的容器

 docker ps

查看所有容器

docker ps  -a

按照容器名称筛选宿主机容器 (也可筛选镜像名称,或运行状态等)

docker ps -a -f name=demo

4.操作容器

启动并创建一个后台运行的容器

 docker run -itd --name demo2_nginx nginx:v1.0 /bin/bash

启动已停止运行的容器

 docker start demo_nginx

停止一个运行中的容器

 docker stop demo_nginx

重启容器

docker restart  demo_nginx

进入容器

docker  exec -it  demo_nginx /bin/bash #加上 -d 参数是后台运行容器

导出和导入容器

将宿主机中的容器通过export 打包为一个文件,用import 将该文件创建为镜像

docker export demo_nginx  > demo_nginx.tar  #将容器导出为一个tar包
docker import demo_nginx.tar  demo_nginx #导入为镜像,可使用docker images查看

删除容器

docker rm demo_nginx  # 删除的前提是容器已停止,删不掉可停止容器后删除或加 -f 参数强制删除

解决问题

1.docker pull 镜像失败

由于中国大陆地区访问docker.com会出现超时现象,如果出现失败情况可以更换国内加速地址,配置方法如下:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
   "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
[root@test-01 mnt]# systemctl daemon-reload
[root@test-01 mnt]# sudo systemctl restart docker #重启生效
文档反馈

开始与售前顾问沟通

可直接拨打电话 400-098-8505转1

我们的产品专家为您找到最合适的产品/解决⽅案

在线咨询 5*8⼩时

1v1线上咨询获取售前专业咨询

点击咨询
企微服务助手

专业产品顾问,随时随地沟通