Ubuntu docker 安装 QQ/微信wechat

1. 安装 docker

1.0. 安装 curl

如果系统没有安装 curl,先安装 curl

sudo apt-get install curl

1.1. 使用官方安装脚本安装

sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

1.2. 也可以使用国内 daocloud 一键安装命令:

sudo curl -sSL https://get.daocloud.io/docker | sh

详细文档:https://www.runoob.com/docker/ubuntu-docker-install.html

1.3. 源码安装

准备docker.service

vi docker.service

service配置内容:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target

手动下载安装docker,配置服务,验证docker:

cd ~/Downloads
tar -xvf docker-20.10.10.tgz
sudo cp docker/* /usr/bin/
sudo cp docker.service /etc/systemd/system/
sudo chmod +x /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker
#验证docker 版本
docker -v
 
#将登陆用户加入到docker用户组中
sudo groupadd docker
sudo gpasswd -a $USER docker
#更新用户组
newgrp docker
#重启docker
sudo systemctl restart docker
#测试docker命令是否可以使用
docker ps

重新打开一个终端,验证docker,输入:

docker ps

发现不能用,重启电脑,docker ps 提示docker 未启动,莫着急,docker 启动中,稍等就好。

1.4. 由于我之前使用了 snap 安装过 docker,运行 docker 命令出现:

bash:/snap/bin/docker: No such file or directory

而实际上使用官方安装脚本安装后的 docker 应该链接至:/usr/bin/docker
因此将 /snap/bin/docker 链接至 /usr/bin/docker 即可

2. 查看 docker 镜像

sudo docker images

3. 重启 docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

4. 配置国内镜像源 docker 换源#

docker换源的配置文件默认在/etc/docker/daemon.json,若无 daemon.json,直接创建即可

cd /etc/docker

若该目录下无 daemon.json,直接创建

sudo touch daemon.json

编辑daemon.json 文件

sudo gedit daemon.json

将下面内容输入到 daemon.json 中

{
  "registry-mirrors" : [
    "http://ovfftd6p.mirror.aliyuncs.com",
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "debug" : true,
  "experimental" : true
}

保存并重启 docker 服务
确定是否换源成功,如果如下命令能看到 daemon.json 里的网址表示换源成功

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info

5. 安装 wechat

5.1.pull 微信镜像

sudo docker pull bestwu/wechat

5.2.docker run 方法:

sudo docker run -d --name wechat --device /dev/snd --ipc=host \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/wechat/WeChatFiles:/WeChatFiles \
-e DISPLAY=unix$DISPLAY \
-e XMODIFIERS=@im=fcitx \
-e QT_IM_MODULE=fcitx \
-e GTK_IM_MODULE=fcitx \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
bestwu/wechat

注意此脚本输入法是 fcitx框架,如果是IBus,将 fcitx替换成 IBus 即可
遇到过登录后微信闪退问题,脚本中第一行 docker run 增加 --ipc=host 可解决

以后启动微信直接使用命令:

sudo docker start wechat

这样就可以了,使用命令很麻烦

5.3.配置当前用户输入sudo时无需密码

sudo gedit /etc/sudoers

最后加上以下内容:

# username是当前用户名
username ALL=NOPASSWD: ALL

5.4.配置微信图片以及启动脚本

mkdir ~/data/wechat   # 创建微信文件夹 
cp ~/Downloads/wechat.png  ~/data/wechat  # 下载图片,复制到微信文件夹里
vi ~/data/wechat/wechat.sh  # 创建脚本(任意目录)touch wechat.sh,vim wechat.sh ,增加 wechat 脚本
#添加如下内容(前提容器要运行一次)

脚本内容:

#!/bin/sh
sudo docker restart wechat

5.5.启动脚本

先需给脚本加权限

sudo chmod +x ~/data/wechat/wechat.sh

5.6.运行脚本

sh ~/data/wechat/wechat.sh  # 测试脚本是否可以运行(弹出微信登录界面即正常)

5.7.创建微信启动程序入口

sudo vi /usr/share/applications/wechat.desktop
#添加如下内容(注意执行命令和图标所在路径,修改成自己的)

启动程序:

[Desktop Entry]
Version=1.0
Name=WeChat
Exec=/home/XXXXX/data/wechat/wechat.sh
Icon=/home/XXXXX/data/wechat/wechat.png
Type=Application
Encoding=UTF-8
Terminal=false

6. 安装 QQ (QQ 与微信步骤一致,更换脚本即可)

6.1.pull QQ镜像

sudo docker pull bestwu/qq:office

6.2.docker run 方法:

sudo docker run -d --name Tim --device /dev/snd --ipc=host \
-v $HOME/QQ/TencentFiles:/TencentFiles \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
-e XMODIFIERS=@im=fcitx \
-e QT_IM_MODULE=fcitx \
-e GTK_IM_MODULE=fcitx \
-e DISPLAY=unix$DISPLAY \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e VIDEO_GID=`getent group video | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
bestwu/qq:office

注意此脚本输入法是 fcitx框架,如果是IBus,将 fcitx替换成 IBus 即可
遇到过登录后微信闪退问题,脚本中第一行 docker run 增加 --ipc=host 可解决

以后启动qq直接使用命令:

sudo docker start Tim

这样就可以了,使用命令很麻烦

以下操作在微信里面已经做好了,可以不必重复操作

6.3.配置当前用户输入sudo时无需密码

sudo gedit /etc/sudoers

最后加上

# username是当前用户名
username ALL=NOPASSWD: ALL

6.4.配置qq Tim 图片以及启动脚本

mkdir ~/data/qq   # 创建微信文件夹 
cp ~/Downloads/Tim_qq.png  ~/data/qq  # 下载图片,复制到qq文件夹里
vi ~/data/qq/Tim.sh  # 创建脚本(任意目录)touch Tim.sh,vim Tim.sh ,增加 qq 脚本
#添加如下内容(前提容器要运行一次)

脚本内容:

#!/bin/sh
sudo docker restart Tim

6.5.启动脚本

先需给脚本加权限

sudo chmod +x ~/data/qq/Tim.sh

6.6.运行脚本

sh ~/data/qq/Tim.sh  # 测试脚本是否可以运行(弹出微信登录界面即正常)

6.7.创建qq Tim 启动程序入口

sudo vi /usr/share/applications/Tim_qq.desktop
#添加如下内容(注意执行命令和图标所在路径,修改成自己的)

启动程序:

[Desktop Entry]
Version=1.0
Name=Tim_qq
Exec=/home/XXXXX/data/qq/Tim.sh
Icon=/home/XXXXX/data/qq/Tim_qq.jpeg
Type=Application
Encoding=UTF-8
Terminal=false

7. 启动微信/QQ

# 打开微信
sudo docker start wechat

# 打开qq
sudo docker start Tim

打开应用程序,如果没看到图标,90% 是路径配置错误了,还有10%可能是单词或者大小写以及后缀错误, 检查下。
若第一次只显示登录界面,登录成功后不显示,重启 ubuntu 即可

8. 关闭微信/QQ

#关闭微信
sudo docker stop wechat
#关闭qq
sudo docker stop Tim

9. 删除QQ 或微信容器

# 删除qq
sudo docker rm -f Tim
# 删除wechat
sudo docker rm -f wechat

10. 删除qq或微信镜像

sudo docker rmi <镜像名字>