Docker学习
Docker 命令集合:安装Docker - 飞书云文档
Ubuntu22 安装
参考:Ubuntu22 安装
卸载旧版本
1
apt-get remove docker docker-engine docker.io containerd runc
更新软件包
1
2sudo apt update
sudo apt upgrade安装docker依赖
1
apt-get install ca-certificates curl gnupg lsb-release
添加Docker官方GPG密钥
1
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
添加Docker软件源
1
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
安装docker
1
apt-get install docker-ce docker-ce-cli containerd.io
配置用户组(可选)
1
2
3
4sudo usermod -aG docker $USER
应用完之后可以刷新docker组权限或logout重登账号刷新权限
newgrp docker
logout
换源:
可用源
阿里云:https://registry.cn-hangzhou.aliyuncs.com
腾讯云:https://mirrors.tencent.com/docker
华为云:https://mirror.ccs.tencent.com/dockerhub
中国科技大学:https://docker.mirrors.ustc.edu.cn/
豆瓣(Douban):https://dockerhub.douban.com/换源
打开或创建
daemon.json
文件。这个文件通常位于/etc/docker/
目录下,如果没有创建daemon.json
文件就自己创建一下。编辑daemon.json
:1
sudo vim /etc/docker/daemon.json
在
daemon.json
文件中添加以下内容,将MIRRORS
替换为你选择的镜像源:1
2
3{
"registry-mirrors": ["https://MIRRORS.mirror.com"]
}例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
有用:
{
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"default-shm-size": "1G",
"debug": true,
"experimental": false,
"registry-mirrors":[
"https://x9r52uz5.mirror.aliyuncs.com",
"https://dockerhub.icu",
"https://docker.chenby.cn",
"https://docker.1panel.live",
"https://docker.awsl9527.cn",
"https://docker.anyhub.us.kg",
"https://dhub.kubesre.xyz"
]
}保存重启
其他可能操作:
编辑
/etc/resolv.conf
文件,添加以下内容:1
2nameserver 8.8.8.8
nameserver 8.8.4.4重启docker
1
2sudo docker daemon-reload
sudo systemctl restart docker
安装后尝试运行:
- 运行
1 | systemctl start docker |
- 安装工具
1 | apt-get -y install apt-transport-https ca-certificates curl software-properties-common |
- 重启docker
1 | service docker restart |
- 验证是否成功
1 | sudo docker run hello-world |
常见命令
镜像管理
1 | 1 下载、上传 |
容器管理
1 | 创建、开始、停止、重启、查看、删除 |
数据卷
命令 | 说明 |
---|---|
docker volume create | 创建数据卷 |
docker volume ls | 查看所有数据卷 |
docker volume rm | 删除指定数据卷 |
docker volume inspect | 查看某个数据卷的详情 |
docker volume prune | 清除数据卷 |
注意:容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建。
/var/lib/docker/volumes
这个目录就是默认的存放所有容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data
。
1 | 范例 |
网络管理
1 | 创建容器时就加入某个网络 |
命令 | 说明 |
---|---|
docker network create [netname] | 创建一个网络 |
docker network ls | 查看所有网络 |
docker network rm | 删除指定网络 |
docker network prune | 清除未使用的网络 |
docker network connect | 使指定容器连接加入某网络 |
docker network disconnect | 使指定容器连接离开某网络 |
docker network inspect | 查看网络详细信息 |
Docker File
dockerfile
是用来指定镜像结构的,镜像结构是一种层结构,下层往往是上层的依赖或环境。一般的镜像结构可以分为:系统层、环境变量层、编程环境层、应用层。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./xx.jar /tmp/app.jar |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
1 | # 指定基础镜像 |
在已经打包的镜像进一步制作镜像:
1 | # 基础镜像 |
构建镜像:
1 | # 直接指定Dockerfile目录 |