docker入门笔记(基础版)

2023-11-17

  1. 镜像命令
# 查看docker概要信息
docker info
# 列出本地主机上的镜像
docker images
docker images -a
# 查看远程库的镜像
docker search xx
# 下载镜像`在这里插入代码片`
docker pull xx
docker rmi xx
docker rmi -f xx
# 查看镜像/容器/数据卷所占的空间
docker system df
  1. docker的虚悬镜像:仓库名、标签都是的镜像
  2. 容器命令
# 新建+启动容器
docker run [options] images [command] [arg...]
--name 为容器指定一个名称
-d daemon 启动守护式容器(后台运行)
-i interactive 以交互模式运行容器
-t tty 为容器重新分配一个伪输入终端
   it通常一起使用
-p 端口
例如 docker run -it ubuntu /bin/bash
# 列出当前正在运行的容器
docker ps 
# 列出所有的的容器
docker ps -a
# 列出所有的容器名
docker ps -q
# 重新启动已停止的容器
docker start xx
# 重启容器
docker restart xx
# 停止容器
docker stop xx
# 强制停止容器
docker kill xx
# 删除已停止的容器
docker rm xx
# 强制删除容器
docker rm -f xx
# 例如删除所有容器
docker rm -f $(docker ps -a -q)
# 列出日志
docker logs xx
# 查看容器内运行的进程
docker top xx
# 查看容器内部运行细节
docker inspect xx
# 进入运行的容器并以命令行交互
docker exec -it xx /bin/bash
 (这样会在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止)
docker attach xx
 (这样会直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止)
# 将文件从容器拷贝到主机
docker cp xx:容器内路径 目的主机路径
# 导出导入容器
(export导出容器的内容流作为一个tar归档文件,import操作为export的反操作)
# 导出
docker export xx>文件名.tar
# 导入
cat xx.tar | docker import - 镜像用户/镜像名:镜像版本号	
  1. 退出容器
  • run 进去容器,exit退出,容器停止
  • run进去容器,ctrl+p+q退出,容器不停止
  1. UnionFS(联合文件系统)是一种分层、轻量级并且高性能的文件系统,对文件系统的修改作为一次提交来一层层的叠加.
    好处:复用.
  2. docker 镜像加载原理
  • bootfs (boot file system)主要包含bootloader和kernel,是docker镜像的最底层,bootloader主要引导和加载kernel,boot加载完成之后整个内核都在内存中.
  • rootfs(root file system)在bootfs之上,包含典型的linux的/dev,/bin等目录和文件,rootfs就是各种不同的操作系统的发型版,比如ubuntu,centos.
  1. commit
# 更新包管理工具
apt-get update
# 安装vim
apt-get install vim
# commit 新镜像
docker commit -m="提交的描述信息" -a="作者" xx 目标镜像名:[标签名]
# 例如
docker commit -m="add vim " -a="yao" fcbface5f slash/ubuntu:1.3
  1. push到阿里云
# 步骤如下
$ docker login --username=阿里云账号 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/ruoyi-exec/mynginx:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/ruoyi-exec/mynginx:[镜像版本号]
  1. 搭建私服docker resitry
# 下载registry
docker pull registry
# run
docker run -d -p 5000:5000 -v /slash/myregistry/:/tmp/registry --privileged=true registry
# curl验证私服库上有什么镜像(ip为docker的机器的ip)
curl -XGET http://ip:镜像端口(例如上面的5000)/v2/_catalog
# 将docker images改为符合私服的名称规范,例如:
docker tag mynginx:1.1 192.168.1.123:5000/myngnix:1.1
# docker 默认不允许http方式推送镜像,通过配置取消这个限制,就是更改docker这个软件的配置,例如
  "registry-mirrors": [
    "https://djq9mxnw.mirror.aliyuncs.com"
  ],
# 只增加下面这一行即可
  "insecure-registries":["192.168.1.123:5000"]
