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]


上一篇: test

下一篇: C++:深入理解多态

本文标签

容器化    docker   


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。