ubuntu使用Docker笔记
一、参考资料
1、B站视频
尚硅谷Docker实战教程2、有心人整理的笔记
Docker笔记(周阳版)3、菜鸟教程
Docker 教程
以下是本人的折腾实践。
二、Docker的安装
- 2.1、使用清华源安装docker,清华源官方教程。
本人是在ubuntu20.04下安装的。- 1、如果你过去安装过 docker,先删掉:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
- 2、安装依赖:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg
- 3、信任 Docker 的 GPG 公钥并添加仓库:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL http://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 4、开始安装
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 2.2、手动安装Docker(适用于无法联网的电脑)
- 1、打开清华大学docker-ce开源镜像。
- 2、选择操作系统。根据自己的系统选择,我这里选linux。
- 3、选择ubuntu版本,进入
dists/focal/pool/stable/amd64/
目录。 - 4、下载deb文件: Docker Engine, CLI, containerd, Docker Compose:
- containerd.io_{version}_{arch}.deb
- docker-ce_{version}_{arch}.deb
- docker-ce-cli_{version}_{arch}.deb
- docker-buildx-plugin_{version}_{arch}.deb
- docker-compose-plugin_{version}_{arch}.deb
- 5、安装deb
sudo dpkg -i ./containerd.io_{version}_{arch}.deb \ ./docker-ce_{version}_{arch}.deb \ ./docker-ce-cli_{version}_{arch}.deb \ ./docker-buildx-plugin_{version}_{arch}.deb \ ./docker-compose-plugin_{version}_{arch}.deb
- 2.3、如果你不想每次使用docker时都输入sudo,你可以将你的用户添加到docker组:
sudo usermod -aG docker $USER
然后,你需要注销并重新登录,或者重新启动系统,以便更改生效。之后,你就可以直接使用Docker命令,不需要再加sudo。
三、Docker Hub镜像加速
如果执行docker pull
时,无法拉取到镜像,可以通过修改Docker Hub的源为国内源来进行加速。
3.1、临时使用指定的源拉取镜像,可使用:
docker pull 镜像名称 -–registry-mirror=国内镜像源地址
3.2、永久使用指定的源
- 1、需新增或编辑 Docker 的服务文件:
sudo vim /etc/docker/daemon.json
- 2、在该文件中添加以下内容:
{ "registry-mirrors": ["http://docker.mirrors.ustc.edu.cn"] }
3.3、重启 Docker 服务以应用更改:
sudo systemctl daemon-reload sudo systemctl restart docker
3.4、附上国内Docker Hub 镜像加速器列表:
镜像加速器 镜像加速器地址 是否专属加速器 是否其它加速 Docker 中国官方镜像 http://registry.docker-cn.com Docker Hub DaoCloud 镜像站 http://f1361db2.m.daocloud.io 可登录,系统分配 Docker Hub Azure 中国镜像 http://dockerhub.azk8s.cn Docker Hub、GCR、Quay 科大镜像站 http://docker.mirrors.ustc.edu.cn Docker Hub、GCR、Quay 阿里云 http://.mirror.aliyuncs.com 需登录,系统分配 Docker Hub 七牛云 http://reg-mirror.qiniu.com Docker Hub、GCR、Quay 网易云 http://hub-mirror.c.163.com Docker Hub 腾讯云 http://mirror.ccs.tencentyun.com Docker Hub 3.5、检查加速器是否生效
docker info
如果从结果中看到了如下内容,说明配置成功:
Registry Mirrors: [...] http://registry.docker-cn.com/
3.6、Docker Hub 镜像测速
使用镜像前后,可使用time
统计所花费的总时间。测速前先移除本地的镜像,如测试拉取ubuntu20.04的镜像:time docker pull ubuntu:20.04
四、Docker的卸载
- 4.1、卸载 Docker Engine, CLI, containerd, and Docker Compose packages:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
- 4.2、删除残留的配置文件
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
五、Docker的简单使用
# 拉取ubuntu20.04镜像:
docker pull ubuntu:20.04
# 以ubuntu20.04镜像运行一个容器:
# 参数说明:
# -i: 以交互式操作运行; -t: 以终端方式运行; -d: 后台运行;
# -p 主机端口:容器端口 (建立主机和容器之间的端口映射);
# --name: name (指定容器的名字);
docker run -itd -p 15901:5901 --name ubuntu-test ubuntu:20.04 /bin/bash
# 进入后台运行的容器
docker exec -it ubuntu-test /bin/bash
六、Docker常用命令
6.1、帮助、启动类命令
- 1、启动docker
# 启动dokcer sudo systemctl start docker # 停止docker sudo systemctl stop docker # 查看docker状态 sudo systemctl status docker # 开机启动 sudo systemctl enable docker
- 2、查看docker信息
# 查看docker概要信息 docker info # 查看docker总体帮助文档 docker --help # 查看具体命令帮助 docker 具体命令 --help
6.2、镜像命令
- 6.2.1、列出本地主机上的镜像
# 查看已有镜像 docker images # 列出镜像所有信息 docker images -a # 只列出镜像id docker images -q
- 6.2.2、从docker-hub中查找指定的镜像
docker search 镜像名
- 6.2.3、从docker-hub拉取镜像
docker pull 镜像名[:TAG]
- 6.2.4、查看镜像/容器/数据卷所占的空间
docker system df
- 6.2.5、删除镜像
docker rmi 镜像名字/镜像id # 删除多个 docker rmi -f img1:tag img2:tag # 删除全部 docker rmi -f $(docker images -qa)
- 6.2.6、提交容器副本使其成为一个新的镜像
docker commit -m "提交描述信息" -a "作者" 容器id 要创建的img:[tag]
6.3、容器命令
- 6.3.1、启动并运行一个容器
docker run [options] IMAGE [command] [args...]
options说明:
--name 容器名
: 给容器指定一个名字
-d
: 后台运行容器并返回容器id,也即启动守护式容器(后台运行)
-i
: 以交互式模式运行容器,通常与-t同时使用
-t
: 为容器重新分配一个伪输入终端,通常与-i同时使用(也即启动交互式容器,前台有伪终端,等待交互)
-P
: 随机端口映射
-p 主机端口:容器端口
: 指定端口映射- 6.3.2、列出当前所有运行的容器
docker ps [options]
options说明:
-a
: 列出当前所有正在运行的容器 + 历史上运行过的容器
-l
: 显示最近创建的容器
-n
: 显示最近n个创建的容器
-q
: 静默模式,只显示当前运行的容器id6.3.3、退出容器
两种退出方式:run进入容器,exit退出,容器停止
run进入容器,ctrl+p+q退出,容器不停止
6.3.4、启动已停止运行的容器
docker start 容器id/容器名
- 6.3.5、重启容器
docker restart 容器id/容器名
- 6.3.6、停止容器
docker stop 容器id/容器名
- 6.3.7、强制停止容器
docker kill 容器id/容器名
- 6.3.8、删除已停止的容器
docker rm 容器id/容器名
强制删除(不管是否在运行)
docker rm -f 容器id/容器名
- 6.3.9、启动守护式容器(后台服务器)
docker run -d 容器id/容器名
- 6.3.10、查看容器日志
docker logs 容器id/容器名
- 6.3.11、查看容器内运行的进程
docker top 容器id/容器名
- 6.3.12、查看容器内部细节
docker inspect 容器id/容器名
- 6.3.13、进入正在运行的容器并以命令行交互
docker exec -it 容器id/容器名 shell
docker exec退出后,不会导致容器停止。
重新进入容器
docker attach 容器id/容器名
退出后,会导致容器停止。
- 6.3.14、容器和主机之间拷贝文件
# 从容器拷贝到主机 docker cp 容器id:容器内路径 目的主机路径 # 从主机拷贝到容器 docker cp 主机路径 容器id:容器内路径
- 6.3.15、导出容器
docker export 容器id/容器名 > xxx.tar
- 6.3.16、导入容器
cat xxx.tar | docker import - 镜像仓库路径/镜像名:镜像版本号