Docker常用命令及使用方法

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中的程序是和宿主机其他程序 文件系统隔离的。

docker01.png
如图 使用简单的命令,可以 进入 一个当前活动的容器的 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

docker02.png

这个镜像的 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

docker03.png

如图就是Docker的多阶段构建 ,构建完成后,会在电脑生成 4个镜像,一个golang语言基础镜像,
一个名称none的是编译程序完成的临时大镜像,再一个我们需要的发行镜像体积比较小。
构建时从其他镜像复制文件: 上面例子中我们使用 COPY --from=builder /tmp/v2ray.tgz /tmp 命令,从最大镜像里把v2程序放到alpine基础镜像里面
构造一个体积最小的应用镜像,你可以再修改下配置,就能直接使用了
docker04.png

如何查看并干净卸载所有容器和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

docker05.png

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注