我的docker
环境
Ubuntu 20.04.6 LTS
替换apt
软件包镜像源
修改/etc/apt/source.list
中所有的
http://cn.archive.ubuntu.com/ubuntu
->
https://mirrors.tuna.tsinghua.edu.cn/ubuntu
cd /etc/apt # 备份文件 cp source.list source.list.package # 替换镜像源 sed -i 's/http:\/\/cn\.archive\.ubuntu\.com\/ubuntu\//https:\/\/mirrors\.tuna\.tsinghua\.edu\.cn\/ubuntu\//g' source.list
docker
安装
以apt
包管理器安装docker
sudo apt install docker.io
卸载
如果要卸载
sudo apt-get purge docker.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
以docker
官方存储库安装
- 更新 apt 包索引,并且安装一些软件使得apt可以通过HTTPS协议访问软件库。
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
- 添加
docker
官方的GPG
秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置一个标准的
docker
软件仓库。
# 会在/etc/apt/source.list.d/添加一个叫docker.list的文件 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/dockerarchive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新
apt
包索引并查看docker
可用版本列表
sudo apt-get update apt-cache madison docker-ce
- 安装docker
- 安装特定版本docker语法,例如:
5:24.0.2-1~ubuntu.18.04~bionic
sudo apt-get install docker-ce=<VERSION_STRING> \ docker-ce-cli=<VERSION_STRING> \ containerd.io=<VERSION_STRING> \ docker-compose-plugin=<VERSION_STRING>
- 使用具体版本号代替
sudo apt-get install docker-ce=5:24.0.5-1~ubuntu.20.04~focal \ docker-ce-cli=5:24.0.5-1~ubuntu.20.04~focal \ containerd.io=1.6.21-1 \ docker-compose-plugin=2.20.2-1~ubuntu.20.04~focal
- 或者直接安装最新版
docker-ce
及相关软件
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 检查
docker engine
是否安装正确
sudo docker run hello-world
卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
删除相关目录
sudo rm -rf /var/lib/docker && sudo rm -rf /var/lib/containerd && sudo rm -rf /etc/docker/
添加某用户到docker
组
为了不让每次输入
docker
指令都输入sudo
我们讲用户添加到
docker
组
// 将用户从docker用户组中移除 gpasswd -d <username> docker // 将用户添加到docker 用户组 sudo addgroup -a <username> docker sudo service docker restart // 查看用户信息 id <username>
配置docker
镜像
在
/etc/docker/daemon.json
添加镜像源
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }
docker
命令学习
操作守护进程相关命令
systemctl 操作 docker systemctl enable docker # 开机启动docker
操作镜像相关命令
查看镜像
docker images docker images -q # 显示所有的镜像id
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
仓库(镜像名称) | 版本 | 镜像id (删除时会用) |
创建时间 | 大小 |
搜索镜像
docker search xxxx
在网络上搜索镜像包
拉取镜像
docker pull redis:7.0
- 可以指定版本也可以不指定,不指定的话默认
latest
删除镜像
docker rmi redis
- 可以写名称:版本,也可以写
image id
操作容器相关命令
查看容器
docker ps
显示出正在运行的容器列表
docker ps -a
显示出历史所有运行过的容器列表
docker ps -aq
显示出所有历史运行过的容器列表id
创建容器
docker run -it --name=c1 redis:latest /bin/bash
-i
表示保持容器运行,如果不加的话容器默认状态就为exit
-t
为容器重新分配一个伪输入终端,exit
后容器关闭--name=xx
分配名字redis:latest
指定镜像/bin/bash
进入容器的初始化指令
docker run --id --name=c2 redis:latest
返回容器id
-d
以守护模式运行容器。创建一个容器在后台运行,使用exit
退出后容器不会关闭
-it
创建一个交互式容器,-id
创建一个守护式容器
进入容器
docker exec -it c2 /bin/bash
- 以交互的终端方式进入
c2
启动容器
docker start c2
- 启动
exit
状态的容器
停止容器
docker stop c2
- 关闭已经启动的容器
删除容器
docker rm c1
- 从容器列表中删除容器
docker rm `docker ps -aq`
- 删除所有容器
查看容器信息
docker inspect c2
容器的数据卷
数据卷的概念以及作用
概念
宿主机上有数据卷目录,容器内部也有数据卷目录,容器内部的数据卷目录挂载的是宿主机上的数据卷目录。所以可以回答下面三个问题
docker
容器删除后,在容器中产生的数据也会随之销毁吗
- 相当于不挂载了,只要宿主数据卷还在就行
docker
容器和外部机器可以直接交换文件吗
- 外部机器与宿主的数据卷进行交互间接修改
docker
容器数据
- 容器之间想要进行数据交互
- 不同容器间挂载可以挂载同一个宿主数据卷
一个数据卷可以被多个容器挂载
一个容器可以挂载多个数据卷
Docker学习(下)+https://developer.aliyun.com/article/1416644