Docker知识汇总
docker安装
安装地址
windows:https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=dd-smartbutton&utm_location=header
MAC:https://desktop.docker.com/mac/stable/amd64/Docker.dmg
Linux:https://docs.docker.com/engine/install/centos/
在CentOS中安装docker
1、删除老版本的Dockers残留
[root@python ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、更换源
[root@python ~]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
[root@python ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3、建立yum源缓存
yum makecache
4、更新操作系统
[root@python ~]# yum update -y --exclud=kernel*
5、安装基础软件
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
6、安装docker yum源
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
7、安装docker
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum -y install docker-ce
8、启动Docker
[root@localhost ~]# systemctl start docker
9、验证Docker
[root@localhost ~]# docker run -p 8080:80 -d nginx
注:测试能够通过8080访问我们的服务器就算成功
Docker镜像
获取镜像
1.下载镜像格式:
docker pull [仓库的URL]/[名称空间]/[仓库的名称]:[版本号]
eg:
docker pull nginx:1.17
或者:
docker pull registry.cn-hangzhou.aliyuncs.com/alvinos/docsfiy:v2
镜像仓库URL:registry.cn-hangzhou.aliyuncs.com(默认:docker.io)
名空间:alvinos(默认:library)
仓库名称:docsfiy
版本号:v2(默认:latest)
2.获取当前系统上所有的docker镜像
docker image ls 或者docker images
-a : 列出系统中所有的临时镜像
--digests=true : 列出系统中所有镜像的数字摘要值
-q : 仅显示镜像ID
3.上传镜像
1.创建阿里云仓库
2.登陆阿里云仓库
docker login [仓库url]
3.修改镜像名称
docker tag [旧镜像tag] [新镜像tag]
4.上传镜像
docker push [镜像tag]
4.查看镜像详细信息
docker inspect [镜像名称|ID]
-f : 获取镜像部分详细信息
5.删除镜像
docker rmi [镜像ID|镜像名称]
-f :强制删除镜像
##清空机器上所有镜像
docker rmi $(docker images -q)
6.镜像导入导出
save和load
格式:
导入:
docker save -o [打包文件名] [镜像名称及版本号]
导出:
docker load < [打包的文件名]
Docker容器
容器(container)
1.运行一个容器
格式:
docker run [参数] [镜像名称|ID] [启动容器执行的命令]
## docker create +docker start = docker run
启动命令:不指定则执行默认的启动命令,指定则执行指定的命令。
镜像名称|ID:可以使用镜像名称,也可以使用镜像ID
参数:
-d : 以守护进程方式运行
-p : (固定)端口映射
-P : (随机)端口映射
-i : 打开标准输出
-t : 创建一个终端
-v : 将宿主主机上的目录映射到容器中
--rm : 当容器的生命周期结束时立即删除容器
--name : 将容器自定义一个容器名称, 将容器的名称加入DNS解析
-e : 设置容器内部的环境变量
-h : 设置容器内部的主机名
--network : 指定使用哪个网络
--link : 链接到另一个容器(不推荐)
#前提:
docker容器启动的前提:至少有一个应用进程运行在前台。
#启动流程:
1、检查本地是否存在需要被使用的镜像,如果存在则直接使用,如果不存在则去公网下载。
2、根据镜像创建容器
2.展示dockers容器列表
格式:
docker ps [参数] #默认情况下展示当前系统上所有的正在运行的容器
参数:
-a : 展示所有的容器
-q : 仅展示容器ID
显示解释:
CONTAINER ID:容器ID
IMAGE :镜像ID|镜像名称
COMMAND :容器启动执行的命令
CREATED :创建距离现在的时间
STATUS :状态
PORTS :端口信息
NAMES :容器的名称
3.删除容器
格式:
docker rm [参数] [容器的名称|ID]
参数:
-f : 强制删除
# 强制删除所有容器
docker rm -f $(dockers ps -a -q)
4.创建容器
格式:
docker create
5.启动容器
格式:
docker start
6.进入容器
1.attach
建立一个宿主主机到容器中pid为1的进程上的一个管道,但是一旦attach断开连接,docker容器随即退出。
2.exec(推荐)
使用其可以在宿主主机上执行一个容器内部的命令。
3.nsenter
建立一个宿主主机和容器之间的一个管道。
4.ssh
使用了 Docker 容器之后不建议使用 ssh 进入到 Docker 容器内。
7.容器文件的复制
格式:
docker cp
1、将文件复制到容器内
docker cp [宿主主机文件路径] [容器名称|ID]:[容器内路径]
2、将容器内文件复制到宿主主机
docker cp [容器名称|ID]:[容器内路径] [宿主主机文件路径]
8.容器导入导出
export和import
格式:
导出:
docker export -o [打包的文件名] [容器ID或名称]
导入:
docker import [文件名] [镜像名称:版本号]
9.import及export 和 save及load之间的区别
1、import可以自定义镜像名称,load则不行
2、save可以同时保存多个镜像,export则不能一次保存多个容器
3、save保存的镜像体积要大于export保存的镜像体积
4、两者之间互不能导入
Docker网络
linux网络
# 创建一个命名空间
ip netns add test01
# 查看创建过的命名空间
ip netns list
# 创建Veth设备对
ip link add veth type veth peer name veth001
# 将Veth设备对分发至test01命名空间
ip link set veth001 netns test01
# 将test01中veth001分配IP
ip netns exec test01 ip addr add 172.16.0.111/20 dev veth001
ip addr add 172.16.0.112/20 dev veth
# 重启veth设备对
ip netns exec test01 ip link set dev veth001 up/down
Docker网络模式
1、HOST模式
使用宿主主机的网卡
docker run --network host [镜像名称|ID]
2、container模式
共享一个容器的网络
docker run -d --network "container:[共享容器名称]" nginx
3、none模式
不为容器提供任何网络。
docker run -d --network none centos
4、网桥
将多个容器使用docker网桥进行地址转换的方式实现网路互通
1、创建网桥
docker network create [网桥名]
2、查看网桥
docker network ls
3、使用网桥
docker run -d --network [网桥名] [镜像]
docker network
1、展示当前主机上网桥列表
docker network ls
2、创建网桥
docker network create
参数:
-d : 指定网桥的类型
--gateway : 指定网关
--subnet : 指定子网
3、查看网桥的详细信息
docker network inspect [网桥名称|id]
4、删除网桥
docker network rm
5、清空空闲的并且是自创的网桥
docker network prune -f
6、连接上一个网桥
docker network connect [参数] [网桥名称] [容器名称]
7、断开链接
docker network disconnect [参数] [网桥名称] [容器名称]