docker 操作笔记
1.Docker 创建ubuntu系统更换 apt-get源
创建Dockerfile并且更新apt源
在Dockerfile中添加如下两句代码:
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
Dockerfile 文件
FROM ubuntu:latest MAINTAINER itdream "itdream6@163.com" RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list RUN apt-get clean RUN apt-get update RUN apt-get install sudo RUN apt-get install vim RUN apt-get install curl RUN apt-get install wget sudo apt install systemctl RUN curl -sSL https://get.daocloud.io/docker | sh
查看所有的容器命令如下:
sudo docker ps -a
进入某个容器
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
docker exec -it 8282cf35de22 /bin/bash
2.镜像打包
docker save ubuntu:22.04 > ubuntu.tar
3.镜像导入
docker load < ubuntu.tar
4.docker 删除已停止的容器
根据容器的状态,删除Exited状态的容器
#根据容器的状态,删除Exited状态的容器 sudo docker rm $(sudo docker ps -qf status=exited) # 删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了) sudo docker rm $(sudo docker ps -a -q) #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{print $1}' #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'` 手动清理 Docker 镜像/容器/数据卷 对于旧版的 Docker(版本 1.13 之前),是没有 docker system 命令的,因此需要进行手动清理。这里给出几个常用的命 删除所有关闭的容器 docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm 删除所有 dangling 镜像(即无 tag 的镜像): docker rmi $(docker images | grep "^<none>" | awk "{print $3}") 删除所有 dangling 数据卷(即无用的 volume): docker volume rm $(docker volume ls -qf dangling=true)
6.镜像创建容器
docker run -t -i ubuntu:15.10 /bin/bash
docker删除镜像
使用一段时间之后,可能堆积很多用不着的,或者编译错误的镜像,一个一个删除就很麻烦,需要一个批量删除的方法
docker rmi $(docker images | grep "latest" | awk '{print $3}')
7.后台启动容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
8.进入容器
docker exec -it 243c32535da7 /bin/bash
9.主宿机器和容器之间互相copy文件
# 容器copy到宿主机器 3c9bf1be70d3为容器id sudo docker cp 3c9bf1be70d3:/train/123.txt . # 宿主机器copy到容器 docker cp auto.sh 3c9bf1be70d3:/train/
10.镜像打包
# Docker 进入容器 sudo docker run -t -i smy20011/dreambooth:mmqi.1.2 /bin/bash # 容器打包 sudo docker commit 0d5f160e393f smy20011/dreambooth:mmqi.1.2.1
11.dockerfile 编写
FROM ubuntu:22.04 # 更换 apt-get 源为中国源 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list # 安装必要的工具和 Python3.10 RUN apt-get update && \ apt-get install -y python3.10 && \ apt-get install -y python3-pip && \ apt-get install -y wget && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 更换pip安装源为中国源 RUN mkdir ~/.pip && \ echo '[global]' > ~/.pip/pip.conf && \ echo 'index-url = https://pypi.mirrors.ustc.edu.cn/simple/' >> ~/.pip/pip.conf CMD ["/bin/bash"]
执行
docker build -t my-ubuntu-python:1.0 .
分类:
Linux 服务器那些事
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2021-02-23 Linux 文件权限十位权限表示&&文件的拥有者及用户组(chown和chgrp)
2019-02-23 [python] ThreadPoolExecutor线程池 python 线程池
2019-02-23 python按行遍历一个大文件,最优的语法应该是什么?
2019-02-23 Mac 开发必备 利器 iterm2 oh-my-zsh
2018-02-23 django 线上线下使用不同的数据库 上线:mysql 线下sqlite3 以及debug模式的开和关
2018-02-23 django admin 或xdmin list_display search_fields list_filter 如果显示搜索外键或多对多字段
2018-02-23 django数据库操作-增删改查-多对多关系以及一对多(外键)关系