Docker 容器

三大概念

容器:容器是一个运行在隔离环境中的程序

镜像:镜像是只读的模板,包含了创建容器所需的所有文件和配置信息

仓库:仓库是用来存储、分发、管理镜像的地方

容器管理命令

命令说明
docker version查看服务器与客户端版本
docker info查看 docker 服务配置信息
docker images查看本机镜像
docker pull 镜像名称:标签下载镜像
docker save 镜像名称:标签 -o 文件名备份镜像为tar包
docker load -i 备份文件名称导入备份的镜像文件
docker history 镜像名称:标签查看镜像的制作历史
docker run -it(d) 镜像名称:标签创建容器
docker ps查看容器的信息
docker inspect 镜像名称|容器名称查询(容器/镜像)的详细信息
docker [start|stop|restart] 容器id启动、停止、重启容器
docker exec -it 容器ID 启动命令在容器内执行命令
docker logs 容器ID查看容器日志
docker cp 路径1 路径2拷贝文件:路径格式(本机路径、容器ID/路径)
docker rm 容器ID删除容器
docker tag 镜像ID:标签 镜像名称:新的标签创建新的镜像名称和标签
docker rmi 镜像名称:标签删除镜像(必须先删除该镜像启动的所有容器)

Dockerfile

        commit 能制作简单的镜像,但复杂的情况十分不便,而 Dockerfile 是一种强大的镜像制作方式,通过编写类似脚本的 Dockerfile 文件制作镜像。

        格式:docker  build  -t  镜像名称:标签  Dockerfile 所在目录

指令说明
FROM指定基础镜像(scratch 代表空镜像)
RUN在容器内执行命令,可以写多条
ADD把文件拷贝到容器内,如果文件是 tar.xx 格式,会自动解压
COPY把文件拷贝到容器内,不会自动解压
ENV设置启动容器的环境变量
WORKDIR设置启动容器的默认工作目录(唯一)
CMD容器默认的启动参数(唯一)
ENTRYPOINT容器默认的启动命令(唯一)
USER启动容器使用的用户(唯一)
EXPOSE使用镜像创建的容器默认监听使用的端口号/协议

Docker 私有仓库 registry

        私有仓库是存储 docker image 的仓库。

        Registry 提供了仓库核心功能,包括分层传输机制、web接口等功能。

核心参数:

        镜像仓库地址:"registry-mirrors": ["http://registry:5000", "其他镜像仓库"]

        信任仓库地址:"insecure-registries":["registry:5000", "其他镜像仓库"]

在 Registry 仓库安装部署完成后,所有 docker 节点都需要配置:

[root@docker ~]# vim /etc/hosts

192.168.88.30   registry                                                              #配置域名解析服务

[root@docker ~]# vim /etc/docker/daemon.json                         # 修改配置文件

{

    "registry-mirrors": ["http://registry:5000", "其他镜像仓库"],

    "insecure-registries":["registry:5000"]

}

[root@docker ~]# systemctl restart docker                                #重启服务生效

[root@docker ~]# docker info                                                     #查看是否生效

上传镜像需要先设置标签,如下:

[root@docker ~]# docker tag rockylinux:8 registry:5000/img/mylinux:8.5

[root@docker ~]# docker push registry:5000/img/mylinux:8.5

查看镜像名称: curl http://仓库IP:5000/v2/_catalog

查看镜像标签: curl http://仓库IP:5000/v2/镜像路径/tags/list

使用易读格式: python3 -m json.tool

端口映射

        格式:docker  run  -p  可选IP:宿主机端口:容器端口(可有多个)

        docker run -itd --rm --name web -p 8080:80 myos:httpd

容器卷

        Docker 可以映射宿主机文件或目录到容器中。目标对象不存在就自动创建,存在就直接覆盖,多个容器可以映射同一个目标对象来达到数据共享的目的。

        格式:docker  run  -itd  -v  宿主机对象:容器内对象  镜像名称:标签

        docker run -itd --rm --name web -p 80:80 -v /var/webroot:/usr/local/nginx/html myos:nginx

容器间通信

        模式:

        bridge  默认模式

        host  与宿主机共享网络

        none  无网络模式

        container  共享其他容器的网络命名空间

        自定义网络

container:

        格式:参数  --network=container:容器名称

        docker run -itd --rm --name php --network=container:web myos:php-fpm

使用卷共享网络命名空间:

        docker run -itd --rm --name php --network=container:web \

        -v /var/webroot:/usr/local/nginx/html myos:php-fpm

微服务

        不是技术而是架构思想,它以容器技术为载体,演进出一种以软件运行环境、产品、研发、运营为一体的全新模式。从 Docker 角度来说,软件就是容器的组合,而容器又是服务的最佳载体,一台计算机同时运行多个容器从而就能很轻松地实现复杂的架构。

        Compose 是一个用于定义和运行多容器的应用工具。

创建项目文件:

[root@docker ~]# vim docker-compose.yaml

name: myweb                                                #项目名称

version: "3"                                                    #语法格式版本

services:                                                        #关键字,定义服务

  websvc:                                                       #服务名称            

    container_name: nginx                              #服务容器    

    image: myos:nginx                                    #创建容器使用的镜像

compose子命令:

指令说明
up创建项目并启动容器
ls列出可以管理的项目
images列出项目使用的镜像
ps显示项目中容器的状态
logs查看下项目中容器的日志
start/stop/restart启动项目/停止项目/重启项目
down删除项目容器及网络

compose语法:

指令说明
container_name指定容器名称
image指定为镜像名称或镜像 ID
ports暴露端口信息
volumes数据卷,支持 [volume、bind、tmpfs、npipe]
network_mode设置网络模式
environment设置环境变量
restart容器保护策略[always、no、on-failure]
command覆盖容器启动后默认执行的命令
healthcheck配置服务健康检测
depends_on服务依赖关系 services_[started、healthy、completed_successfully]

容器服务编排:

[root@docker ~]# vim docker-compose.yaml 

name: myweb

version: "3"

services:

  websvc:

    container_name: nginx

    image: myos:nginx

    ports:                                                                 #端口绑定

      - 80:80                                                             #宿主机端口:容器端口

    environment:                                                     #设置环境变量

      - "TZ=Asia/Shanghai"                                     #环境变量

    volumes:                                                           #卷

      - type: bind                                                     #卷类型

        source: /root/conf/nginx.conf                       #宿主机路径

        target: /usr/local/nginx/conf/nginx.conf        #容器路径

      - type: bind

        source: /var/webroot

        target: /usr/local/nginx/html

  phpsvc:                                                              #服务名称

    container_name: php                                       #容器名称

    image: myos:php-fpm                                      #创建容器使用的镜像

    restart: always                                                 #容器重启策略

    network_mode: "service:websvc"                    #网络工作模式

    volumes:                                                          #卷

      - type: bind                                                     #卷类型

        source: /var/webroot                                    #宿主机路径

        target: /usr/local/nginx/html                         #容器路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值