Docker命令
来源:互联网 发布:linux help和man 编辑:程序博客网 时间:2024/06/04 18:05
Note: 在ubuntu下,所有的命令前面要加sudo,以管理员身份运行。
获取镜像: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
如: docker pull ubuntu或: docker pull ubuntu 14.04
查看镜像信息: docker images [OPTIONS] [REPOSTORY[:TAG]]
为本地镜像添加标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
如:
docker tag dl.dockerpool.com:5000/ubuntu:lastest newubuntu
获取镜像的详细信息: docker inspect [OPTIONS] NAME|ID [NAME|ID]
如: docker inspect 5506de2b43b
搜寻镜像: docker search [OPTIONS] TERM
删除:
- 删除容器:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
- 删除镜像:
docker rmi [OPTIONS] IMAGE [IMAGE...]
(Image可以是tag或者image id)
注意:应先删除容器,再删除镜像。
查看容器: docker ps [OPTIONS]
1. 查看本机存在的所有容器: docker ps -a
2. 查看本机处于终止状态的容器: docker ps -a -q
或 docker ps -aq
创建镜像
- 基于已有镜像的容器创建镜像:
docker commit [OPTIONS] CONTAINER [REPOSTORY[:TAG]]
如:
Setp 1 - 运行一个镜像: docker run -ti ubuntu:14.04 /bin/bashSetp 2 - 进行一些修改: touch test (可以看到容器ID, 假设为a925cb40b3f0)Setp 3 - 提交新镜像:docker commit -m 'Add a new file' -a "Docker Newbee" a925cb40b3f0 test
- 基于本地模板导入:
cat ubuntu-14.06-x86_64-minimal.tar.gz |docker import - ubuntu 14.04
载入导出镜像
- 导出镜像:
docker save [OPTIONS] IMAGE [IMAGE...]
如: docker save -o ubuntu_14.04.tar ubuntu 14.04
* 载入镜像: docker load [OPTIONS]
如 docker load -i ubuntu14.04.tar或:docker load < ubuntu14.06.tar
上传镜像: docker push [OPTIONS] NAME[:TAG]
创建容器: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
如: docker create -ti ubuntu/lastest
参数列表请使用docker create --help
查看
启动容器:
- 方式一:
docker start [OPTIONS] CONTAINER [CONTAINER...]
(容器创建之后使用)
- 方式二:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run
=docker create
+docker start
所有参数列表请使用docker create --help
查看
获得容器输出信息: docker logs [OPTIONS] CONTAINER
终止容器:
- 方式一:
docker stop [OPTIONS] CONTAINER [CONTAINER...]
这种方式会首先向容器发送SIGTERM信号,等一段时间后(默认为10秒),再发送SIGKILL信号终止终端。
- 方式二:
docker kill [OPTIONS] CONTAINER [CONTAINER...]
这种方式会直接发送SIGKILL信号来强行终止容器,不会给容器和应用程序等待的时间。
重启容器: docker restart [OPTIONS] CONTAINER [CONTAINER...]
- 此操作可以将一个正在运行的容器重新启动,或将一个已终止的容器启动。
进入容器
- 方式一:
docker attach
如:docker run -tid ubuntu (假设返回的容器ID为243c32535da7)
docker attach 243c32535da7
注意:
1. 当多个窗口同时attach到同一个容器时,所有窗口会同步显示,当某个容器因命令阻塞时,其它容器也无法执行操作;
2. 当使用attach命令进入到一个容器之后,使用[CTRL+D]退出容器会使该容器终止;
3. 如果该容器没有运行,那么先start。
- 方式二:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
如: 假设现有一个ubuntu容器ID为9afa2802e68b:
docker exec -ti 9afa2802e68b /bin/bash
- 方式三:使用外部工具
nsenter
step1 - 安装nsentercd /tmp;curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;(如果没有安装curl则应先安装curl)./configure --without-ncursesmake nsentercp nsenter /usr/local/binstep2 - 使用nsenter: `nsenter [OPTIONS] <program> [args...] ` docker inspect -f {{.State.Pid}} CONTAINERnsenter -t CONTAINER_PID -m -u -i -n -p
导入导出容器
- 导出容器
docker export [OPTIONS] CONTAINER
如: docker export -o mydocker.tar 2842afd00ee9或: docker export 2842afd00ee9 > mydocker.tar
无论容器是否正在运行,都将这个容器导出
- 导入容器:
docker import [OPTIONS] file|URL|- [REPOSTORY[:TAG]]
import导入后成为镜像
export和save,import和load的区别
export是保存一个容器当时的快照,会丢失所有的历史记录和元数据信息,体积较小; save是保存一个镜像,包括完整的记录,体积较大;
挂载数据卷
挂载目录
在运行的时候使用-v source_directory:target_dirctory
如:docker run -ti -v /src/webapp:/src/webapp ubuntu:14.04 /bin/bash
挂载文件
在运行的时候使用-v source_file:target_file
如:docker run -ti -v /myfile.txt:/target/myfile.txt ubuntu:14.04 /bin/bash
注意:
1. 挂载目录后,宿主机对目录内的文件进行修改,容器内相应的文件也会被修改,反之亦然
2. 挂载文件后,宿主机或容器对文件进行修改,就改变了文件的inode,则宿主机和容器的这个文件就不再是同一个文件了,文件内容不再同步
3. 由于以上原因,推荐使用目录挂载
数据卷容器
数据卷容器用于在容器间共享数据。使用--volumes-from CONTAINER
如:
step 1: 使用ubuntu镜像启动一个名为data_container的容器并挂载一个dbdata目录 docker run -ti -v /dbdata --name data_container ubuntu step 2: 将data_container容器 docker run -ti --volume-from data_container ubuntu
在任意一个容器中在这个共享的目录下进行操作。其它容器都可以看到。
注意:
1. 使用--volume-from
参数挂载数据卷的容器自身并不需要保持运行状态
2. 删除了挂载的容器,数据卷并不会被删除,需要在删除最后一个还挂载它的容器时显式使用docker rm -v
来指定同时删除关联的容器
- [docker]docker命令 docker inspect
- docker 命令
- Docker 命令
- docker命令
- Docker命令
- docker命令
- Docker命令
- docker 命令
- Docker命令
- docker命令
- docker命令
- docker命令
- Docker 命令
- docker命令
- Docker 命令
- docker命令
- docker命令
- Docker命令
- 51nod 1163 最高的奖励
- C++replace函数用法
- HttpClient Post提交数据
- 新博客踏青
- php文件权限访问
- Docker命令
- 欢迎使用CSDN-markdown编辑器
- mysql数据库无法远程连接的问题解决
- android Matrix图片变换处理
- 使用MongoDB命令连接远程服务器的MongoDB数据库
- Java NIO和IO的主要区别
- [WebGL入门]三十,混合系数
- 自学Unity笔记 坦克大战项目
- Rxjava,retrofit,Rxjava结合使用与代码封装