Docker 的一些操作说明
这篇文档是介绍 Docker 的一些基本的操作命令。
也可以参照这篇文章
基本命令
-
列出所有容器
docker ps -a
-
列出所有本地镜像
docker images -a
-
查看某个容器/镜像的元数据
docker inspect [容器/镜像的名称或ID]
-
查看所有的网桥
docker network ls
-
查看某个网桥的配置信息
docker network inspect [网桥id或者名称]
-
删除自定义的网桥(docker 默认的网桥不可以被删除!)
docker network rm [网桥id或者名称]
-
搜索镜像
docker search [镜像名称]
-
拉取镜像
docker pull [镜像名称]
-
删除某个镜像 或 删除所有镜像
docker rmi [镜像名称/镜像ID]
docker rmi docker rmi $(docker images -q)
-
停止某个容器 或 停止所有容器
docker stop [容器名称/容器ID]
docker stop $(docker ps -aq)
-
删除某个容器 或 删除所有容器
docker rm [容器名称/容器ID]
docker rm $(docker ps -aq)
-
删除某个 或 所有的卷
docker volume rm [卷名称/卷ID]
docker volume rm $(docker volume ls -q)
-
进入某个容器
docker exec -it [容器ID] /bin/bash
-
退出容器
键盘: ctrl + p + q
,不要使用 exit 退出! -
使用 docker-compose 配置文件创建容器
这个命令需要当前文件夹有 compose 的配置文件
docker-compose up -d
-
查找容器长 ID
docker inspect -f '{{.ID}}' [容器名称]
-
拷贝文件到容器
docker cp -r [宿主机文件路径] [容器长ID]:[容器内目标路径]
如:
docker cp -r ./chevereto 329473294236987129378:/var/www/html
-
查看某个docker容器内的日志
docker logs -f container-name | sed 's/\\n/\n/g'
进阶知识
创建网桥 或 修改已经运行容器的网桥
网桥可以粗略的认为是局域网,网桥内的容器可以互相通信。并且可以很好的和外界隔离运行环境。
初始创建容器的时候,如果不指定网桥,那么会使用默认的网桥。
而后期,我们可能需要自定义一个或多个网桥,将不同的容器加入到某个网桥中。
-
创建网桥
docker network create --driver bridge [网桥名称]
其中 --driver bridge
可以不写。
- 连接网桥
连接网桥有 2 种方式:
一种是: 在创建容器的时候链接网桥.
另外一种是: 后期在容器运行的时候,将容器加入到已经存在的网桥中.
- 在创建时连接网桥:
docker create --name [容器名称] --network [网桥名称] [镜像名称]
- 在容器运行的时候,将容器加入到已经存在的网桥中:
docker network connect [网桥名称] [容器名称]
我们可以通过 docker network inspect [网桥id或者名称]
来查看某个网桥的具体信息,比如这个网桥内都是有哪些容器。
有关网桥的简介可以看这篇文章
容器通信
Docker 容器通信
可以看这篇文章
备份docker文件:
tar -czvPf ghostBackup20201230.tar ./DockerComposeFiles/ ./DockerVolumes/
生成一个名为ghostBackup20201230.tar
包 (du -h ./ghostBackup20201230.tar
查看大小)- zip 压缩上面合并2个文件之后的 tar 包
zip -rvjy ghostBackup30201230.tar.zip ./ghostBackup20201230.tar
(V 可加可不加)
docker run -d -p 80:80 --name nginx-test -v ~/Desktop/Test/nginxTest/www:/usr/share/nginx/html -v ~/Desktop/Test/nginxTest/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/Desktop/Test/nginxTest/logs:/var/log/nginx nginx
-
知识点 tar 以及 zip
-
- 打包
#tar默认使用相对路径,-P 是指可以使用绝对路径,但是 -P不能在参数的最后, -C 临时切换到指定的工作目录,然后带上需要打包的文件或文件夹
tar -czvPf ${BACK_UP_NAME}.tar -C ${SERVER_CONTENT_DIR} ${SERVER_CONTENT_NAME} StartShell.sh
-
- 压缩
#参数 -j 说明忽略目录,否则的话,压缩进去的可能会有目录路径
zip -rjvy ${SERVER_CONTENT_DIR}${BACK_UP_NAME}.tar.zip ${SERVER_CONTENT_DIR}${BACK_UP_NAME}.tar
关于 Ghost blog 转储
- 原来没有使用 mysql 而是使用的 sqlite ,所以需要转储数据库。【不必迁移数据库,直接导出建网站内容,然后倒入到新的站点,用户名一致就可以。然后拷贝图片资源】
- 原来用的是 3.42.8 版本的 ghost ,而 mysql 5.7.36 能与 ghost 相连
- 解压
unzip -C ./ghostBackup20201230.tar.zip
- 解包
tar -xvf ./ghostBackup20201230.tar
- 新的命令行工具 tabby
关于命令行访问私有 docker hub 库的问题
命令行访问私有的 docker hub 库,如果不想明文传输密码,可以在 bash_profile
或者自定义的 profile
中,加入以下变量:
export docker_pwd="xxxxxx"
关于删除图片后,外部存储实际上并没有删除文件的问题
这是由于 chevereto
在后台使用 cron
处理任务。 目前看下来是需要手动执行:
docker exec -it --user www-data 容器ID php /var/www/html/cli.php -C cron
具体参见文档