全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 5915|回复: 66

Docker傻瓜使用速成

  [复制链接]
发表于 2021-9-4 09:21:57 | 显示全部楼层 |阅读模式
本帖最后由 sRGB 于 2021-9-16 13:50 编辑

# 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多阶段构造: lolcat 终端中输出彩虹特效的命令行工具
         https://hostloc.com/thread-892423-1-1.html

导入到 Xshell 后,只要点击鼠标,就能完成常用命令

Xshell_7_快速命令栏导入包.zip (4.43 KB, 下载次数: 14)
发表于 2021-9-4 15:37:56 | 显示全部楼层
本帖最后由 6fyC8r 于 2021-9-4 15:40 编辑

我来补充一下吧,
如何查看并干净卸载所有容器和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


发表于 2021-9-4 09:23:37 来自手机 | 显示全部楼层
关闭、开机、重启容器的呢
 楼主| 发表于 2021-9-4 09:29:02 | 显示全部楼层
本帖最后由 sRGB 于 2021-9-4 11:55 编辑



Portainer是Docker的图形化管理工具,提供状态显示面板.....

# 查询当前有哪些Portainer镜像
docker search portaine

# 安装Docker可视化界面Portainer
docker run --name Portainer   portainer/portainer   ...  省略
  
# 删除Portainer服务
docker rm  -f Portainer
docker rmi portainer/portainer
Tip 该用户已被删除
发表于 2021-9-4 09:32:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2021-9-4 09:35:22 | 显示全部楼层
Tip 发表于 2021-9-4 09:32
请问docker怎么备份和传数据呢


# 进入 mysql 容器
docker exec -it zfaka_mysql_1 bash

# MySQL数据库备份
mysqldump  -uroot -p密码(mysql) --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
发表于 2021-9-4 09:37:31 | 显示全部楼层
还是docker方便,最近在学习这方面的知识。
 楼主| 发表于 2021-9-4 09:40:43 | 显示全部楼层
法外狂徒张三 发表于 2021-9-4 09:23
关闭、开机、重启容器的呢

建立容器的时候 可以指定一个 容器名称,不指定 就使用   hash 字符的 作为 ID号

docker  stop    name(或者ID,使用name会简单点)
docker  start    name
docker  restart   name

-----------------------------
# 宿主机和容器互相复制文件
docker cp name:/root/a.txt   /root/a.txt
docker cp /root/a.txt   name:/root/a.txt   

发表于 2021-9-4 10:22:29 来自手机 | 显示全部楼层
loc需要这种帖子

点评

https://docs.docker.com 请。 自己懒找借口而已,成熟文档一大堆,官方自带一键  发表于 2021-9-4 22:14
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-26 16:36 , Processed in 0.074625 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表