Docker 使用注意事项

docker 全方位理解教程:

Docker简介以及Docker历史Docker 是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。 Docker 是在 GitHub 上开发的 Moby 开源项目的一部分。 Docker 公司,位于旧金山,是整个 Moby 开源项目的维护者。http://c.biancheng.net/view/3118.html

docker 全方位命令教程:

Docker build 命令 | 菜鸟教程Docker build 命令 Docker 命令大全 docker build 命令用于使用 Dockerfile 创建镜像。 语法 docker build [OPTIONS] PATH | URL | - OPTIONS说明: --build-arg=[] :设置镜像创建时的变量; --cpu-shares :设置 cpu 使用权重; --cpu-period :限制 CPU CFS周期; --cpu-quota :限制 ..https://www.runoob.com/docker/docker-build-command.html

Docker 构建镜像(docker build) | 奇客谷教程 💯我们在上一章中创建了Dockerfile,现在将用它来构建镜像。Dockerfile通过docker build命令构建。 docker build docker build命令用于从Dockerfile构建镜像。 典型用法 docker build -t ImageName:TagName dir 选项 -t −https://www.qikegu.com/docs/3011

docker update - [ Docker 17 中文开发手册 ] - 在线原生手册 - php中文网php中文网为您准备了Docker 17 中文开发手册,在线手册阅读,让您快速了解Docker 17 中文开发手册,本章节为Docker 17 中文开发手册的docker update部分https://www.php.cn/manual/view/36144.htmldocker update | Docker Documentationdocker update: The `docker update` command dynamically updates container configuration. You can use this command to prevent containers from consuming too many resources from their Docker host. With a single...https://docs.docker.com/engine/reference/commandline/update/

latest标签不一定表示为最新版本

参考:Docker镜像(image)详解如果曾经做过 VM 管理员,则可以把 Docker 镜像理解为 VM 模板,VM 模板就像停止运行的 VM,而 Docker 镜像就像停止运行的容器;而作为一名研发人员,则可以将镜像理解为类(Class)。 首http://c.biancheng.net/view/3143.html

后台创建容器以及自定义名称以区分:

docker build 提示源失败:替换源或者修改公司代理

sudo docker build -t psweb:v1 .     注意最后的点

以下是Dockerfile原始配置

  The command '/bin/sh -c apt-get update && apt-get install -y nodejs nodejs-npm' returned a non-zero code: 100

方法一:# 原始命令
RUN apt-get install -y vim


# 修改方法
RUN sed -i 's#http://archive.ubuntu.com/#http://mirrors.tuna.tsinghua.edu.cn/#' /etc/apt/sources.list;
RUN apt-get update && apt-get install -y vim
#或者这个都可以
RUN apt-get update --fix-missing && apt-get install -y vim --fix-missing
 

 因为公司网络限制,必须使用公司代理,在Dockerfile修改

docker实现挂载的三种方式:

Docker 实现挂载的三种方式_ergouy's blog-CSDN博客_docker 挂载最近学习了docker,做一些笔记来巩固知识,也供他人参考在介绍VOLUME指令之前,我们来看下如下场景需求:1.容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上。一旦容器删除后,这些数据就没了,除非我们人工备份下来(或者基于容器创建新的镜像)。能否可以让容器进程持久化的数据保存在主机上呢?这样即使容器删除了,数据还在...https://blog.csdn.net/qq_39007083/article/details/104569982?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&utm_relevant_index=2

docker镜像升级如何保留数据和配置,以及挂载新分区:

镜像:是一个只读的Docker 容器模板,包含启动容器所需要的所有文件系统结构和内容。

简单来讲,镜像是一个特殊的文件系统,它提供了与容器运行时所需的程序,软件库、资源、配置等静态数据,镜像不包含任何动态数据,镜像内容在构建后不会被改变。 常用的镜像操作如图所示

参考题主:https://segmentfault.com/q/1010000020514283?utm_source=tag-newest

 方案一:

1.先看宿主的块设备:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    1   7.2G  0 disk
└─sda1        8:1    1   7.2G  0 part
nvme0n1     259:0    0 119.2G  0 disk
├─nvme0n1p1 259:1    0   260M  0 part /boot
├─nvme0n1p2 259:2    0   128M  0 part
├─nvme0n1p3 259:3    0   118G  0 part /
└─nvme0n1p4 259:4    0   850M  0 part

2. 记下要挂载的分区的设备号(例如/的259:3)。

# 启动一个容器,没什么特殊参数
docker run -itd --name demo alpine:latest sh 

#在容器内创建一个设备节点
$ docker exec demo mknod -m 0500 /dev/nvme0n1p3 b 259 3 

# 找到容器PID=1的进程PID
$ docker top demo
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4189                4174                0                   23:07               pts/0               00:00:00            sh

# 通过命名空间挂载磁盘
$ docker exec demo mkdir /data
$ sudo mount -N 4189 /dev/nvme0n1p3 /data

# 访问试试
$ docker exec demo ls -lh /data
total 16
-rw-r--r--    1 root     root         108 Jan 20  2019 archlinux
lrwxrwxrwx    1 root     root           7 May 23 14:18 bin -> usr/bin
drwxr-xr-x    2 root     root           6 Jan 20  2019 boot
...

分区都挂载进去了,干啥都行了~

方案二:

说个与 docker 无关的方法:

sshfs 可以透过 ssh 连接挂载文件系统。在容器里装一个可以通过 ssh 把宿主的目录挂进来。docker exec 新开一个 shell 搞这事就可以。这样目录里的内容存在容器外。

如果容器暴露了 ssh 端口,也可以在外面用 sshfs 把里面的目录挂出来。这样文件夹里的内容实际在容器里。容器没了就没了。

通过 ssh 不只可以挂宿主机的目录,有 ssh 连接哪里的目录都可以挂。

方案三:

docker默认没提供这个功能.

但是可以先把容器停掉, 用docker commit 创建一个新的image, 然后在运行新的image时挂载.

docker stop 容器名
docker commit 容器名 新的镜像名
docker save 导出镜像
docker load 加载镜像
docker run -v "挂载" 新的镜像名

方案四:

docker cp把运行中的容器中的文件拷贝出来,停掉,再用docker run -v挂上你想要的卷 

方案五:

修改卷

Docker(34)- 如何修改 docker 容器的目录映射 - 小菠萝测试笔记 - 博客园如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run https://www.cnblogs.com/poloyy/p/13993832.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值