差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
itwiki:docker-practice [2021/09/26 04:51] – [启动一个FRESHRSS服务] ovwx@live.io | itwiki:docker-practice [Unknown date] (当前版本) – 移除 - 外部编辑 (Unknown date) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== docker 快速实践 ====== | ||
- | |||
- | ===== docker 安装 ===== | ||
- | 免费版本为docker-ce 即社区版本 | ||
- | CentOS: https:// | ||
- | |||
- | |||
- | ===== Docker 容器与镜像快速一览 ===== | ||
- | docker 讲究的是轻服务,因此通常情况下是一个docker容器跑一个服务,在一个容器中同时运行数据库和应用是基本上不存在的,除非整个服务依赖项都非常轻量 | ||
- | * 使用 docker pull 从docker hub 拉取的软件包被称之为镜像 | ||
- | * 每次使用 docker run IMAGENAME 都会自动以镜像为蓝本生成一个运行空间,这个运行空间被称为容器,每个容器相互隔离 | ||
- | * 查看所有镜像使用 docker image ls -a 命令,而查看所有容器使用 docker ps -a 命令 | ||
- | * 使用exit命令或者按下ctrl-c停止容器后,容器不会消失,需要使用docker rm删除容器,使用docker rm 删除时,仅须提供镜像ID前几位(可以区分不同容器即可) | ||
- | * 对容器的更改会保留在当前容器中,但不会影响镜像 | ||
- | * 使用 docker commit 会提交容器修改至镜像,相关命令 docker commit container-id image-name: | ||
- | * 使用 docker save image-name: | ||
- | * 使用 docker load | ||
- | * docker inspect image-id 显示容器详细信息,如虚拟IP,开放端口等 | ||
- | |||
- | **容器本质是一个进程,因此在启动容器时的启动命令须是((前台))程序,如果是后台程序,容器检测到主程序退出后,容器也会自动退出,因此针对一些常见的服务,如NGINX,则不能再使用后台运行的方式启动,而只能以前台运行的方式启动,如 nginx -g daemon off ** | ||
- | |||
- | |||
- | ===== 常用命令 ===== | ||
- | < | ||
- | > docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) | ||
- | > docker start $(docker ps -qf ' | ||
- | > 启动所有容器 | ||
- | > docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) | ||
- | > docker stop $(docker ps -qa) | ||
- | > 停止所有容器 | ||
- | > 注:tail -n +2 代表从第二行开始输出 | ||
- | > 删除已停止的容器 | ||
- | > docker rm $(docker ps -qf ' | ||
- | </ | ||
- | |||
- | ===== docker 的一些常用参数 ===== | ||
- | > -p local-port: | ||
- | > -v local-dir: | ||
- | > -h hostname, 指定容器主机名 | ||
- | > --name container-name, | ||
- | |||
- | |||
- | ===== 定时运行容器内的任务 ===== | ||
- | ==== 在主机系统的Crontab内增加计划任务指令 ==== | ||
- | 大概指令格式为: | ||
- | > */3 * * * * docker exec container-name cmd | ||
- | |||
- | ==== 在以CentOS为基础的镜像包中安装Crontab ==== | ||
- | > yum install cronie | ||
- | > crond | ||
- | |||
- | ==== 在以Ubuntu为基础的容器中安装Crontab ==== | ||
- | > apt-get update | ||
- | > apt-get install cron | ||
- | > cron | ||
- | |||
- | 注意:务须先执行update后再安装,否则会无法找到资源。 | ||
- | |||
- | ===== 实例 ===== | ||
- | ==== 启动一个FRESHRSS服务 ==== | ||
- | < | ||
- | docker run -d --restart unless-stopped --log-opt max-size=10m \ | ||
- | -v rss-data:/ | ||
- | -v rss-ext:/ | ||
- | -p 8080:80 \ | ||
- | -e ' | ||
- | -e TZ=Asia/ | ||
- | --name rss freshrss/ | ||
- | </ | ||
- | |||
- | ==== 启动一个 ElasticSearch 节点 ==== | ||
- | ** 拉取镜像 ** | ||
- | < | ||
- | docker pull docker.elastic.co/ | ||
- | </ | ||
- | |||
- | ** 启动容器 ** | ||
- | < | ||
- | docker run -p 9200:9200 -p 9300:9300 -e " | ||
- | </ | ||
- | |||
- | ** 测试 ** | ||
- | < | ||
- | curl -X GET " | ||
- | </ | ||
- | |||
- | ===== docker 特性 ===== | ||
- | |||
- | ==== Docker 卷及文件存储 ==== | ||
- | 创建docker卷 | ||
- | > docker volume create vol-name | ||
- | |||
- | 显示docker卷 | ||
- | > docker volume ls | ||
- | |||
- | 将文件从本地文件系统复制到docker容器 | ||
- | > docker cp local-dir/ | ||
- | > docker cp containerid: | ||
- | > 同前面一样,container-id不需要完整id,能够区分每个容器的前几位就可以了 | ||
- | |||
- | 将卷或本地目录挂载给容器 | ||
- | > docker run -it -v vol-name:/ | ||
- | > -v vol2:/ | ||
- | > | ||
- | > | ||
- | |||
- | |||
- | ==== Docker 网络端口 ==== | ||
- | > docker run -it -p local-port: | ||
- | > -p local-port2: | ||
- | > | ||
- | > | ||
- | |||
- | ==== Docker 网络与访问隔离 ==== | ||
- | 需要较高版本的docker | ||
- | |||
- | |||
- | ==== 共享容器 ==== | ||
- | 以下命令创建了一个共享容器,挂载了多个卷或者本地目录 | ||
- | < | ||
- | docker create -v local-dir1: | ||
- | -v local-dir2: | ||
- | -v local-dir3: | ||
- | -v ..... | ||
- | --name share-dirs ubuntu: | ||
- | </ | ||
- | 引用时 | ||
- | < | ||
- | docker run --volume-from share-dirs ubuntu: | ||
- | </ | ||
- | |||
- | ===== dockerfile 及构建 ===== | ||
- | < | ||
- | FROM python: | ||
- | MAINTAINER whx3000 < | ||
- | RUN apt-get update && \ | ||
- | apt-get install -y --no-install-recommends \ | ||
- | cron && \ | ||
- | rm -rf / | ||
- | apt-get clean | ||
- | RUN chmod +x ./ | ||
- | ENV LC_ALL C.UTF-8 | ||
- | ENTRYPOINT [" | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ===== Docker 编排 -- Docker Compose ===== | ||
- | docker.yml 配置文件 | ||
- | < | ||
- | version: ' | ||
- | services: | ||
- | nginx: | ||
- | image: nginx | ||
- | container_name: | ||
- | depends_on: | ||
- | - php | ||
- | ports: | ||
- | - " | ||
- | networks: | ||
- | - " | ||
- | volumes: | ||
- | - "/ | ||
- | networks: | ||
- | - " | ||
- | php: | ||
- | image: php | ||
- | container_name: | ||
- | expose: | ||
- | - " | ||
- | networks: | ||
- | - " | ||
- | volumes: | ||
- | - "/ | ||
- | |||
- | networks: | ||
- | net1: | ||
- | driver: bridge | ||
- | </ | ||
- | 注意: | ||
- | * service 节定义需要拉起的容器及各容器初始化参数 | ||
- | * 各节之间同级的内容需要对齐 | ||
- | 定义完拉取服务后使用 docker-compose dock.yml up 拉起服务 | ||
- | |||
- | 参考资料:https:// | ||
- | |||