docker各种语法功能
1. docker cp
功能:
Copy files/folders between a container and the local filesystem, 在容器和本地之间进行文件/文件夹拷贝。
用法:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS:
Name, shorthand | default | Description |
---|---|---|
–archive , -a | Archive mode (copy all uid/gid information) | |
–follow-link , -L | Always follow symbol link in SRC_PATH |
举例:
将主机./RS-MapReduce目录拷贝到容器30026605dcfe的/home/cloudera目录下。
docker cp RS-MapReduce 30026605dcfe:/home/cloudera
将容器30026605dcfe的/home/cloudera/RS-MapReduce目录拷贝到主机的/tmp目录中。
docker cp 30026605dcfe:/home/cloudera/RS-MapReduce /tmp/
2. docker run
功能:
创建一个新的容器并运行一个命令
用法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
举例:
# 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
# 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
# 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
# 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
3 docker 镜像导入导出
3.1 docker save
功能:
从镜像导出压缩包
用法:
docker save [options] images [images...]
举例:
# 其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
docker save -o nginx.tar nginx:latest
docker save > nginx.tar nginx:latest
3.2 docker load
功能:
加载导出的镜像压缩包
用法:
docker load [options]
举例:
# 其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
docker load -i nginx.tar
docker load < nginx.tar
3.3 docker export
功能:
从容器导出压缩包
用法:
docker export [options] container
举例:
# 其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)
docker export -o nginx-test.tar nginx-test
3.4 docker import
功能:
从压缩包导入镜像
用法:
docker import [options] file|URL|- [REPOSITORY[:TAG]]
docker import nginx-test.tar nginx:imp
cat nginx-test.tar | docker import - nginx:imp
export命令导出的tar文件略小于save命令导出的
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
若是只想备份images,使用save、load即可, 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
4 docker 挂载本机文件夹
宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:
# 同时会创建/soft 文件夹
sudo docker run -it -v /test:/soft centos /bin/bash