dock学习笔记-持续更新

本文介绍Docker容器及镜像的基本概念、常用操作命令,并探讨其在自动化部署、测试等方面的应用。同时,文中还提供了针对特定问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源
*镜像可以理解为一个ios的系统光盘文档
*容器是装好后可运行的系统
docker的典型场景
使应用的打包与部署自动化
创建轻量、私密的PAAS环境
使连续的集成/部署、测试自动化
部署、衡量网页app、数据库和后台服务

fapui镜像id 3a859bbb11fb  name=sunyard/fapui   Successfully built 04d6ddd700cb
fapui容器id 7f74af165784  name=fapui      command="nohup /home/Makefil  2f9d664b9ff34c62e702548515c43baaa5798a355fb2287947e9dbb49ce63fbe

创建容器
# sudo docker create--name ubuntContainer ubuntu:14.04 /bin/echo 'Hello world'
重启容器
#sudo docker restart 容器ID
暂停容器
#sudo docker pause 容器ID  //暂停
#sudo docker unpause 容器ID //解除暂停
停止容器
$sudo docker stop 容器ID或容器名称
#运行容器
docker start +容器id 
#docker stop $(docker ps -q -a)  //一次性停止所有容器,慎用
杀死容器
$sudo docker kill 容器ID或容器名称
删除容器
$sudo docker rm 容器ID或容器名称   //删除容器,正在运行的容器不能删除
#sudo docker rm $(docker ps -q -a)  //一次性删除所有容器,慎用

显示运行容器的进程信息
#sudo docker top 容器ID
docker ps -a 查看所有容器,包括没有运行的
docker ps 显示所有正在运行的容器
docker logs 查看日志

报错:数据库连接报com.db2.jcc.am.qo
解决:重启容器中的数据库后要重置数据库密码


sudo docker start 1d051604e0ea  //start docker
docker exec -it 1d051604e0ea bash   进入到某个容器
su db2inst1
db2start
db2 connet to pm


从容器中拷贝文件出来,先exit,再 docker cp 1d051604e0ea:/tmp/db2_conf/test  /home/developer
镜像查看
#sudo docker images  //在本机进行镜像查看
 
#sudo docker inspect 镜像ID   //查看单个镜像的具体信息,以JSON格式返回

docker images 查看镜像
docker load 导入镜像
docker save 导出镜像
docker rmi 删除镜像
docker build 新建镜像
docker run +镜像id 

docker commit 容器生成镜像


Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:


1--Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
2--LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
3--隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
4--网络管理相对简单,主要是基于namespace隔离
5--cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
6--docker对disk的管理比较有限
7--container随着用户进程的停止而销毁,container中的log等用户数据不便收集





问题:容器内启动db2失败时报The database manager failed to allocate shared memory
数据库管理器分配共享内存失败
解决:root 用户下执行sysctl kernel.shmmax=18446744073692774399









当你遇到“Dock儿 Desktop - WSL 更新失败”的问题时,这通常意味着你在尝试通过 Windows Subsystem for Linux (WSL) 进行某些操作的过程中遇到了错误。以下是可能导致该问题的一些常见原因及解决办法: ### 可能的原因与解决方案 #### 1. **系统版本不支持** 确保你的Windows操作系统已经更新到支持最新版WSL的版本。你需要运行的是Windows 10 Build 19041及以上版本或者是Windows 11。 **解决步骤:** - 按 `Win + R` 打开运行窗口,并输入 `winver` 查看当前系统的版本信息。 - 如果未达到上述要求,请前往微软官网下载并安装最新的Windows更新。 #### 2. **未启用虚拟机平台功能** WSL 2 使用了轻量级的Linux内核,因此需要开启“虚拟机平台”选项。 **解决步骤:** - 打开控制面板 -> “程序和功能”,然后点击左侧的“打开或关闭Windows功能”。勾选“虚拟机平台”以及“适用于Linux的Windows子系统”。 #### 3. **WSL 安装出错** 如果之前对WSL进行了手动调整可能会导致其损坏或者配置不当。 **解决步骤:** - 首先卸载已存在的发行版:例如 Ubuntu等(如果存在的话)。可以使用PowerShell命令完成此任务:`wsl --unregister <DistributionName>`. - 再次从Microsoft Store里重新获取对应的操作环境如Ubuntu或其他喜欢使用的GNU/Linux分发包。 #### 4. **权限不足** 当前用户账户可能缺乏足够的管理员权限来进行必要的文件修改和注册表更改。 **解决步骤:** - 尝试以管理员身份启动Powershell 或者 CMD ,再重复一遍升级指令比如: ```powershell wsl --update ``` --- 如果你按照以上建议仍无法解决问题,则可能是其他更复杂的情况引起的,这时候考虑查看详细的日志记录会更有帮助。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值