CentOS Docker 安装
一、docker安装
1、更新yum云仓库 updata yum
2、一键安装docker curl -sSL https://get.daocloud.io/docker | sh
3、安装所需的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、配置仓库源
yum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、安装docker引擎
l 最新版安装
sudo yum install docker-ce docker-ce-cli containerd.io
l 指定版本安装
查看可用docker版本 yum list docker-ce --showduplicates | sort -r
指定版本安装 yum install docker-ce-19.03.9
6、启动docker服务
sudo systemctl start docker
7、验证安装
docker version
二、docker 镜像
1、查询本地主机上的镜像 docker images
2、拉取镜像
docker pull 镜像名称:版本号(不写表示最后一个版本)
3、启动镜像
l 交互式启动镜像 docker run -t -i 镜像名称:版本号(不写表示最后一个版本) /bin/bash
docker run -itd --name centos-test centos:centos7
l 后台启动镜像 docker run -d 镜像名称
4、删除镜像
docker rmi 镜像名称或镜像id
5、创建镜像
- 从已经创建的容器中更新镜像,并且提交这个镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名: [TAG]
- 使用 Dockerfile 指令来创建一个新的镜像
Dockerfile参数简介
指令 含义解释
FROM : FROM debian:stretch表示以debian:stretch作为基础镜像进行构建
MAINTAINER: 维护者信息
RUN : 可以看出RUN后面跟的其实就是一些shell命令,通过&&将这些脚本连接在了一行执行,这么做的原因是为了减少镜像的层数,每多一行RUN都会给镜像增加一层,所以这里选择将所有命令联结在一起执行以减少层数
ARG : 特地将这个指令放在RUN之后讲解,这个指令可以进行一些宏定义,比如我定义ENV JAVA_HOME=/opt/jdk,之后RUN后面的shell命令中的${JAVA_HOME}都会被/opt/jdk代替
ENV : 可以看出这个指令的作用是在shell中设置一些环境变量(其实就是export)
FROM…AS…: 这是Docker 17.05及以上版本新出来的指令,其实就是给这个阶段的镜像起个别名:FROM …(基础镜像) AS …(别名),在后面引用这个阶段的镜像时直接使用别名就可以了
COPY: 顾名思义,就是用来来回复制文件的,COPY . /root/workspace/agent表示将当前文件夹(.表示当前文件夹,即Dockerfile所在文件夹)的所以文件拷贝到容器的/root/workspace/agent文件夹中。通过–from参数也可以从前面阶段的镜像中拷贝文件过来,比 如–from=builder表示文件来源不是本地文件系统,而是之前的别名为builder的容器
WORKDIR: 在执行RUN后面的shell命令前会先cd进WORKDIR后面的目录
ENTRYPOINT: 这个参数表示镜像的“入口”,镜像打包完成之后,使用docker run命令运行这个镜像时,其实就是执行这个ENTRYPOINT后面的可执行文件(一般是一个shell脚本文件),也可以通过[“可执行文件”, “参数1”, “参数2”]这种方式来赋予可执行文件的执行参数, 这个“入口”执行的工作目录也是WORKDIR后面的那个目录。
制作步骤
1、创建存放Dockerfile的目录,后续操作将在这个目录下进行。
mkdir docker_demo
cd docker_demo
2、编写Dockerfile文件
l touch mydockerfile
l vim mydockerfile
3、build构建镜像
docker build -t mycentos:1.0 . (“mycentos:1.0”:新构建的镜像名称;”.”:当前目录上下文路径)
三、docker 容器
1、启动镜像生成容器 docker run -itd --name centos-test centos:centos7
2、查看所有容器/运行容器 docker ps -a / docker ps
3、启动一个已停止的容器 docker start 容器名称或ID
4、停止一个已启动的容器 docker stop 容器名称或ID
5、进入容器 docker exec -it 243c32535da7 /bin/bash
6、导出容器 docker export 1e560fca3906 > ubuntu.tar
7、导入容器
l 可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
docker export 1e560fca3906 > ubuntu.tar
l 也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
8、删除容器 docker rm -f 1e560fca3906
四、Docker Compose
1、Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
l 使用 Dockerfile 定义应用程序的环境。
l 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
l 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
2、Compose 安装
l 下载
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
l 赋权
chmod +x /usr/local/bin/docker-compose
l 创建软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
l 测试是否安装成功
docker-compose --version
cker-compose version 1.24.1, build 4667896b
3、创建 docker-compose.yml
version:指定版本
services:该指令下面写该yml文件中需要定义的container信息,其中services的下面第一级指令就是指定的该容器的名称
image:指定该容器使用的image,和build二选一
build:指定该容器使用的image通过哪个目录下的Dockerfile文件进行构建,. 表示当前目录的Dockerfile文件,和image二选一
ports:指定宿主机和容器的端口映射关系,可指定多个
networks:指定使用的网络信息,可指定多个
ipv4_address:和networks配合使用,指定容器在该网络中的ip信息
volumes:指定数据挂载信息,可以指定目录或文件的映射,也可以指定数据挂载记录和容器中目录的映射(这种一般指定的容器中目录是该容器Dockerfile文件中VOLUME指令指定的目录),如果指定数据挂载记录的映射需要通过volumes定义数据挂载记录,可指定多个
environment:指定容器可选参数的值信息
networks:定义网络信息,相当于docker network create 命令,其中networks的下面第一级指令就是指定网络的名称,可以配合subnet指定网段信息
volumes:定义数据挂载记录,相当于docker volume create 命令
4、使用 Compose 命令
docker-compose up 创建并启动容器
docker-compose up -d 以后台形式创建并启动容器
docker-compose -f yml文件 up 指定创建并启动容器使用的yml文件
docker-compose ps:查看通过docker-compose创建的容器,如果是docker run启动的容器不会显示,通过docker ps可以查看通过docker run和docker-compose启动的容器
docker-compose images:查看通过docker-compose得到的image,通过其他方式得到的image不会显示,通过docker images可以查看docker pull、docker run、docker-compose、docker build、docker commit得到的image
docker-compose stop/start 停止/启动docker-compose.yml文件中定义的容器。
docker-compose down 停止并删除docker-compose.yml文件中定义的容器及删除docker-compose.yml文件中定义的network,但是定义的volume不会删除。
docker-compose logs docker-compose.yml文件中定义的容器名称 查看某个容器的日志。
注意:
1、docker-compose的命令需要在有docker-compose.yml文件的目录才可以执行,否则使用docker-compose的命令会报错;并且只有该yml文件执行了up操作即创建了该docker-compose.yml定义的容器之后才可以看到对应的容器。
标签:容器,compose,CentOS,指定,yml,镜像,Docker,安装,docker From: https://www.cnblogs.com/songqiang8858/p/16642560.html