赞
踩
本文将全面说明docker的使用教程,包括docker的简介、原理、常用命令、dockerfile构建、docker compose构建、设置docker下载源和docker使用案例(安装postgres数据库)。通过文本的学习,你将掌握使用docker部署应用的能力。
在日常安装软件的过程中,会遇到各种报错。docker存在的意义就在于更加快速地下载和安装软件
结论:VM要比docker消耗更多的资源
docker就是利用linux的namespace和cgroups特性,实现的内核虚拟化技术
tips:
golang项目的编译无法跨平台,即操作系统不同、cpu内核不同,都会造成错误,“standard_init_linux.go:219: exec user process caused: exec format error”
解决方法:
在build的时候指定platform
docker build --platform linux/amd64 -t hub/xx/xxx:v1 ./
使用模版文件Dockerfile文件可以快速让用户创建一个自定义的容器,但是在实际的项目中,往往需要将多个容器组合起来使用。例如,在web项目中,需要后端、数据库、负载均衡容器等
compose允许用户通过一个单独的docker-compose.yml模版文件,来定义一组关联的容器为一个项目。
version: '3'
services:
redis-server:
image: 'redis'
node-app:
restart: always
build: .
ports:
- "8081:8081"
docker compose up -d --build: 通过docker-compose.yml文件启动项目
docker compose down: 将项目中的所有容器关闭
docker compose ps: 根据docker-compose.yml文件中提及的container,查看container的运行情况(如果该目录下没有docker-compose.yml文件,则会报错“docker-compose.yml not found”)
构建容器的复杂度在于编写Dockerfile,在Dockerfile中定义我们需要构建的容器是怎么样的
# Use an existing docker image as a base
FROM alpine
# Download and install a dependency
RUN apk add --update gcc
RUn apk add --update redis
# Tell the image what to do when it starts
CMD [ "redis-server" ]
以上语句的image构建过程如图所示
在构建的过程中,每一步都会在上一步的基础上构建一个新的image
CMD和ENTRYPOINT同时使用时,CMD作为ENTRYPOINT的追加命令
先执行start.sh脚本进行数据库相关的配置,再执行main程序
CMD ["/app/main"]
ENTRYPOINT ["/app/start.sh"]
新建或编辑daemon.json
vi /etc/docker/daemon.json
daemon.json新增内容
``
{
“registry-mirrors”:[“http://hub-mirror.c.163.com”]
}
``
重启docker服务
systemctl restart docker.service
docker pull postgres:12-alpine
进行postgres镜像安装docker images
查看docker镜像 docker run --name postgres12 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=secret -d postgres:12-alpine
进行postgres实例化docker ps
查看postgres是否成功实例化Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。