Docker 日常命令

## 0x01 拷贝文件

1
2
3
4
5
* 容器到宿主机
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

* 宿主机到容器
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

## 0x02 镜像/容器日常命令

  • 查看本地所有镜像:docker images;
  • 查看本地所有容器:docker ps -a / 查看本地所有运行中容器:docker ps;
  • 拉取镜像:docker pull imageName:tag;
  • 删除镜像:docker rmi imageId;
  • 为镜像打标签:docker tag imageName username/repository:tag;
  • 将镜像推送到镜像仓库:docker push username/repository:tag;
  • 启动容器:docker start containerName/containerId;
  • 进入容器:docker exec -it containerId /bin/bash;
  • 关闭容器:docker stop containerId;
  • 删除容器:docker rm containerId;
  • 启动镜像:docker run [参数…] imageName:tag/imageId,常用参数如下:
    1
    2
    3
    4
    5
    6
    -d              //后台运行
    -it //以交互的方式运行
    -p port1:port2 //将容器的port2端口映射到宿主机的port1端口
    -v dir1:dir2 //将宿主机的dir1目录挂载到容器的dir2目录下
    --name //指定启动容器的名字
    -e[...] //指定容器中的环境变量

## 0x03 导入/导出容器

1
2
3
4
* docker export $container_id > 容器快照名
如:docker export 02jg992hglshg9thg9 > centos.tar

* cat centos.tar | docker import - my/centos:v888

## 0x04 导入/导出镜像

  • 镜像保存/载入:docker load/docker save;

    将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。

  • 容器导入/导出:docker import/docker export;

    将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

## 0x05 指定自动重启

  • docker run命令使用restart参数,如下:
1
docker run -dit --restart=always ******

## 0x06 映射多个端口

  • 映射多个端口,在run新容器时,使用多个-p参数即可,如:
1
2
docker run -dit --name test -p 8888:80 -p 13306:3306 ubuntu:latest /bin/bash
此命令即映射80端口和3306到宿主机的8888和13306端口