一、基础概念
1) 镜像和容器的区别是什么?
镜像是一个静态的文件,包含应用程序以及依赖文件的快照(虚拟机文件)
容器是一个运行实例,它是由镜像创建的,容器是一个独立的运行环境(虚拟机系统)
容器是进程,镜像是文件。
2) RUN,CMD,ENTRYPOINT三者的区别
RUN构建镜像的时候,使用的,通常用于安装软件,注意,每条RUN命令会构建一个镜像层,需要谨慎使用,尽量少用,以减少镜像大小。
CMD指定容器启动后默认的命令和参数,一个Dockerfile只能使用一个CMD命令,有多个,最后一个才会生效,示例:CMD cmd parame1 param2 CMD["python", "app.py"]
ENTRYPOINT功能同CMD,但是指令定义的命令无法覆盖。
使用场景:如果希望保留启动容器时执行默认命令,并且希望能够在运行容器时指定新命令,使用CMD,若果在任何情况下都要执行某个命令,那么使用ENTRYPOINT
3)
二、Docker CE 安装
1、依赖安装
yum install -y yum-utils device-mapper-persistent-data lvm2
2、设置镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(可以使用docker-ce 官方仓库进行替换上述地址: https://download.docker.com/linux/centos/docker-ce.repo)
提示:如果如下报错
slirp4netns >= 0.4
错误:软件包:3:docker-ce-20.10.5-3.el7.x86_64 (docker-ce-stable)
需要:container-selinux >= 2:2.74
错误:软件包:containerd.io-1.4.4-3.1.el7.x86_64 (docker-ce-stable)
需要:container-selinux >= 2:2.74
通过以下解决:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
3、安装 Docker CE
yum install -y docker-ce (docker-ce-cli containerd.io)
关闭防火墙以及安全保护
systemctl stop firewalld.service
systemctl disable firewalld.service
senenforce 0
vim /etc/selinux/config (SELINUX=disabled)
4、启动Docker服务
systemctl start docker
systemctl enable docker(开机自启动)
5、验证安装是否成功
docker run hello-world (自动下载镜像)
二、Docker 常见命令
Dockerfile
FROM:指定基础镜像
MAINTAINER:镜像维护人信息
RUN:构建镜像时要执行的命令
ADD:添加本地文件到容器,可以使网络文件,自动下载,压缩包也会解压
COPY:同ADD,只是复制,不解压,不下载
CMD:容器启动后需要执行的命令,使用docker run运行容器的时候,可以在命令行被覆盖
ENTRYPOINT:同CMD,区别是该命令不会被命令行覆盖
VOLUME:指定数据持久化目录,也称挂载
VOLUME /var/hostDir /var/dockDir
WORKDIR: 设置工作目录
docker build
-t 指定镜像name以及tag
-f 构建指定路径下的Dockerfile
docker run
-d 后台运行,默认是前端运行,即在控制台中运行
-p 容器端口映射到主机端口 如 -p 8080:80 (80容器端口,8080主机端口)
-v 主机目录挂载到容器 如 -v /var/hostdir:/var/containerdir
-it 交互方式运行容器