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/容器名
设置容器自启动
- 未有的容器
docker run [选项] 名称 --restart=always 镜像
- 已有的容器
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` 选项挂载指定目录到容器中