# 若不生效可重启docker
# push镜像到私服
docker push 192.168.1.123:5000/myngnix:1.1
docker pull 192.168.1.123:5000/myngnix:1.1
  1. 数据卷
  • docker挂载主机目录访问出现permission:denied ,可在挂载目录后加 --privileged=true
  • 挂载目录后删除docker容器后不会删除挂载的数据卷
  • rw:读写(默认)
  • read only 只可读
# 容器卷的继承和共享(父容器就是之前启动过的容器,不管它现在是否在运行都可以继承)
docker run -it --privileged=true --volumes-from 父容器 --name 容器名 镜像
  1. 安装mysql
# 我电脑是苹果arm架构的芯,所以只能装8
docker pull mysql:8
# 在conf文件夹下新建my.cnf文件,目的是统一编码,内容如下
[client]
default-character-set=utf8mb4
[mysqld]
socket=/var/lib/mysql/mysql.sock
collation_server = utf8mb4_general_ci
character_set_server=utf8mb4

#运行docker
docker run -d -p 3306:3306 --privileged=true \
-v /Users/yaoqiang/app/data/mysql/log:/var/log/mysql \
-v /Users/yaoqiang/app/data/mysql/data:/var/lib/mysql \
-v /Users/yaoqiang/app/data/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--name mysql mysql:8
# 查看mysql编码
show variables like 'character%'
  • 如果删除容器以后,重新新建容器挂载目录不变的话,数据还在
  • 如果删了容器后新建启动失败,把data目录下的mysql.sock删了就行
  1. 安装redis
# 拉镜像
docker pull redis:6.0.8
# 主机新建文件夹data和文件redis.conf,redis.conf的内容去官网下载后粘进去
# 启动redis
docker run -d -p 6379:6379 --name myredis --privileged=true \
-v /Users/yaoqiang/app/data/redis/data:/data \
-v /Users/yaoqiang/app/data/redis/redis.conf:/etc/redis/redis.conf \
redis:6.0.8 \
redis-server /etc/redis/redis.conf
  1. 安装nginx
# 拉镜像
docker pull nginx:latest
  • 建好文件夹和各种文件
# nginx.conf内容如下
user  nginx;
worker_processes  1;
worker_rlimit_nofile  65535;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    use epoll; 
    worker_connections  65535;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    charset UTF-8;
    client_max_body_size 300m;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  60;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
# default.conf内容如下
#upstream sisafezuul {
#        server 192.168.11.4:8080 max_fails=2 fail_timeout=30s;
#}

#server {
#        listen 80;
#        server_name sietsafe.ecej.com; 
#        client_max_body_size 10M;
#        rewrite ^(.*)$  https://$host$1 permanent;
#}

 #server {
 #       listen       443 ssl;
 #       server_name etsafeadm.guizhou001.cn;
 #
 #       ssl_certificate cert/etsafeadm.guizhou001.cn.pem;
 #       ssl_certificate_key cert/etsafeadm.guizhou001.cn.key;

 #       ssl_session_cache    shared:SSL:1m;
 #       ssl_session_timeout  5m;
 #
 #       ssl_ciphers  HIGH:!aNULL:!MD5;
 #       ssl_prefer_server_ciphers  on;
 #       location ~* /openapi {
 #            proxy_pass   http://127.0.0.1:9999;
 #       }
 #       location ~* /safety {
 #            proxy_pass   http://127.0.0.1:9999;
 #       }
 #       location / {
 #           root  website/console;
 #           index index.html;
 #       }
 #   }

upstream distributedLock {
    server 10.31.1.36:10010;
    server 10.31.1.36:10086;
}

