Docker相关知识

本文详细介绍了Docker的基础知识,包括镜像与容器的区别,Dockerfile的编写,如何编译生成镜像,以及容器的创建、启动、管理等操作。此外,还讲解了Docker命令的使用,如查看容器状态、资源占用情况,以及镜像和容器的导入导出等。

一、docker镜像,容器的区别

镜像和容器就像编程里面的类和实例的关系,镜像是静态的,容器是动态的,也即是运行起来的

二、docker镜像制作

首先为啥要自己制作,网上不是有很多docker镜像吗? 不适合或者感觉不安全

a、制作流程

        1)创建工作目录,后面所有的工程文件都放置在这个目录下,可以有子目录

 ~/docker/helloworld
|-- Dockerfile
|-- helloworld.go
`-- test
    `-- test.go

        2) 编写Dockerfile文件

               Dockerfile文件是用于制作docker镜像的脚本文件,里面都是docker内置命令,例如:指定基础镜像、安装依赖的软件、配置环境变量等,具体可以查询官方手册

# 使用官方提供的 Go 镜像作为基础镜像,基础镜像可以通过docker search 进行查询

FROM golang

# 将工作目录设置为 /myproject (对应到虚拟进程中就是/myproject目录,可以通过attach或者docker exec 命令进入虚拟进程中查看)

WORKDIR /myproject

# 将当前目录下的所有内容复制到 /myproject 下

COPY . /myproject

# 允许宿主机访问容器的 8000 端口

EXPOSE 8080

# 设置容器进程为:go run helloworld.go

CMD go run helloworld.go

3)编译生成镜像

cd 到步骤1中创建的工作目录

docker build -t helloworld .

#编译指定版本镜像(注意结尾一定要加. 代表当前目录)

docker build -t helloworld:1.0 .  

#列出本地镜像

docker images

4)创建并启动容器

docker run -d --name myhello -p 8080:8080 helloworld:1.0  

参数选项:
-i    以交互模式运行容器,通常与 -t 同时使用
-t    启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v    目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d    守护进程,后台运行该容器
-p    指定端口映射,格式:主机(宿主)端口:容器端口
-P    随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535)
-u    以什么用户身份创建容器
–name “nginx-lb”    容器名字
-m, --memory bytes    设置容器使用内存最大值
-h, --hostname string    指定容器的 host name
–dns 8.8.8.8    指定容器 dns 服务器
-e username=“ritchie”    设置环境变量
–restart Docker    重启后,容器是否自动重启
–privileged    容器内是否使用真正的 root 权限

5)相关的docker命令

查看容器状态

docker ps -a

关闭/启动/重启 容器

docker stop/start/restart ContainerID 

进入后台运行的容器

#连接到正在运行中的容器

docker attach containerID

docker exec -it containerID /bin/bash

查看容器相关的资源占用情况

docker stats

查看容器中运行的进程情况

docker top containerID

查看容器所有相关的配置信息

docker inspect containerID

 查看容器日志

docker logs containerID 

查看容器的端口映射情况

docker port  containerID 

6)镜像/容器的导入导出

差异:

docker save 是保存镜像,有commit记录,可以支持多个镜像打包,因为有记录,所以大小偏大

docker export 是保存容器,没有记录

保存导出:

docker save -o golang_hello.tar helloworld:1.0

docker export containerID > golang_hello.tar

docker import可以为镜像指定别名,load不可以

导入还原:

docker import [options] file|URL|- [REPOSITORY[:TAG]]

docker import golang_hello.tar 

docker import golang_hello.tar - golang:1.0

docker load -i  golang_hello.tar 或者 docker load < golang_hello.tar 

### 配置和管理Docker本地知识库 #### 使用Docker部署知识库应用 对于希望利用Docker来构建本地知识库的应用场景,通常会选择一些成熟的开源项目或是商业软件作为基础。例如,在提到的案例中选择了Raneto这样的开源知识库平台[^2]。 为了确保顺利部署,需先确认服务器上的Docker环境已经正确安装并处于活动状态。这可以通过命令`systemctl status docker`来进行验证,该命令会返回有关Docker服务的状态信息,包括其是否正在运行以及启动时间等细节[^3]。 一旦确认Docker服务无误,则可以按照如下方式操作: - **拉取镜像与启动容器** 进入目标项目的根目录(即包含`docker-compose.yml`文件的位置),以管理员权限打开命令提示符窗口,并依次执行以下两条指令完成最新版镜像下载及后台模式下的服务启动: ```bash sudo docker-compose pull sudo docker-compose up -d ``` 上述过程适用于大多数基于Docker Compose编排工具发布的应用程序包,不仅限于特定的知识库解决方案[^1]。 #### 日常管理和维护工作 除了初次设置外,日常还需要关注几个方面的工作来保障系统的稳定性和安全性: - 定期更新官方提供的新版本镜像; - 对存储的数据做定期备份以防意外丢失; - 监控资源消耗情况避免影响其他业务流程; - 及时处理可能出现的安全漏洞预警。 通过以上措施能够有效提升自建知识管理系统的服务质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值