Docker菜鸡级使用流程
1. 构造Dockerfile
一个实用的Dockerfile示例[1]:
1 | # FROM scratch # 空白镜像 |
2. 构造镜像
运行[2]
docker build -t [TAG_LIST] PATH
构造镜像,PATH即Dockerfile所在目录,并且打上TAG_LIST中所述标签。
3. 运行镜像
一种实用运行脚本[3]
!/bin/bash -f
docker run -it --rm \ # 连接STDIO、容器停止后自动删除
--runtime=nvidia \ # N卡直通
--memory-reservation=16g \ # 内存限制(不一定靠谱)
--name="ubuntu-22.04" \ # 设定容器名字
-v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro \ # 映射本机用户账户
-u $(id -u):$(id -g) \ # 映射本机用户账户
-e QT_X11_NO_MITSHM=1 -e LANG=C.UTF-8 -e DISPLAY=$DISPLAY \
-v $HOME:$HOME \ # 映射本账户home目录
-v /home:/home:ro \
-w $(pwd) \
-p 50022:22 \ # 映射端口
--hostname="docker" \ #
imagetag entry
4. 导出和导入镜像
导出镜像[4]
docker save TAG -o imagefile.tar
导入镜像[5]
docker load -i imagefile.tar
查看tar包的内容
1 | tar -tvf imagefile.tar |
5. 强制结束Docker容器
当Docker容器无法停止、无法删除、无法连接,且docker stop、docker kill等命令也无响应时:
强行移除容器:
docker rm -f CONTAINER_NAME
删除容器网络占用:
docker network disconnect --force bridge CONTAINER_NAME
docker network disconnect --force host CONTAINER_NAME
参考资料
- Dockerfile reference | Docker Documentation;
- docker build | Docker Documentation;
- docker run | Docker Documentation;
- docker save | Docker Documentation;
- docker load | Docker Documentation;
- Build C++ Applications in a Linux Docker Container with Visual Studio - C++ Team Blog;
- Docker — 从入门到实践;
- 精简Docker镜像的几个方法;