Docker入门学习+常用命令

为什么要用Docker

为了让一台机器虚拟成很多的机器(沙箱)

一台服务器给几百个用户使用

沙箱-> 语言沙箱->PHP

系统沙箱方案

  • 虚拟机方案

    • 5-10租户

  • Docker(容器)方案

    • 50-100租户

Docker的原理

  • Namespaces 进程树、网络接口、挂载点、进程间通信

  • CGroups CPU、内存、磁盘I/O、网络带宽

  • Unionfs 文件系统、镜像

宿主机

沙箱==容器

ps命令查看进程

Namespaces

网桥模式

etch0

CGroups

Unionfs


隔离 相同 不同

不同->可写层 容器

相同->只读层 镜像

联合文件系统

源自Linux

镜像+容器

流程

  • 拉取一个镜像

  • 创建一个容器

  • 在容器中运行命令

Docker被设计来运行命令,命令结束后退出

Docker的架构

  • Client

    • 容器管理

    • 镜像管理

    • 信息和状态查询

  • Server

    • Daemon

    • 容器(创建)

    • 镜像(本地拉取【优先】+Registry拉取)

  • Registry

    • 仓库

Docker常用命令

容器管理

创建容器

docker run

管理容器

docker ps 列表

docker start/stop

docker rm 删除

docker rename 改名

docker cp 复制

docker container prune 删除停止容器

docker exec 运行命令 (运行完就退出)-> 运行不完就不退出 -> 需要多后台怎么办?(进程管理器)

docker commit 从容器创建新镜像 (不想之前的修改丢失)

docker build (读取dockerfile文件)创建镜像

镜像列表

docker images

镜像删除

docker rmi

docker image prune

镜像保存

docker save/load

镜像管理

镜像传输

docker pull/push

docker tag

信息和状态

日志 docker log

状态 docker stats

版本 docker version

进程 docker top

元数据 docker inspect

变化 docker diff

端口 docker port

宿主机进行端口映射

80->8081

80->8082

数据卷管理

HOST

bind mount 挂载

volume

tmpfs mount

创建 docker volume create

列表 docker volume ls

元信息 docker volume inspect

删除 docker volume rm

docker run -d --name devtest -v myvol2:/app nginx:latest

将容器与宿主机进行挂载

Nginx

webservice服务

端口映射

docker run --rm -p 8080:80(宿主机:容器) nginx

docker run --rm -p 8080:80 -v [HostAddress]:[ContainerAddress]:ro nginx 挂载网页

docker run --rm -p 8080:80 -v [HostAddress]:[ContainerAddress]:ro -d nginx 后台运行

docker tag [id] Repository:TAG

Docker --help

dockfile的编写

 FROM webdevops/php-apache:8.0.2
 COPY vhost.conf 
 COPY init.sh
 ADD supervisord-proxy.conf
 EXPOSE 80 8802
  • 构建时

  • 运行时

添加文件

COPY/ADD

ADD 支持 URL,支持从压缩文件中添加

优先使用COPY,因为更透明

添加信息

ENV/LABEL/ARG

执行命令

RUN/SHELL -> exec 形式的命令 <instruction> ["xxx","xxx","xxx"]

CMD/ENTRYPOINT

其他命令

FROM/EXPOSE/VOLUME/WORKDIR/USER

ONBUILD/STOPSIGNAL

Docker-compose的使用

管理多容器的工具,安装包自带

单容器vs多容器

  • WebApp

    • Webserver

    • Database

    • Cache

  • 单一容器

    • Webserver

    • Database

    • Cache

  • 多容器

    • Webserver

  • 多容器

    • Database

  • 多容器

    • Cache

互访问题

顺序依赖

基本结构

  • version 语法的版本

  • Services 每一个容器的细节(Service)

    • mariadb

    • app

      • build/image(from registry): './docker/web/'

      • ports:

        • -'8801:80'

      • volumes:

        • -'./:/app'

      • depends_on:

        • -mariadb

      • environment:

        • -DB_HOST=mariadb

        • -DB_PORT=3306

        • -DB_USERNAME=root

        • -DB_DATABASE=prism

        • -DB_PASSWORD=theVeryp@ssw0rd

  • volumes 数据卷

docker-compose 是yml格式文件

其他指令

  • arg

  • cmd

  • dns

  • tmpfs

  • expose

  • extra_hosts

  • secrets

  • entrypoint

  • user

  • working_dir

  • restart

用docker封装应用

  • Laravel 网站

  • Gin 代理

  • Database 数据库mysql

容器规划

  • container

    • Laravel 8801

      • 运行在PHP环境下

      • laravel init

      • PHP <-> apache <- vhost -> 80:8801

    • Gin 8802

  • container

    • Database 3306

进程管理工具:supervisor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toreme

随缘喜赞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值