基本概念
镜像:镜像是一种文件存储形式(类似打包好的压缩包,放到其它设备,解压后的内容都不变)
容器:容器是由镜像实例化而成(类似对压缩包解压后的文件)
镜像与容器的关系:
- 镜像类似压缩包
- 容器类似压缩包解压后的文件
注意:
- 镜像one实例化的初始容器都是一样的;
- 每个容器互不干扰,无论是修改还是运行;
- 容器One里的内容可以修改,不影响镜像One;且可以通过commit生成新的镜像Two(镜像Two类似于 对镜像One解压后的文件进行修改后再压缩成的新压缩包)
1. 打包镜像
1.1 建立Dockerfile
教程:https://www.runoob.com/docker/docker-dockerfile.html
1.2 构建镜像
docker build -t 算法名称:版本号(例如:fastfcn:0.0.1) .
(注意:然后在当前路径的终端上输入)
docker build -t sentiment:0.0.1 .
2. 查看已有的镜像
打包好以后通过在终端输入:
docker images
就可以查看自己刚打包的镜像
3. 新建容器
参考链接:https://www.runoob.com/docker/docker-hello-world.html
通过如下命令启动镜像实例化容器: (进入容器的终端)
docker run -it 外面端口:里面端口(例如:8000:8080) 镜像名称:版本号(例如:sentiment:0.0.1) bash
docker run -it sentiment:0.0.1 /bin/bash
-
t
: 在新容器内指定一个伪终端或终端。 -
i
: 允许你对容器内的标准输入 (STDIN) 进行交互。
退出镜像的终端命令:
exit
查看正在运行的容器:
docker ps
查看所有的容器:
docker ps -a
4. 进出容器
启动容器,不进入容器:
docker run -it -d --name [container-name] -p 8088:80 [image-name]
# 这里是将容器内的80端口映射到宿主机的8088端口
docker run -itd sentiment:0.0.1 /bin/bash
d
:参数时,容器启动后会进入后台。
进入已启动的容器:
docker attach
: 进入容器后,使用exit
退出,容器会停止
docker attach <容器 ID>
docker exec
: 进入容器后,使用exit
退出,容器不会停止(⭐)
docker exec -it <容器 ID> /bin/bash
5. 导出和导入容器
5.1 导出容器
docker export
docker export <容器 ID> > 导出的文件名.tar
5.2 导入容器
docker import
cat sentiment.tar | docker import - sentiment:0.0.2
或者:
docker import http://example.com/exampleimage.tgz example/imagerepo
6. 开启、停止、重启、删除容器
开启一个容器:
docker start <容器 ID>
停止一个容器:
docker stop <容器 ID>
重启一个容器:
docker restart <容器 ID>
删除一个容器:
docker rm -f <容器 ID>
7. 修改容器、打包镜像与容器
修改镜像
docker commit 容器id 镜像名:版本号
打包镜像
docker save 镜像名:版本号 -o 镜像名_版本号.tar(例如:fastfcn_0_0_1.tar)
载入镜像
sudo docker load -i 镜像名_版本号.tar(例如:fastfcn_0_0_1.tar)
8.删除docker的镜像和容器
普通删除镜像
docker rmi <image id>
强制删除镜像
docker rmi -f <image id>
普通删除容器
docker rm <container id>
强制删除容器
docker rm -f <container id>
删除所有未运行的容器
docker rm $(docker ps -a -q) #正在运行的删除不了,所有未运行的都被删除了
或者
docker container prune #Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器
9. 容器文件与本地文件的传输
从容器到宿主机复制:
docker cp 容器名: 容器路径 宿主机路径
docker cp tomcat:/webapps/js/text.js /home/admin
从宿主机到容器复制:
docker cp 宿主路径中文件 容器名: 容器路径
docker cp /home/admin/text.js tomcat:/webapps/js