随手记点笔记,不全,自用

Docker

基础命令

服务相关命令

  • systemctl start docker
  • systemctl stop docker
  • systemctl restart docker
  • systemctl status docker
  • systemctl enable docker 为 docker 服务设置开机自启

镜像相关命令

  • docker images 查看本地镜像
  • docker search 镜像名称 搜索镜像
  • docker pull 镜像名称:版本号 从 docker 仓库拉取某版本的镜像到本地
  • docker build 创建 dockerfile 镜像

容器相关命令

  • docker ps -a 查看所有本地容器

  • 举例:docker run -it --name=cl centos:7 /bin/bash 创建一个名为 cl 的 centos7 的容器并以 bash 这个 shell 进入交互式界面

    • exit 可以退出容器但会使带-t 参数的交互式容器停止,所以要避免-t 参数的使用,但是可以使用^p^q 来退出而不结束容器
  • docker run -id --name=cl centos:7 创建一个名为 cl 的 centos7 的容器在后台运行(守护式容器)

  • docker attach 容器名

    • docker exec 容器名 用此命令进入容器,退出后容器不会停止
  • docker start 容器名 重新启动已存在的容器

  • docker stop 容器名 关闭容器

  • 删除所有容器的示例命令(慎用):docker rm ‘docker ps -aq’

  • docker inspect 容器名 查看容器信息

数据卷(挂载)

docker run … -v 宿主机目录 : 容器内目录 -v 宿主机目录 : 容器内目录

  • 目录必须是绝对路径
  • 如果目录不存在会自动创建
  • 可以挂载多个数据卷

数据卷容器

  • 使用方法

    • name=A -v /volume
    • –volumes-from A
    • –volumes-from A
    • 即使删除了 A,其余的数据卷也挂在于宿主机,不受影响
  • 作用

    • 容器数据持久化(数据隔离)
    • 客户端和容器数据交换
    • 容器间数据交换

应用部署

MySQL 示例

  • docker run -id \ 守护进程
    -p 3307:3306 \ 映射端口为 3307 与宿主机通信
    –name=mysql \ 镜像名
    -v $PWD/conf:/etc/mysql/conf.d \ 挂载配置目录
    -v $PWD/logs:/logs \ 挂载日志目录
    -v $PWD/data:/var/lib/mysql \ 挂载数据目录
    -e MYSQL_ROOT_PASSWORD=123456 \ 密码环境
    mysql:5.6 镜像和版本

Tomcat 示例

  • docker run -id --name=tomcat
    -p 8080:8080
    -v $PWD:/usr/local/tomcat/webapps
    tomcat

Nginx 示例

  • docker run -id --name=nginx
    -p 80:80
    -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
    -v $PWD/logs:/var/log/nginx
    -v $PWD/html:/usr/share/nginx/html
    nginx

Redis 示例

  • docker run -id --name=redis -p 6379:6379 redis
  • ./redis-cli.exe -h 主机 IP -p 端口

Dockerfile

结构

  • Docker 镜像是由特殊的文件系统叠加而成,底层直接沿用宿主机的 bootfs
  • 第二层为 root 文件系统 rootfs,称为 base image
  • 可以再往上叠加其他镜像文件

制作镜像

  • 容器转镜像

    • docker commit 容器 id 镜像名称 : 版本号
    • docker save -o 压缩文件名称 镜像名称 : 版本号
    • docker load -i 压缩文件名称
  • dockerfile

服务编排 Compose

微服务需要部署多个实例,人工进行过于复杂

使用流程

  • 安装 docker-compose
  • 编写 docker-compose.yml
  • docker-compose up -d 启动即可

私有仓库

搭建流程

  • docker pull registry
  • docker run -id --name=registry -p 宿主端口:容器端口 registry
  • 访问服务器 IP:端口号/v2/_catlog,查看是否有输出{“repositories”:[]}
  • 修改/etc/docker/daemon.json
  • 添加{“insecure-registries”:[“服务器 IP:端口号”]}
  • 重启 docker 服务 systemctl restart docker && docker start registry

上传流程

  • docker tag 镜像名:版本 服务器 IP:端口号/镜像名:版本
  • docker push 服务器 IP:端口号/镜像名:版本

拉取流程

  • docker pull 服务器 IP:端口号/镜像名:版本