server {
    listen       80;
    server_name  localhost;

    location / {
       proxy_pass http://distributedLock; 
    }

    location /rewrite {
       rewrite "/" http://127.0.0.1:8888/ break;
    }

    location /mickey.html {
       root   /usr/share/nginx/html/mickey;
    }

    #location ~* .(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css|eot|svg|ttf|woff)$ {
    #   index index.htm index.html;
    #   root /data/nfsdata/website/official;
    #}

    #location / {
    #    index index.htm index.html index.jsp;
    #    proxy_pass http://sisafezuul;
    #}

    #location / {
    #   root   /usr/share/nginx/html;
    #   index  index.html index.htm;
    #}

}
# html文件夹下新建 index.html,内容如下
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
# 启动命令
docker run -d -p 80:80 --privileged=true \
-v /Users/yaoqiang/app/data/nginx/html:/usr/share/nginx/html \
-v /Users/yaoqiang/app/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/yaoqiang/app/data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /Users/yaoqiang/app/data/nginx/logs:/var/log/nginx  \ 
--name nginx nginx
  1. 安装rabbitmq
# 拉镜像
docker pull rabbitmq
# 启动容器
docker run -d --name rabbitmq  -p 5672:5672 -p 15672:15672 \
-v /Users/yaoqiang/app/data/rabbitmq:/var/lib/rabbitmq \
--hostname myRabbit \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq
# 进入容器
docker exec -it 镜像ID /bin/bash
# 安装rabbitmq management管理插件
rabbitmq-plugins enable rabbitmq_management
# 主机访问 http://localhost:15672
# 发现totals和channel看不了,进入镜像
cd  /etc/rabbitmq/conf.d/
# 把这个文件的true改为false,因为没有vim,所以用echo
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
# 退出容器,执行
docker exec -it {rabbitmq容器名称或者id} rabbitmq-plugins enable rabbitmq_management
# restart容器
  1. 安装zookeeper
docker run -d -p 2181:2181 --privileged=true \
-v /Users/yaoqiang/app/data/zookeeper/conf:/conf
-v /Users/yaoqiang/app/data/zookeeper/data:/data
--name myzookeeper zookeeper:3.7.1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker入门笔记(基础版) 的相关文章

