Docker 官方镜像仓库
Ubuntu 22.04 下 Docker 安装(最全指引)
安装
以Ubuntu 20.04
为例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| # 安装前先卸载操作系统默认安装的 docker sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装必要支持 sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 使用阿里源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 阿里 apt 源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新源 sudo apt update sudo apt-get update
# 安装最新版本的 Docker sudo apt install docker-ce docker-ce-cli containerd.io
# 查看 Docker 版本 sudo docker version
# 查看 docker 镜像 sudo docker images
# 查看 Docker 运行状态 sudo systemctl status docker
|
要实现远程访问,修改/lib/systemd/system/docker.service
文件:
1 2 3 4 5 6 7 8
| # 找到 ExecStart 配置,注释并复制一行,在末尾加上 -H tcp://0.0.0.0:2375 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
# 保存退出
systemctl daemon-reload service docker restart
|
命令
1 2 3 4 5 6
| docker run -d \ --name mysql \ -p 3307:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql
|
反斜杠代表未换行,所以上面实际是一行命令。每一个Docker命令都以docker
开头,run
表示创建一个容器并运行,-d
是后台运行。--name
给容器起名字,名字必须唯一。-p
是端口映射,外部无法直接访问到容器的端口,所以需要先访问宿主机的3307端口,再映射到镜像的3306端口。-e
是设置容器的环境变量,可以查看文档,时区一般都要改,否则容器内的时间是默认时区。最后的mysql
是指定运行的镜像的名字,完整写法是mysql:5.7
,后面是版本号,省略默认最新版。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # 查看所有本地镜像 docker images
# 删除指定的本地镜像 docker rmi {镜像名}
# 创建容器并运行,见上面的例子 docker run -d {镜像名} docker run -dit {镜像名}
# 运行容器 docker start {容器名}
# 停止容器 docker stop {容器名}
# 销毁容器,需要停止容器才能销毁,或 -f 强制销毁 docker rm {容器名}
# 查看所有容器状态 docker ps docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
# 进入容器内部操作,-it 代表使用可交互终端的方式,bash 代表使用 bash 命令进行交互。也可以直接跟命令 docker exec -it {容器名} bash docker exec -it {容器名} mysql -u root -p
# 查看容器日志 docker logs {容器名} docker logs -f {容器名} # 持续输出日志
# 将指定镜像保存为 saved-image.tar 压缩包 docker save -o saved-image.tar {镜像名}:latest
|
数据卷
由于镜像中只有必要的环境,多数情况下没有vim,要修改容器中的文件,需要用到数据卷挂载,将容器内的目录和宿主机的目录形成映射关系。
数据卷挂载只能在容器创建时设置。
宿主机的/var/lib/docker/volumes
目录下存放所有的数据卷映射,其中/var/lib/docker/volumes/{数据卷名称}/_data
中的文件与映射的容器内目录的文件一致,且保持同步。

1 2 3 4 5 6 7 8 9 10 11
| # 创建数据卷 docker volume create
# 删除指定数据卷 docker volume rm
# 查看所有数据卷 docker volume ls
# 查看某数据卷详情 docker volume inspect
|
在创建容器时添加-v {数据卷名}:{要映射的容器内目录}
:
1 2 3 4 5
| docker run -d \ --name nginx \ -p 80:80 \ -v nginx:/usr/share/nginx/html nginx
|
创建容器时,若挂载了数据卷且数据卷不存在,会自动创建数据卷。
参观我的个人网站:http://saoke.fun