docker 学习之路


文章目录


1、官方文档

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Reference documentation | Docker Documentation
docker | Docker Documentation

2、常用命令

Docker 容器的一些命令按功能分类大致如下:

Docker环境信息 info、version

镜像仓库命令 login、logout、pull、push、search

镜像管理 build、images、import、load、rmi、save、tag、commit

容器生命周期管理 create、exec、kill、pause、restart、rm、run、start、stop、unpause

容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update

容器资源管理 volume、network

系统信息日志 events、history、logs

1. events打印容器的实时系统事件

2. history 打印出指定镜像的历史版本信息

3. logs打印容器中进程的运行日志

docker --help #查看docker命令

docker info #docker 详细信息,镜像和容器

docker version #查看docker版本

挂载

bash 复制代码
docker run -it -v /home/test:/home centos /bin/bash

dockers run -v /容器外部文件夹路径:容器内部文件夹路径 -v 容器外部文件夹路径:容器内部文件夹路径 ... ...

设置容器内文件权限:

:ro #只读,只能通过宿主机来操作文件,容器内部无法操作!

:rw #可读可写, 默认

Docker容器内运行的脚本或命令

docker run bash -c的语法格式和参数

bash 复制代码
docker run [OPTIONS] IMAGE_NAME bash -c "COMMAND"

常用

bash 复制代码
# 帮助
docker run --help

# exec:进入容器后,开启一个新的终端,可以再里面操作
docker exec -it 容器id bashShell(/bin/bash)
# attach:进入容器正在执行的终端,不会启动新的终端进程
docker attach 容器id bashShell(/bin/bash)
# 容器内拷贝文件到主机
docker cp 容器id:容器内路径  目的主机路径
 
# ==========================================================
#新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos 镜像名称/镜像ID
docker run -it -v /home/test:/home ubuntu:22.04 /bin/bash
docker run -it -v /home/test:/home:ro ubuntu:22.04 /bin/bash
 
#后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos
 
-t 参数让Docker分配一个伪终端并绑定到容器的标准输入上
-i 参数则让容器的标准输入保持打开。
-c 参数用于给运行的容器分配cpu的shares值
-m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位
-v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume
-p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port
--name 容器名称
--net 容器使用的网络
-d 创建一个后台运行容器
--privileged 使容器具有root权限进行进程fork
 
#使用run方式在创建时进入
docker run -it centos /bin/bash
#关闭容器并退出
exit
 
# ==========================================================
#启动止容器
docker start 容器id
# 重启容器
docker restart 容器id
# 关闭容器
docker kill 容器id
docker stop 容器id
 
# 查看正在运行的容器
docker ps
# 查看所有容 包括停止的容器
docker ps -a
# -q参数,只显示container id
docker ps -q
# 查看容器详细信息
docker inspect demo1
 
docker images -a            #列出本地所有的镜像
docker images -q            #只显示镜像ID
docker images --digests     #显示镜像的摘要信息
docker images --no-trunc    #显示完整的镜像信息
 
# 保存镜像  -a 提交人的姓名  -m "提交内容",格式如:docker  commit  -a  -m  现有容器ID     保存后的名称:版本号
docker commit  7ca736d99653    yolov5:v6.2 
docker commit -a "xiaoming"   -m "Update target detection model" 7ca736d99653    yolov5:v6.2
# 打包tar docker save -o  tar文件名称     镜像REPOSITORY:TAG
docker save -o yolov5-v6.2.tar yolov5:v6.2
# 加载tar镜像
docker load -i yolov5-v6.2.tar
# ==========================================================
# 查看redis容器日志,默认参数
docker logs tomcat
# 查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
# 查看容器redis从2021年08月10日后的最新10条日志。
docker logs --since="2021-08-10" --tail=10 redis
 
# ==========================================================
docker search tomcat    # 从Docker Hub上查找tomcat镜像
STARS:                 # 关注度
docker search --filter=stars=300 tomcat     #从Docker Hub上查找关注度大于300的tomcat镜像
 
docker pull tomcat      #从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:docker pull tomcat:latest
docker pull tomcat:8  # 选择指定版本下载
 
# ==========================================================
#单个镜像删除,相当于:docker rmi java:latest
docker rmi java
#强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除)
docker rmi -f java
#多个镜像删除,不同镜像间以空格间隔
docker rmi -f java tomcat nginx
#删除本地全部镜像
docker rmi -f $(docker images -q)

docker 常用命令
Docker 的挂载 -v参数 - 知乎

3、介绍

docker保存的镜像在哪儿
5步搞定 Windows 10 docker WSL2的镜像存储位置的修改

docker四种网络模式
Docker四种网络模式

docker修改容器网络模式
Docker 【网络】配置dns
Docker的网络配置 2 配置 DNS和主机名

4、Dockerfile

docker保存镜像、打包tar、加载tar镜像
Dockerfile详解超全
Dockerfile文件全面详解
Dockerfile制作镜像
使用DockerFile来制作镜像

5、问题

docker 中遇到fork/exec /bin/sh: operation not permitted错误
解决docker容器无网络、无法连接互联网----长期更新
Docker pull镜像一直在Waiting无法下载,根本解决方法
docker 镜像源大全
清华源

6、链接

Docker 和 Podman的区别

相关推荐
IvanCodes1 小时前
一、Docker:一场颠覆应用部署与运维的容器革命
docker·容器
栗子~~1 小时前
Milvus docker-compose 部署
docker·容器·milvus
椰汁菠萝2 小时前
ubuntu下免sudo执行docker
ubuntu·docker·免sudo
没有名字的小羊3 小时前
2.安装Docker
运维·docker·容器
xiezhr3 小时前
50 个常用 Docker 命令
运维·docker·容器
退役小学生呀9 天前
三、kubectl使用详解
云原生·容器·kubernetes·k8s
API开发10 天前
苹果芯片macOS安装版Homebrew(亲测) ,一键安装node、python、vscode等,比绿色软件还干净、无污染
vscode·python·docker·nodejs·openssl·brew·homebrew
程序员小潘10 天前
Kubernetes多容器Pod实战
云原生·容器·kubernetes
进击的码码码码N10 天前
Docker 镜像加速
运维·docker·容器
Q_w774210 天前
基于 Docker 的服务部署探索(Day 2)
运维·docker·容器