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 build -t v2 https://raw.githubusercontent.com/v2ray/v2ray-core/master/Dockerfile
vim config.json
编辑配置,和部署容器
docker run -v $(pwd)/config.json:/etc/v2ray/config.json -d --net=host --name v2 v2
如图就是Docker
的多阶段构建 ,构建完成后,会在电脑生成 4个镜像,一个golang语言基础镜像,\
一个名称none的是编译程序完成的临时大镜像,再一个我们需要的发行镜像体积比较小。\
构建时从其他镜像复制文件: 上面例子中我们使用 COPY --from=builder /tmp/v2ray.tgz /tmp
命令,从最大镜像里把v2
程序放到alpine
基础镜像里面\
构造一个体积最小的应用镜像,你可以再修改下配置,就能直接使用了\
如何查看并干净卸载所有容器和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
Docker的图形化管理工具Portainer
查询当前有哪些Portainer
镜像
docker search portaine
安装Docker可视化界面Portainer
docker pull docker.io/portainer/portainer
如果仅有一个docker宿主机,则可使用单机版运行,Portainer单机版运行十分简单,只需要一条语句即可启动容器,来管理该机器上的docker镜像、容器等数据。
docker run -d -p 9000:9000\
--restart=always\
-v /var/run/docker.sock:/var/run/docker.sock\
--name prtainer-test\
docker.io/portainer/portainer
该语句用宿主机9000端口关联容器中的9000端口,并给容器起名为portainer-test。执行完该命令之后,使用该机器IP:PORT即可访问Portainer。
访问方式:http://IP:9000
删除Portainer
服务
docker rm -f Portainer
docker rmi portainer/portainer