Docker常用命令积累--持续更新
创建容器完整步骤示例:dockerhub拉取镜像:Docker Hub官网1. 搜索(python)镜像:docker search python2.拉取镜像,eg.pythondocker pull 镜像名3. 查看镜像docker images ls4. 运行镜像:docker run -itd python:latest bash其中,-itd表示后台运行,python:latest为镜像及
创建容器完整步骤示例:
dockerhub拉取镜像:
1. 搜索(python)镜像:
docker search python
2.拉取镜像,eg.python
docker pull 镜像名
3. 查看镜像
docker images ls
查看指定名称的镜像:
docker images horovod
# 镜像名包含horovod
查看指定镜像image下的容器container:
docker ps -a | grep horovod
# horovod为镜像名
4. 运行镜像:
docker run -itd python:latest bash
其中,-itd表示后台运行,python:latest为镜像及对应的版本
-itd参数解释:
-i 开启了input(输入)功能;
-t开启了一个连接容器里边的terminal(终端);
-d参数指定容器的运行模式,加了-d参数默认不会进入容器,若要进入容器,需通过docker exec进入。
5.进入容器
docker exec -it 容器id bash
可通过docker ps查看对应镜像启动后获得的容器id(取前四位即可)
进入容器还可使用docker attach 容器id 命令,但该命令在退出容器终端时会导致容器停止。
6.运行交互式容器
两个参数-i -t,实现docker运行的容器具有“对话”能力
docker run -i -t ubuntu:15.10 /bin/bash
此时root@xxx:/#表示已进入ubuntu15.10系统的容器,在容器中的操作类似在真实系统中。
退出容器:
exit或者CTRL+D
在宿主机内使用docker logs命令,查看容器内的标准输出:
docker logs 容器id
停止容器:
docker stop 容器id
启动容器:
docker start 容器id
7.导出、导入容器:
导出xxxx容器,快照到本地文件yyyy.tar:
docker export xxxxxx > yyyy.tar
将容器快照文件yyyy.tar再导入为镜像test/ubuntu:v1:
cat docker/yyyy.tar | docker import - test/ubuntu:v1
也可通过指定URL或某个目录导入容器,
docker import http://example.com/exampleimage.tgz example/imagerepo
8.删除容器:
docker rm -f 容器id
清除所有处于终止状态的容器:
docker container prune
9. 退出容器三种方式:
方式一:(在容器内)
exit或者快捷键ctrl+D,退出后容器消失,docker ps查不到,若需再次启动,要使用命令:docker start 容器id或容器name
方式二:(在容器外)
docker stop 容器name或容器id
再次启动:docker start 容器name或容器id
方式三(在容器内退出,但后台运行,正在运行的程序不停止)
ctrl+P再按ctrl+Q 或者CTRL+P+Q
再次进入:
docker attach 容器id或容器name
10. 运行Web应用:
在docker容器中运行一个 Python Flask 应用来运行一个web应用
(1)载入镜像
docker pull training/webapp # 载入镜像
(2)运行
docker run -d -P training/webapp python app.py
-d与-p参数解释:
-d表示让容器在后台运行
-P:将容器内部使用的网络端口随机映射到我们使用的主机上
docker ps 命令查看容器
其中PORTS表示Docker开放5000端口映射到主机端口32769上,
浏览器访问:
这里的端口映射利用-p参数可以自定义:
docker run -d -p 5000:5000 training/webapp python app.py
11. 镜像相关命令:
1.dockerfile创建镜像:
命令docker build
docker build -t runoob/ubuntu:20.04 .
其中:-t:指定要创建的目标镜像名
. 表示Dockerfile文件所在目录, 可指定dockerfile绝对路径
2. 设置镜像标签:
为镜像添加一个新标签
docker tag 镜像id runoob/ubuntu:latest
可通过docker images查看镜像id
dockerfile文件书写举例:
每个指令都会在镜像上创建一个新的层,每个指令的前缀必须大写。
FROM 指定使用哪个镜像源
RUN指令告诉docker在镜像内执行命令,安装了什么,大神指导说,将命令尽量写在一个RUN内。可提高文件运行速度,且对于一些基础的安装指令,可单独写一个dockerfile文件,这样就只需要执行一次。
2022.3.15更新
运行nvidia docker
1、运行docker:
// 运行docker
systemctl start docker
// 加入开机启动
systemctl enable docker
// 查看状态
systemctl status coker
2、运行nvidia-docker:
systemctl start nvidia-docker
systemctl enable nvidia-docker
systemctl status nvidia-docker
2022/3/30
12. 将容器打包为镜像
在容器中调试完代码后,方便下次使用(因为只有你更改的code只在你所在的容器里面),为防止容器被删掉,数据丢失,将容器打包为镜像:
命令:
先退出容器再执行(commit也是另一种创建image的方式,除了dockerfile方式):
docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]
根据自己信息更改下:
docker commit -m='first_weather_day_horovod' -a="zqq" f985e011aec1 horovod_weather_day:test1
然后测试一下,运行:
docker run -itd horovod_weather_day:test1 bash
进入容器:
docker exec -it 0d0c bash
可以看到代码已经在里面了。
镜像打包完成,可以保存在本地,tar文件:
docker save -o horovod_weather_day.tar horovod_weather_day:test1
13. 拷贝服务器上指定文件到容器
docker cp 服务器本地文件路径 容器id:容器内文件的目标路径
更加规范请参考:(上文仅是个人学习过程中的记录)
Docker 容器使用 | 菜鸟教程 (runoob.com)
2022.4.11更新
14.清理冗余镜像:
参考:Docker prune清理系统垃圾 - 云计算 - 亿速云 (yisu.com)
2022.4.12 更新
15.修改镜像名称和tag:
docker tag 原images 新镜像名:新镜像tag
16.将本地文件目录挂载到容器
方便容器内可以访问本地文件或文件夹
docker run -v 本地目录绝对路径:容器内要放置的目录绝对路径 image名称
更多推荐
所有评论(0)