够用的Docker知识
- 0
#讨论区
00条评论
实时对话
loading...
仓库中存储镜像,镜像生成容器
bash
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-container-image.html
bash
bash
bash
bash
bash
docker images
docker rmi image_id
docker stop container_id
docker rm container_id
docker start container_id
docker stop container_id
docker restart container_id
docker ps
docker ps -a
docker start container_id
docker port container_id
docker image prune
Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
关键字 | 作用 | 备注 | 关键字 |
---|---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 | FROM |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 | MAINTAINER |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 | LABEL |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] | RUN |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"] | CMD |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 | ENTRYPOINT |
COPY | 复制文件 | build的时候复制文件到image中 | COPY |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 | ADD |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value | ENV |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 | ARG |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"] | VOLUME |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp | EXPOSE |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 | WORKDIR |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 | USER |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 | HEALTHCHECK |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 | ONBUILD |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 | STOPSIGNAL |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
dockerfile
bash
独立版 Compose 使用破折号compose语法,其他使用空格语法
bash
dockerfile
yum update
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker # 启动docker
systemctl enable docker # 开机自动启动docker
systemctl restart docker # 重启docker
sudo yum update -y
sudo amazon-linux-extras install docker
sudo service docker start
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
docker info
#step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#Step 2: 添加软件源信息&使用阿里云镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#Step 3: 更新缓存并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
#Step 4: 开启Docker服务
sudo systemctl start docker
sudo systemctl enable docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://*****.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run -d -p 5000:5000 --restart=always --name registry registry
#用 curl 查看仓库中的镜像
curl 127.0.0.1:5000/v2/_catalog
FROM ubuntu:bionic-20190612
LABEL maintainer [email protected]
ENV MYSQL_USER=mysql \
MYSQL_VERSION=5.7 \
MYSQL_DATA_DIR=/var/lib/mysql \
MYSQL_RUN_DIR=/run/mysqld \
MYSQL_LOG_DIR=/var/log/mysql
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server=${MYSQL_VERSION}* \
&& rm -rf ${MYSQL_DATA_DIR} \
&& rm -rf /var/lib/apt/lists/*
EXPOSE 3306/tcp
CMD ["/usr/bin/mysqld_safe"]
# 下载
curl -SL https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 赋权
sudo chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose version
#查看帮助
docker-compose -h
#-f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
#启动所有容器,-d 将会在后台启动并运行所有的容器
docker-compose up -d
#停用移除所有容器以及网络相关
docker-compose down
#查看服务容器的输出
docker-compose logs
#列出项目中目前的所有容器
docker-compose ps
#构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
docker-compose build
#拉取服务依赖的镜像
docker-compose pull
#重启项目中的服务
docker-compose restart
#删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
docker-compose rm
#在指定服务上执行一个命令。
docker-compose run ubuntu ping docker.com
#设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose scale web=3 db=2
#启动已经存在的服务容器。
docker-compose start
#停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
docker-compose stop
version: "3"
services:
doc:
restart: always
image: registry.cn-shanghai.aliyuncs.com/zzf2001/bot-doc:latest
ports:
- "9060:80"
vue:
restart: always
image: registry.cn-shanghai.aliyuncs.com/zzf2001/bot-vue2:latest
ports:
- "9061:80"
react:
restart: always
image: registry.cn-shanghai.aliyuncs.com/zzf2001/bot-react:latest
ports:
- "9062:80"