docker技术总结
cnblogs 2024-07-17 08:39:00 阅读 90
一、docker部署安装
1. 设置密钥、增加软件源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
2. 安装docker引擎
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker安装如果出现网络问题无法访问docker.com,可以参考 https://www.cnblogs.com/FFFirer/p/18247403 解决
3. 配置docker镜像源,镜像加速,镜像源出现变动后可参考这个
https://github.com/cmliu/CF-Workers-docker.io/issues/8
或者使用阿里云的镜像加速配置,参考
https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
}
EOF
4. 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
二、image、container相关的docker命令使用
1. image相关包括镜像下载、启动、修改配置、镜像保存、发布等操作
# 检索
docker search [image name]
# 下载。最新版本tag latest
docker pull [name]:[tag]
# 镜像陈列
docker images
# 镜像删除
docker rmi [name]:[tag]
# 镜像保存成指定文件名,并放到当前目录
docker save -o filename.tar [image name]:[tag]
# 镜像从文件处加载,要cd到当前路径
docker load -i filename.tar
# 源镜像重新取指定的名称:标签
docker tag [source image]:[source tag] [target image]:[tag]
2. container相关包含容器运行、启动、查看、停止、重启,进入容器内操作、删除等
# 运行,后台运行,设置容器名,设置端口映射 主机端口:容器端口,运行成功,会返回一个id
docker run -d --name myname -p port:port [image name]:[tag]
# 停止
docker stop [container id]
# 查看所有容器
docker ps -a
# 重启
docker restart [id]
# 启动
docker start [id]
# 查看状态
docker stats [id]
# 进入容器,交互模式
docker exec -it [id] bash
# 查看容器日志
docker logs [id]
# 删除容器,-f可以强制删除
docker rm -f [id]
# 将容器保存成镜像:版本
docker commit [container name] [image name]:[tag]
# 查看容器细节
docker container inspect [id]
其中,启动容器,可以设置参数,参数可以由镜像提供方给出,
三、docker存储配置
容器内部数据管理不容易,且容器销毁后数据即丢失,所以使用挂载、映射方式存储容易丢失的数据。
1. 通过目录挂载形式:以外部机器的目录和容器目录做一个关联关系配置,在启动容器时,使用参数-v配置,可以有多组。
但此时容器内目录的内容,以外界目录为准。也就是说初始阶段,外界目录如果是空的或者还未创建,容器对应目录也是空的。
而外界对应目录只要有变化,新增、删除、修改文件,容器内目录也会有对应变化。容器内有变动,外部也会有变动。
容器如果删除了,外部文件夹还是在的。这样容器如果重新创建,就可以依据外面文件夹的数据,作相应设置。
docker run -d -p port:port -v [local path]/app/dir:[container path]/usr/dir -v [local path2]:[container path2] [image name]:[tag]
2. 卷映射:如果在初始阶段,文件映射要以容器内为准,再把容器内文件夹对应内容映射到外面目录(创建空目录),则使用卷映射方式。使用参数-v配置,可以有多组。
可以看出配置卷,可以理解为只设置了一个文件夹名,这个卷(文件夹)放在主机位置/var/lib/docker/volumes/<volume name>,卷内存储容器内文件,初始过程,如果卷刚创建出来则以容器内文件为准,如果卷已经存在则以卷内文件为准。卷名是不能重复的。在首次启动容器时,将容器中的数据复制到卷中,可以避免被卷覆盖。
在外部,修改卷内文件,容器内也被修改,容器里面修改同理。
容器被删除了,卷还是会存在的。
docker run -d -p port:port -v [volume name]:[container path]/path/dir [image name]:[tag]
# 查看卷
docker volume ls
# 创建卷
docker volume create [volume name]
# 查看卷详情
docker volume inspect [volume name]
四、docker网络配置
docker网络,docker每启动一个容器,都会分配唯一ip,可以使用容器ip+容器端口互相访问。
创建自定义网络,配置网络,可以让容器之间是互通的,可以直接访问,通过容器名访问。
# 创建网络
docker network create [name]
# 查看
docker network ls
# 运行容器时,配置网络
docker run -d -p port:port --network [net name] [container name]:[tag]
# 进入容器内,通过容器名:端口访问
curl http://[container name]:[port]
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。