随机推荐

  • 坐标移动Python

    A 向左移动 D 向右移动 W 向上移动 S 向下移动 从 0 0 点开始移动 输入 合法坐标为A 或者D或者W或者S 数字 两位以内 非法坐标点需要进行丢弃 如AA10 A1A YAD 等 flag input split for ite
  • python如何快速采集美~女视频?无反爬

    人生苦短 我用python 这次康康能给大家整点好看的不 环境使用 Python 3 8 Pycharm mou歌浏览器 mou歌驱动 gt 驱动版本要和浏览器版本最相近 lt 大版本一样 小版本最相近 gt 模块使用 requests g
  • ARM Mbed网络监控温度

    硬件 软件 介绍 温度测量是最基本 最常执行的测量之一 它可以是房间的温度 人的温度或设备的温度 能够通过Internet远程监视温度具有许多潜在的重要应用 例如 许多老人独自生活 如果他们生病了 可能要过一段时间才能发现他们处于危机中 如
  • 蜡笔小新学java

    javase基础 javase基础持续更新中 标识符 基本数据类型 随机数 算数运算符 Scanner扫描枪 赋值运算符 扩展赋值运算符 关系运算符 逻辑运算符 三元运算符 流程控制语句 if语法 switch语句 流程控制语句之循环结构
  • 基于 PyTorch实现YOLOv5

    目录 The First Article 前言 实现环境 基本流程 数据准备 建立模型 训练模型 模型评估 图片预测 视频预测 The First Article 前言 本文记录基于PyTorch实现Github作者ultralytics的
  • Audience Insights被下架后,Facebook广告定位的最佳替代方案

    从 2021 年 7 月 1 日起 Audience Insights 将不再可用 相反 我们建议人们使用 Facebook Business Suite Insights 该工具可让你访问 Facebook 和 Instagram 上的受
  • zookeeper看这一篇就够了

    第一章 zookeeper简介 第1节 zookeeper的由来 1 2 3 4 1 zookeeper最早起源于雅虎研究院的一个研究小组 2 在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调 并且这个系统还有单点问题 3
  • opencv中match与KnnMatch返回值解释

    match与KnnMatch返回值解释 之前一直不明白match与knnmatch的返回值到底是什么 查阅了一些资料才理解 其实二者都是返回的DMatch类型的数据结构 先说一下 match bf cv BFMatcher create m
  • OpenCv.js(图像处理)学习历程

    opencv js官网 4 5 0文档 以下内容整理于opencv js官网 简介 OpenCV由Gary Bradski于1999年在英特尔创建 第一次发行是在2000年 OpenCV支持c Python Java等多种编程语言 支持Wi
  • linux虚拟机18.04无法使用电脑自带摄像头

    TOC教你怎么正确开启摄像头 首先查看你的window下摄像头是否正常使用 简单操作 可以点击 开始 搜索相机运行 如果运行成功就说明在window下可以正常使用 虚拟机如何调用摄像头 我是linux18 04 可以简单测试一下电脑自带摄像
  • CUDA编程基础

    文章目录 Cuda编程结构 编程语句 获取GPU数量 获取设备属性 设置设备参数 Parameters Parameters 释放与GPU相关的所有资源 主机与设备都可用的内存函数 时间函数 CUDA核函数 函数类型限定符 CUDA核函数的
  • 二、获取数据库连接

    一 Driver 接口 java sql Driver 接口是所有 JDBC 驱动程序需要实现的接口 这个接口是提 供给数据库厂商使用的 不同数据库厂商提供不同的实现 在程序中不需要直接去访问实现了 Driver 接口的类 而是由驱动程序管
  • Prime Cuts【预处理】【素数筛法】

    有些东西只有你WA的多了 才有发言权 题记 题面 A prime number is a counting number 1 2 3 that is evenly divisible only by 1 and itself In this
  • SpringBoot中如何在一个模块中引入另一个模块

    SpringBoot中如何在一个模块中引入另一个模块 实例 1 springBoot中有cms dev项目 下面有ai模块和dms模块 而且ai模块中没有启动类 需要将ai引入到dms模块中 解决方案 1 在需要调用的模块的pom文件中添加
  • 关于ElasticSearch的_type类型

    type是es早期版本的设计缺陷 在5 x以前的版本里边 一个index下面是支持多个type的 在6 x的版本里改为一个index只支持一个type type可以自定义 7 x的版本所有的type默认为 doc 自定义type也能用 但是
  • 华兴数控g71外圆循环编程_数控车床G71,G70编程实例(一)

    正明天车也要编 先编好 大多数产品都可以用G71开粗 G70精车 新程序开头一般要取消很多暗中存在的指令 我们家机床就是 据说有一次某新同事没在程序前加G97 导致开机转速过高 产品就飞了出来 把门都砸坏了 人没事 大吉大利 别说后面一句
  • 景联文科技牵头制定的《信息技术 可扩展的生物特征识别数据交换格式 第4部分:指纹图像数据》国家标准启动会暨研讨会在杭州顺利召开

    2023年9月19日 由杭州景联文科技有限公司牵头制定的 信息技术 可扩展的生物特征识别数据交换格式 第4部分 指纹图像数据 国家标准启动会暨起草组工作会议在杭州顺利召开 来自中国电子技术标准化研究院 熵基科技 名光微电子科技 广州麦仑信息
  • RPC实践(四)Dubbo实践

    Dubbo是一款重要的RPC框架 它是Alibaba开源的分布式服务框架 它主要特点 提供了注册中心来进行服务的管理 支持zookeeper redis等方式来实现注册中心 Dubbo按照分层的方式来架构 使用这种方式可以使各个层之间解耦合
  • Ubuntu18.04/20.04 Mendeleydesktop 安装及问题解决

    文章目录 安装 Issue Reference 安装 下载最新版本 Download Mendeley Desktop for Ubuntu Debian 32 Bit Download Mendeley Desktop for Ubunt
  • docker入门笔记(基础版)

    镜像命令 查看docker概要信息 docker info 列出本地主机上的镜像 docker images docker images a 查看远程库的镜像 docker search xx 下载镜像 在这里插入代码片 docker pu