docker 全方位理解教程:
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 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 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镜像升级如何保留数据和配置,以及挂载新分区:
镜像:是一个只读的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
挂上你想要的卷
方案五:
修改卷