Featured image of post Docker 傻瓜应用速成

Docker 傻瓜应用速成

Docker 常见指令

Docker 一键安装

curl -fsSLo- get.docker.com | /bin/sh

基础操作

  • 检查Docker引擎安装

    docker run hello-world
    
  • 运行 Ubuntu 容器

    docker run -it ubuntu bash
    
  • 构建 Docker 镜像

    docker build -t [image name] [Dockerfile所在目录]
    
  • 运行镜像并映射端口

    docker run -p [host port]:[docker port] -d –name [container name] [image name]
    
  • 显示所有容器

    docker ps -a
    
  • 查看本机镜像

    docker images
    

镜像和容器的管理

  • 查看镜像历史

    docker history [image name]
    
  • 删除所有容器

    docker rm -f $(docker ps -qa)
    
  • 删除所有镜像

    docker rmi -f $(docker images -qa)
    
  • 停止并删除所有容器

    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
    

卸载 Docker

apt-get purge docker-ce
apt-get purge docker-ce-cli
apt-get purge containerd.io
  • 检查卸载情况

    apt list –installed | grep docker
    apt list –installed | grep containerd.io
    
  • 删除残余文件

    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

  • 查询当前有哪些Portainer镜像

    docker search portaine
    
  • 安装Docker可视化界面Portainer

    docker run –name Portainer  portainer/portainer  … 省略
    
  • 删除Portainer服务

    docker rm -f Portainer
    docker rmi portainer/portainer
    

Docker 容器和文件系统

Docker 不是虚拟机,所以使用 htop 工具,是可以看到容器中运行的程序,运行的服务程序实际还是在宿主机上的,只是 Docker 容器挂载了虚拟的文件系统,Docker中的程序是和宿主机其他程序 文件系统隔离的。

img

如图 使用简单的命令,可以 进入 一个当前活动的容器的 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 就能查看其日志

备份

  • 进入 MySQL 容器

    bash
    docker exec -it zfaka_mysql_1 bash
    
  • MySQL 数据库备份

    bash
    mysqldump -uroot -p[password] –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

摘自 https://hostloc.com/thread-887705-1-1.html

Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
Last updated on Jan 27, 2024 15:47