Docker容器的介绍与使用

2022-06-19 12:08:56

一 介绍

  1. 什么是Dokcer?
    1)就是可以快速部署启动应用
    2)实现虚拟化,完整资源隔离
    3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的 linux/Windows/unix环境下使用)
  2. 为什么要用?
    1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就 可以直接启动运行
    2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
    3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用 4、更好的资源隔离和共享
  3. 总结一句话:开箱即用,快速部署,可移植性强,环境隔离

二 安装

 安装环境:Centos 7 安装条件:docker官方要求至少3.8以上,建议3.10以上

Docker 版本: docker EE 企业版本 docker CE 社区版本

关闭防火墙:systemctl stop firewalld.service vi /etc/selinux/config

安装Docker Ce 社区版本:

安装wget命令:

下载阿里云docker社区版 yum源

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

查看docker安装包:yum list | grep docker

安装Docker Ce 社区版本:yum install -y docker-ce.x86_64

设置开机启动:systemctl enable docker

更新xfsprogs:yum -y update xfsprogs

启动docker:systemctl start docker

查看版本:docker version

查看详细信息:docker info

三 什么是镜像?

查看本地镜像:docker images

搜索镜像:docker search centos

搜索镜像并过滤是官方的: docker search --filter "is-official=true" centos

搜索镜像并过滤大于多少颗星星的:docker search --filter stars=10 centos

下载centos7镜像:docker pull centos:7

修改本地镜像名字(小写):docker tag centos:7 mycentos:1

本地镜像的删除:docker rmi centos:7

四 配置阿里云镜像加速

 阿里云镜像加速器配置地址:https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors

配置步骤:vi /etc/docker/daemon.json

{
"registry-mirrors": ["https://5xok66d4.mirror.aliyuncs.com"]
}

 重启:systemctl daemon-reload && systemctl restart docker


五 讲解镜像与容器之间的关系

一个镜像可以启动无数台容器(机器性能允许的情况下) 容器也容器之间的操作互不影响,处于隔离的环境


构建容器:docker run -itd --name=mycentos centos:7

-i :表示以交互模式运行容器(让容器的标准输入保持打开)

-d:表示后台运行容器,并返回容器ID

-t:为容器重新分配一个伪输入终端

--name:为容器指定名称

查看本地所有的容器:docker ps -a

查看本地正在运行的容器:docker ps

停止容器:docker stop CONTAINER_ID / CONTAINER_NAME

一次性停止所有容器:docker stop $(docker ps -a -q)

启动容器:docker start CONTAINER_ID / CONTAINER_NAME

重启容器:docker restart CONTAINER_ID / CONTAINER_NAME

删除容器:docker rm CONTAINER_ID / CONTAINER_NAME

强制删除容器:docker rmi -f CONTAINER_ID / CONTAINER_NAME

查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME

进入容器:docker exec -it 0ad5d7b2c3a4 /bin/bash

六 容器与宿主机之间文件复制与挂载

从宿主机复制到容器:docker cp

宿主机本地路径 容器名字/ID:容器路径 docker cp /root/123.txt mycentos:/home/

从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径 docker cp mycentos:/home/456.txt /root

宿主机文件夹挂载到容器里:docker run -itd -v 宿主机路径:容器路径 镜像ID docker run -itd -v /root/xdclass/:/home centos:7

七 构建自定义镜像

docker目前镜像的制作有俩种方法:

  1. 基于Docker Commit制作镜像
  2. 基于dockerfile制作镜像,Dockerfile方式为主流的制作镜像方式

八 Commit构建自定义镜像

启动并进入容器:docker run -it centos:7 /bin/bash

在/home 路径下创建xdclass文件夹:mkdir /home/xdclass

安装ifconfig命令:yum -y install net-tools

重启容器,查看容器的xdclass文件夹还在不在:docker restart 67862569d4f7

删除容器,再重新启动一个容器进入查看有没有xdclass文件夹:docker rm 67862569d4f7 && docker run -it centos:7 /bin/bash

构建镜像:

  1. docker commit 4eb9d14ebb18 mycentos:7
  2. docker commit -a "XD" -m "mkdir /home/xdclass" 4eb9d14ebb18 mcentos:7
  3. -a:标注作者
  4. -m:说明注释
  5. 查看详细信息:docker inspect 180176be1b4c

启动容器:docker run -itd 180176be1b4c /bin/bash

进入容器查看:docker exec -it 2a4d38eca64f /bin/bash

九 Dockerfile构建镜像实战

Dockerfile

# this is a dockerfile
FROM centos:7
MAINTAINER XD 123456@qq.com
RUN echo "正在构建镜像!!!"
WORKDIR /home/xdclass
COPY 123.txt /home/xdclass
RUN yum install -y net-tools

构建:docker build -t mycentos:v2 .

查看:docker images

进入验证:验证成功

十 些常用的Dockerfile指令

FROM

        基于哪个镜像

MAINTAINER

        注明作者

COPY

         复制文件进入镜像(只能用相对路径,不能用绝对路径)

ADD

        复制文件进入镜像(假如文件是.tar.gz文件会解压)

WORKDIR:

        指定工作目录,假如路径不存在会创建路径

ENV

        设置环境变量

EXPOSE

         暴露容器端口

RUN

        在构建镜像的时候执行,作用于镜像层面

ENTRYPOINT

        在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条

CMD

        在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条

         容器启动后执行默认的命令或者参数,允许被修改

命令格式:

         shell命令格式:RUN yum install -y net-tools exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]

#第一个
FROM centos:7
RUN echo "images building!"
CMD ["echo","container","starting..."]
ENTRYPOINT ["echo","container","starting !!!"]
#第二个
FROM centos:7
RUN echo "images building!"
CMD ["echo","containe1r","starting..."]
CMD ["echo","container2","starting..."]
ENTRYPOINT ["echo","container2","starting !!!"]
ENTRYPOINT ["echo","container2","starting !!!"]
#第三个
FROM centos:7
CMD ["-ef"]
ENTRYPOINT ["ps"]
  • 作者:葛旭朋
  • 原文链接:https://blog.csdn.net/m0_37647376/article/details/119665732
    更新时间:2022-06-19 12:08:56