常用命令
systemctl daemon-reload:重新加载docker配置
systemctl restart docker: 重启docker服务
操作镜像(images)
docker images : 查看本地镜像
docker rmi : 删除镜像
操作容器
docket ps : 查看运行中的容器
docket ps -a : 查看所有的容器
docker run xxx : 创建容器
docker start <NAMES / CONTAINER ID> : 运行容器
docker stop <NAMES / CONTAINER ID> : 停止容器
docker rm <NAMES / CONTAINER ID> : 删除容器
docker exec -it <NAMES / CONTAINER ID> /bin/bash :进入容器
docker inspect <NAMES / CONTAINER ID> | grep Mounts -A 50 : 查看容器文件挂载情况
容器内操作
exit : 退出并关闭容器
ctrl + P + Q :退出容器 容器继续运行
数据传输
docker cp [filename] [<NAMES / CONTAINER ID>:/directory/filename] :复制宿主机文件到容器内
docker run命令(创建容器)
docker run -it --name 容器名称 镜像名称
参数
参数 | 释义 | 格式 | 示例 |
---|---|---|---|
-p | 映射端口 | -p [宿主机端口]:[容器端口] | docker run -p 8080:8080 -p 18081:8081 --name [容器名] [镜像] |
-v | 映射端口 | -p [宿主机端口]:[容器端口] | docker run -d -v /host/directory:/container/directory [镜像] |
- 容器获取宿主机权限
–privileged,权限全开,不利于宿主机安全
docker run --privileged -itd --name centos centos /usr/sbin/init
docker 容器迁移
- 将容器提交为镜像
docker commit -a “作者名称” -m “提交时的说明文字” 容器ID 新创建的镜像名称:版本
docker commit -a "boo" -m "the server for test" be3e6c212e04 test:latest
参数
-a | 提交的镜像作者 |
-c | 使用Dockerfile指令来创建镜像 |
-m | 提交时的说明文字 |
-p | 在commit时,将容器暂停 |
打包后可通过 docker images
查看到创建的镜像 ‘test:latest’
- 将镜像打包成tar包
docker save -o 名称.tar 新创建的镜像名称:版本号
会在当前目录下生成一个.tar文件
docker save -o image-test-latest.tar test:latest
- 将tar包压缩为gz包
此步骤主要为压缩,方便传输,不是必须
tar -zcvf image-test-latest.tar.gz image-test-latest.tar
- 复制压缩包到要迁移的服务器
- 将tar.gz 复制到内网服务器,使用scp命令
scp -r ./image-test-latest.tar.gz root@192.168.1.11:/home/bak/docker/image/
- 将tar.gz 解压缩,会生成一个tar包
tar -zxvf image-test-latest.tar.gz
- 将tar包生成镜像
生成的镜像跟之前打包的镜像名称一样
docker load < image-test-latest.tar
或
docker load -i /home/bak/docker/image/image-test-latest.tar
查看镜像,镜像创建完成
根据镜像传经容器
扩展
tar包和tar.gz包有什么区别
- 文件类型不同:
tar包属于打包文件,Unix和类Unix系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀亦为“tar”。tar.gz包是压缩文件,经过gzip压缩后的tar文件,形成tar.gz包,扩展名为“.tar.gz”。 - 用途不同:
tar.gz包一般情况下都是源代码的安装包,需要先解压再经过编译、安装.才能执行。总而言之它是一个压缩文件。tar包最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar,一般用于文件备份。