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中的程序是和宿主机其他程序 文件系统隔离的。
如图 使用简单的命令,可以 进入 一个当前活动的容器的 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