Docker基础

发布于:2025-09-02 ⋅ 阅读:(15) ⋅ 点赞:(0)

Docker

在这里插入图片描述

ubuntu安装最新官方版本Docker

第一步 首先卸载Ubuntu上已有的Docker组件

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

第二步 设置 Docker apt 资源库

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

第三步 安装 Docker 软件包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

第四步 运行 hello-world 映像,验证安装是否成功

sudo docker run hello-world

配置加速镜像源

/etc/docker/中新建文件daemon.json,在其中添加以下条目

{
	"registry-mirrors": [
		"https://docker.mirrors.ustc.edu.cn",
		"https://docker.xuanyuan.me",
		"https://docker.nju.edu.cn"
	]
}

添加完成后重启服务

systemctl daemon-reload
systemctl restart docker

重启后完成配置

Docker常用命令

查看Docker的版本信息和系统信息

docker version    # 查看版本信息
docker info		  # 查看系统信息

查看本地已下载(保存)的所有镜像

docker images [-a,-q]    # -a显示所有镜像  -q仅显示镜像id

REPOSITORY:镜像仓库源

TAR:镜像标签

IMAGE ID:镜像的id

CREATED:镜像创建时间

SIZE:镜像的大小

镜像操作命令

在 DockerHub 中搜索和下载
docker search 镜像名称 [--filter-stars=3000]    # 筛选出搜索镜像中stars大于3000的
docker pull 镜像名[:tag] 		# 不写tag默认最新版本
删除
docker rmi -f 镜像id			# 删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id     # 删除多个镜像(空格分开)
docker rmi if $(docker images -aq)   # 删除全部镜像
打包新镜像
docker commit --change="WORKDIR /root" -c 'CMD ["python","main.py"]' 容器名 新镜像名:标签

–change 可以输入DockerFile命令,以上命令为修改镜像的工作目录和启动后执行命令

# Dockerfile
FROM 镜像名:标签   #要改动命令的镜像
	WORKDIR /root/   #执行命令的工作目录路径
	CMD ["python","main.py"]    # 要更改的命令
登录和上传镜像到 DockerHub
docker login 			# 登录到 DockerHub
docker push 镜像名:tag		# 上传镜像
docker logout			# 从 DockerHub 登出
保存镜像为一个压缩包
docker save -o 保存的目录与文件名称.tar 镜像名
从本地加载镜像
docker load -i 保存的目录与文件名称

容器操作命令

新建容器
docker run [可选参数] 镜像名:版本号
# -d: 后台运行容器,并返回容器ID
# -t: 为容器重新分配一个伪输入终端
# -i: 以交互模式运行容器
# -it: 通常 -i 与 -t 同时使用,简写为 -it ,此时需要分配一个容器内部的终端(/bin/bash)
# -P: 随机端口映射,容器内部端口随机映射到主机的端口
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# -v: 映射主机目录到容器内部指定位置
# -name=“名称”: 为容器指定一个名称
# -dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致
# -e username=“ritchie”: 设置环境变量
# -env-file=[]: 从指定文件读入环境变量
# -m : 设置容器使用内存最大值
列出所有正在运行的容器
docker ps [-a,...]     
# -a    列出当前正在运行的加上历史上运行过和没有运行的容器
# -p    只显示容器的编号
# -n=个数  显示最近运行的容器个数
删除容器
docker rm [-f] 容器id			# 删除未运行的容器,要删除正在运行的容器,需要添加 -f 参数强制执行
docker rm -f $(docker ps -aq)       # 删除所有的容器
docker ps -a -q|xargs docker rm     # 删除所有的容器
启动和停止容器的操作
docker start 容器id     # 启动容器
docker restart 容器id   # 重启容器
docker stop 容器id      # 停止当前正在运行的容器
docker kill 容器id      # 强制停止当前容器
后台启动容器
docker run -d 容器id/容器名       # 后台启动指定容器
暂停与恢复一个运行的容器
docker pause/unpause 容器id/容器名
设置容器自启动
  1. 未有的容器
docker run [选项] 名称 --restart=always 镜像
  1. 已有的容器
docker update --restart=always 容器id/容器名
查看容器内部进程信息
docker top 容器id/容器名
进入当前正在运行的容器
docker exec -it 容器id/容器名 容器内终端路径    # 进入容器并开启一个新的终端,关闭终端不会关闭容器
# 例如 docker exec nginx /bin/bash

docker attach 容器id/容器名        # 进入容器正在执行的终端,不会启动新的终端,关闭终端也会关闭容器 

在终端中使用Ctrl+PQ可以临时退出当前终端
容器和主机文件拷贝
docker cp 容器id:容器内路径 目的主机的路径
docker cp 主机的源文件路径 目的容器id:容器内路径
查看容器系统状态
docker stats [容器id]
查看容器日志
docker logs -tf --tail 容器id    # -t:打印时间 -f:实时追踪日志 --tail:显示指定的日志条数

容器的数据卷操作命令

创建数据卷
docker volume create 数据卷名称

创建数据卷之后默认会存放在该目录下: /var/lib/docker/volumes/数据卷名称/_data

查看数据卷的详细信息
docker volume inspect 数据卷名称
查看主机中全部的数据卷
docker volume ls
删除数据卷
docker volume rm 数据卷名称
挂载数据卷

挂载已有数据卷

docker run -v 数据卷名称:容器内部路径 镜像id

挂载未创建数据卷的某一个目录

docker run -v 主机路径:容器内部路径 镜像id		# 直接在创建容器时使用 `-v` 选项挂载指定目录到容器中

网站公告

今日签到

点亮在社区的每一天
去签到