# Docker 一键安装命令
curl -fsSLo- get.docker.com | /bin/sh
# 运行 hello-world 检查Docker引擎是否安装
docker run hello-world
# 运行一个 Ubuntu 容器
docker run -it ubuntu bash
# 显示所有的容器
docker ps -a
# 显示本机镜像
docker images
# 查看Ubuntu镜像的历史
docker history hello-world
# 查看镜像的历史
docker history ubuntu
# 删除所有容器
docker rm -f $(docker ps -qa)
# 删除所有镜像
docker rmi -f $(docker images -qa)
———————————–
# 国内使用阿里云镜像
wget get.docker.com -O get.docker.sh
bash get.docker.sh –mirror Aliyun
# 使用国内镜像,显示deb包 源为 mirrors.aliyun.com
cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian buster stable
镜像下载 修改 vim /etc/docker/daemon.json 添加 国内源,网上可以查
限制日志大小, vim /etc/docker/daemon.json 里设置
没有去用过,使用脚本 自动删除也是可以的
———————————————————-
Docker 不是虚拟机,所以使用 htop 工具,是可以看到容器中运行的程序,运行的服务程序实际还是在宿主机上的,只是 Docker 容器挂载了虚拟的文件系统,Docker中的程序是和宿主机其他程序 文件系统隔离的。
如图 使用简单的命令,可以 进入 一个当前活动的容器的 root 目录,可以看到 /var/lib/docker/overlay2/ed3….. /merged 是这个容器的 / 根目录
df -h
cd /var/lib/docker/overlay2/ed3b19ce3a1402bd9a09ccde057145129714e5e70e7f6255e3d96e73feb9b50e/merged
ls
——————————————————–
docker 安装后有2个重要目录 /var/lib/docker/containers /var/lib/docker/overlay2
docker ps -a 运行后 会显示 CONTAINER ID < ba5148927a1e> ba5148927a1e 就是 hello-world 这个容器的 ID
/var/lib/docker/containers/ba5148927a1e98322f8628650e8ef3b3ddd38e88bb59669dadf82433e932be7a (ID前缀的这个长目录就还是容器目录)
里面保存了 这个容器的配置,主要保存在 config.v2.json文件中, ID前缀….log 就是这个容器的 运行日志
docker logs ba5148927a1e 就能查看日志
——————–
还有就是新手 在目前国内环境,python3和库环境不一定能装好
Python3 With Network Library ( html2text scrapy beautifulsoup4 ipip-ipdb )
所以请在虚拟机里安装个 docker ,使用我制作的 python3 容器镜像
docker run -d –restart=always -v /app:/app –name python3 hongwenjun/python3 python3 -m http.server 8000
然后使用 这样命令 交互模式学习
docker exec -it python3 python3 -i me.py
这个镜像的 Dockerfile 里面已经安装学习爬虫够用的网路库
# 直接使用github上的 Dockerfile 来编译构建 镜像
docker build -t python3 https://raw.githubusercontent.com/hongwenjun/nginx-php/main/python3/Dockerfile
如何查看并干净卸载所有容器和docker
1,查看所有运行的容器:
docker ps -a
2,停止所有容器,并删除所有容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
3,删除所有镜像
docker rmi $(docker images -q)
4,卸载docker
apt-get purge docker-ce
apt-get purge docker-ce-cli
apt-get purge containerd.io
5,检查是否卸载完成
apt list –installed | grep docker
apt list –installed | grep containerd.io
6,删除残余文件
rm -rf /var/lib/docker
rm -rf /var/run/docker
rm -rf /etc/docker
rm -rf /run/docker.sock
rm -rf /var/lib/containerd
rm -rf /run/containerd
rm -rf /opt/containerd
Portainer是Docker的图形化管理工具,提供状态显示面板…..
# 查询当前有哪些Portainer镜像
docker search portaine
# 安装Docker可视化界面Portainer
docker run –name Portainer portainer/portainer … 省略
# 删除Portainer服务
docker rm -f Portainer
docker rmi portainer/portainer
# 进入 mysql 容器
docker exec -it zfaka_mysql_1 bash
# MySQL数据库备份
mysqldump -uroot -p密码(mysql) –databases faka > /tmp/faka.sql
# 退出容器,进入宿主机zfaka目录 打包程序和数据
cd /opt/zfaka
docker cp zfaka_mysql_1:/tmp/faka.sql .
tar cvzf zfaka.tar.gz code/ faka.sql docker-compose.yml
Docker mysql 可以不用进入容器直接在宿主机备份数据
docker exec -i zfaka_mysql_1 mysqldump -uroot -p密码(mysql) –databases faka > /opt/zfaka/zfaka_bak.sql
# 可以配合定时脚本,用来每周备份数据库等
TODAY=$(date +%Y)$(date +%m)$(date +%d)
mkdir -p $(pwd)/$TODAY && cd $(pwd)/$TODAY
docker exec -i zfaka_mysql_1 mysqldump -uroot -p密码(mysql) –databases faka > faka.sql
建立容器的时候 可以指定一个 容器名称,不指定 就使用 hash 字符的 作为 ID号
docker stop name(或者ID,使用name会简单点)
docker start name
docker restart name
—————————–
# 宿主机和容器互相复制文件
docker cp name:/root/a.txt /root/a.txt
docker cp /root/a.txt name:/root/a.txt