IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> [Util]-Docker使用简介 -> 正文阅读

[系统运维][Util]-Docker使用简介


Docker是一个开源的应用容器引擎。

Docker简介

Docker采用C/S架构模式,使用远程API来管理和创建Docker容器。
docker-structure

镜像

docker镜像可理解为包含了OS文件系统和应用的对象,等价于未运行的容器。

使用WSL2版本docker时,会创建两个镜像(wsl -l -v):

PS C:\WINDOWS\system32> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

docker-desktop是存放程序的,docker-desktop-data是存放镜像的。

相关命令

镜像操作命令(image-id为镜像ID,类似UUID):

  • docker images:查看本机上的镜像;
  • docker pull <image>[:tag]:拉取镜像;
  • docker rmi <image-id>:移除镜像;移除所有镜像
  • docker tag <image-id> <image>:<new-tag>:重命名镜像docker rmi $(docker images -q)
  • docker save <image-id> > file.tar:保存镜像;
  • docker load < file.tar:加载镜像;

拉取镜像

使用docker pull <image>[:tag]拉取镜像(忽略tag时为d最新的,即latest);如要拉取最新的mysql镜像:

docker pull mysql

修改镜像位置

修改镜像存放位置需要:

  • 备份原来的镜像;

    wsl --export docker-desktop D:\Programme\docker\docker-desktop.tar
    wsl --export docker-desktop-data D:\Programme\docker\docker-desktop-data.tar
    
  • 删除镜像;

    wsl --unregister docker-desktop
    wsl --unregister docker-desktop-data
    
  • 重新创建镜像;

    wsl --import docker-desktop D:\Programme\docker\desktop D:\Programme\docker\docker-desktop.tar --version 2
    wsl --import docker-desktop-data D:\Programme\docker\desktop-data D:\Programme\docker\docker-desktop-data.tar --version 2
    

修改镜像存放位置后需要重启docker服务。

容器

镜像拉到本地后,通过即可运行以启动容器:

docker run -it <image> <cmd>

cmd为运行的命令:

  • linux下一般为/bin/bash
  • windows下一般为pwsh.exe

启动后会自动切换进入到容器中(执行bash时)。

相关命令

容器操作相关命令:

  • 查看容器:docker ps查看运行容器,docker ps -a查看所有容器;
  • 运行容器:docker run -it <image> <cmd>
  • 连接已运行容器:docker exec -it <container-id> <cmd>
  • 启动容器:docker start <image>
  • 停止容器:docker stop <container-id>,停止所有容器docker stop $(docker ps -a -q)
  • 删除容器:docker rm <container-id>,删除所有容器docker rm $(docker ps -a -q)

docker run

docker run创建一个新的容器并运行一个命令:

docker run [options] <image> [command] [arg...]

options:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • –name=“nginx-lb”: 为容器指定一个名称;
  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars”: 指定容器的hostname;
  • -e username=“ritchie”: 设置环境变量;
  • –env-file=[]: 从指定文件读入环境变量;
  • –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
  • -m :设置容器使用内存最大值;
  • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • –link=[]: 添加链接到另一个容器;
  • –expose=[]: 开放一个端口或一组端口;
  • –volume , -v: 绑定一个卷

docker exec

docker exec在已运行的容器中执行命令:

docker exec [options] <container-id> [command] [arg...]

options(常使用-it来连接已运行容器,用于执行命令):

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

docker ps

docker ps用于列出容器:

docker ps [options]

options:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容,条件以key=value形式。
  • –format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器(如ps -n 3列出3个容器)。
  • –no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小

获取名称包含‘develop’,且状态为exited或dead的容器ID:

docker ps -q --filter name=.*develop.* --filter status=exited --filter status=dead

docker cp

在容器与主机间复制文件(文件夹时自动复制子文件):

docker cp [OPTIONS] container:src_path dest_path
docker cp [OPTIONS] dest_path container:src_path  

容器中的路径是相对于容器的根目录(/)的;主机路径是相对于当前目录的。

options:

  • -a: 存档模式(复制所有uid/gid信息)
  • -L: 保持源目标中的链接

docker命令

所有docker命令都是docker + <cmd>(cmd用于区分不同类型命令),基本命令:

  • docker version:显示docker信息(Client与Server的版本、系统架构等);
  • docker info:显示docker相关系统信息(运行、暂停、停止的容器数量、镜像数量,存储驱动类型,硬件信息等);

容器生命周期管理

容器生命周期相关命令:

  • run:运行一个容器;
  • start/stop/restart:启动、停止、重启容器;
  • kill:杀掉容器;
  • rm:删除容器;
  • pause/unpause:暂停、恢复容器;
  • create:创建新的容器;
  • exec:在运行容器中执行命令;

容器操作

容器相关操作:

  • ps:列出容器;
  • inspect:获取容器/镜像的元数据;
  • top:查看容器中运行的进程信息;
  • attach:连接到正在运行的容器;
  • events:从服务器获取实时事件;
  • logs:获取容器日志;
  • wait:阻塞运行直到容器停止,然后打印出其退出码;
  • export:导出文件系统为一个tar文件;
  • port:累出指定容器得到端口映射;

容器rootfs命令

  • commit:从容器中创建一个新的镜像
  • cp:容器与主机间的数据拷贝;
  • diff:检查容器里文件结构的更改;

镜像仓库

镜像仓库相关操作:

  • login/logout:登录、登出镜像仓库;
  • pull:从江西仓库中拉取或更新指定镜像;
  • push:将本地镜像上传到镜像仓库;
  • search:从docker hub查找镜像;

本地镜像管理

本地镜像相关操作:

  • images:列出本地镜像;
  • rmi:删除本地镜像;
  • tag:标记本地镜像;
  • build:使用dockerfile创建镜像;
  • history:查看镜像创建历史;
  • save:将制定镜像保存为tar文件;
  • load:导入save保存的tar镜像文件;
  • import:从归档文件中创建镜像;
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 12:08:59  更:2021-10-08 12:11:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/4 18:24:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码