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实例
首先使用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
首先使用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 # 查看运行状态
操作以centos系统为例:
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查看
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 参数强制删除
由于中国大陆地区访问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 #重启生效
我们的产品专家为您找到最合适的产品/解决⽅案
1v1线上咨询获取售前专业咨询
专业产品顾问,随时随地沟通