itwiki:docker-practice

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
itwiki:docker-practice [2021/09/26 04:51] – [启动一个FRESHRSS服务] ovwx@live.ioitwiki:docker-practice [Unknown date] (当前版本) – 移除 - 外部编辑 (Unknown date) 127.0.0.1
行 1: 行 1:
-====== docker 快速实践 ====== 
- 
-===== docker 安装 ===== 
-免费版本为docker-ce 即社区版本 
-CentOS: https://docs.docker.com/engine/install/centos/ 
- 
- 
-===== 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:tag 
-  * 使用 docker save image-name:tag -o image.tar 将镜像保存至文件 
-  * 使用 docker load  
-  * docker inspect image-id 显示容器详细信息,如虚拟IP,开放端口等 
- 
-**容器本质是一个进程,因此在启动容器时的启动命令须是((前台))程序,如果是后台程序,容器检测到主程序退出后,容器也会自动退出,因此针对一些常见的服务,如NGINX,则不能再使用后台运行的方式启动,而只能以前台运行的方式启动,如 nginx -g daemon off ** 
- 
- 
-===== 常用命令 ===== 
-<code> 
-> docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) 
-> docker start $(docker ps -qf 'status=exited') 
-> 启动所有容器 
-> docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) 
-> docker stop $(docker ps -qa) 
-> 停止所有容器 
-> 注:tail -n +2 代表从第二行开始输出 
-> 删除已停止的容器 
-> docker rm $(docker ps -qf 'status=exited') 
-</code> 
- 
-===== docker 的一些常用参数 ===== 
-> -p local-port:container-port , 端口映射,可绑定多个端口 
-> -v local-dir:container-dir, 卷挂载,可将本地目录或者创建的docker卷挂载给容器,可挂载多个 
-> -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服务 ==== 
-<code> 
-docker run -d --restart unless-stopped --log-opt max-size=10m \ 
-  -v rss-data:/var/www/FreshRSS/data \ 
-  -v rss-ext:/var/www/FreshRSS/extensions \ 
-  -p 8080:80 \ 
-  -e 'CRON_MIN=4,34' \ 
-  -e TZ=Asia/Shanghai \ 
-  --name rss freshrss/freshrss 
-</code> 
- 
-==== 启动一个 ElasticSearch 节点 ==== 
-** 拉取镜像 ** 
-<code> 
-docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.0 
-</code> 
- 
-** 启动容器 ** 
-<code> 
-docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.15.0 
-</code> 
- 
-** 测试 ** 
-<code> 
-curl -X GET "localhost:9200/_cat/nodes?v=true&pretty" 
-</code> 
- 
-===== docker 特性 ===== 
- 
-==== Docker 卷及文件存储 ==== 
-创建docker卷 
-> docker volume create vol-name 
- 
-显示docker卷 
-> docker volume ls 
- 
-将文件从本地文件系统复制到docker容器 
-> docker cp local-dir/file container-id:dir 
-> docker cp containerid:dir local-dir 
-> 同前面一样,container-id不需要完整id,能够区分每个容器的前几位就可以了 
- 
-将卷或本地目录挂载给容器 
-> docker run -it -v vol-name:/data/dir \ 
->   -v vol2:/data/dir2 \ 
->   --name container-name 
->   image-name cmd 
- 
- 
-==== Docker 网络端口 ==== 
-> docker run -it -p local-port:container-port \ 
->   -p local-port2:container-port2 \ 
->   --name container-name 
->   image-name cmd 
- 
-==== Docker 网络与访问隔离 ==== 
-需要较高版本的docker 
- 
- 
-==== 共享容器 ==== 
-以下命令创建了一个共享容器,挂载了多个卷或者本地目录 
-<code> 
-  docker create -v local-dir1:container-dir1 \ 
-    -v local-dir2:container-dir2 \ 
- -v local-dir3:container-dir3 \ 
- -v ..... 
- --name share-dirs ubuntu:18.04  
-</code> 
-引用时 
-<code> 
-docker run --volume-from share-dirs ubuntu:18.04 --name s2 
-</code> 
- 
-===== dockerfile 及构建 ===== 
-<code> 
-FROM python:3.6-slim 
-MAINTAINER whx3000 <wanghaoxi3000@163.com> 
-RUN apt-get update && \ 
-  apt-get install -y --no-install-recommends \  
-  cron && \  
-  rm -rf /var/lib/apt/lists/* && \  
-  apt-get clean 
-RUN chmod +x ./docker-entrypoint.sh 
-ENV LC_ALL C.UTF-8 
-ENTRYPOINT ["./docker-entrypoint.sh"] 
-</code> 
- 
- 
- 
-===== Docker 编排 -- Docker Compose ===== 
-docker.yml 配置文件 
-<code> 
-version: '3' 
-services: 
-  nginx: 
-    image: nginx 
-    container_name: lnmp-nginx 
-    depends_on: 
-      - php 
-    ports: 
-      - "80:80" 
-    networks: 
-      - "net1" 
-    volumes: 
-      - "/www:/usr/local/nginx/html" 
-    networks: 
-      - "net1" 
-  php: 
-    image: php 
-    container_name: lnmp-php 
-    expose:  
-      - "9000" 
-    networks: 
-      - "net1" 
-    volumes: 
-      - "/www:/usr/local/nginx/html" 
- 
-networks: 
-  net1: 
-    driver: bridge 
-</code> 
-注意: 
-  * service 节定义需要拉起的容器及各容器初始化参数 
-  * 各节之间同级的内容需要对齐 
-定义完拉取服务后使用 docker-compose dock.yml up 拉起服务 
- 
-参考资料:https://yeasy.gitbook.io/docker_practice/ 
- 
  
  • itwiki/docker-practice.1632624716.txt.gz
  • 最后更改: 2021/09/26 04:51
  • ovwx@live.io