作者:罗锐

前言

最近在做 Open Harmony L0 设备的开发,为了开发更加的方便,搭建了SSH、Samba、Docker这些使用比较频繁的工具,在此记录一下。分享经验和踩过的坑,希望对后续要做这块的同学会有点帮助,能快速上手。欢迎评论区提出宝贵意见,一起交流,共同进步。
本文主要从3个部分来介绍:

  1. 搭建常用开发环境
  2. 安装Samba
  3. docker的基础知识

1. 搭建常用开发环境

1.1 VScode通过SSH连接Ubuntu

img

  • 在Ubuntu中也需要安装SSH,在终端中通过以下两个命令安装。

    sudo apt-get install ssh
    sudo apt-get install openssh-server
    
    # 并查看当前Ubuntu的IP地址
    ifconfig
    
  • 在Vscode下按住 Ctrl+Shift+P,输入 remote 选择下图中的SSH配置文件进行配置。

img

  • 根据在Ubuntu中通过命令 ifconfig 得到的ip地址填写到配置中

img

  • 在Vscode下按住 Ctrl+Shift+P,输入 remote 选择 Remote-SSH进行连接。

img

1.2 错误处理

如果出现 An SSH installation couldn't be found,则需要在windows下安装SSH的客户端并配置环境变量。

  • 可以 win+R 输入 cmd 进入命令行里,输入 ssh 查看windows有没有安装SSH。

img

1.3 配置SSH无密码连接(非必要)

  • Windows 的命令行中输入 ssh-keygen -t rsa -C "xxx@chinasoftinc.com",按 Enter 键3次生成以下文件,将框起来的文件拷贝到虚拟机中的 home 目录下。

img

  • Ubuntu 的终端下,输入一样的命令 ssh-keygen -t rsa -C "xxx@chinasoftinc.com" ,也是按 Enter 键3次。

  • Ubuntu 的终端下,进入刚刚拷贝的 id_rsa.pub 的目录下,将id_rsa内容以追加的方式,写入anthorized_keys文件里。命令为以下:

    cat id_rsa.pub >> ~/.ssh/authorized_keys
    

至此,免密登录就已经完成,下次登录不需要再输入密码啦~

2.安装Samba

我们在开发的过程中,难免需要在与目标机器来回拷贝数据。而VMwere有时候tool工具不是很好用,更新tool还时常出现问题。所以我们一般情况就会安装一个Samba来解决这个问题,让访问目标机器就像访问自己磁盘一样简单。那我们开始吧~

  • Ubuntu 中安装我们所需的软件 Samba

    sudo apt-get install samba
    
  • 配置 samba,在打开的文件末尾添加如下内容:

    sudo vim /etc/samba/smb.conf
    
    # 要添加的内容如下
        [share]
        comment = Temporary file space
        path = /home/user/
        writable = yes
        browseable = yes
        guest ok = yes
        public = yes
        valid users = user
        readonly = yes
    
    # Tisp 此处需要vi 或者 vim工具来进行修改
    # 缺少工具就使用 sudo apt-get install vim 安装一下
    # 输入sudo vim /etc/samba/smb.conf 之后按 i 就可以粘贴啦(插入模式)
    # 粘贴之后按 Esc 推出插入模式
    # 此时按 Shift + ; 键进入命令行模式
    # 输入 wq 按回车即可保存并退出
    
    # 每次改动之后 source 是一个好习惯
    source /etc/samba/smb.conf
    
  • 用下面的命令添加自己的登录用户名和密码,建议与Ubuntu的一致(对外的设备可不能这么玩)。

    sudo smbpasswd -a 用户名
    输入两次密码
    
  • 添加 Ubuntu 的网络映射

img

  • 配置 samba 的路径 \\192.168.111.129\share ,即 Ubuntu 的IP地址加共享的路径。

img

  • 在输入刚刚设置的用户名和密码后,就完成啦~

img

3.docker的基础

3.1 docker 是什么,用来干什么?

在开发的过程中我们需要搭建很多很多的环境,但是换一个Ubuntu的时候就要重新再次搭建。想想痛苦的过程不是很想经历多次,毕竟还是撸代码爽呀~

所以我们就需要一个专门保存我们搭建好的环境,用的时候拿出来就好了,这就是docker的作用了,一个类似沙盒的虚拟机。

目前来看,我们使用docker是为了适配各种不同的编译构建环境,docker是运行在linux系统下的虚拟系统(也可以把docker认为是一个VMware)。通过docker去编译构建,相当于把工程放入到沙盒中去操作,非法操作对主机无任何影响。

3.2 获取 docker

这里就是安装docker的软件,安装完成还需要下载对应的镜像才能使用哦。

# 安装docker
sudo apt install docker.io

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io

sudo apt-get update
# 添加一个新的 HTTPS 软件源,安装一些允许通过HTTPS才能使用的软件包
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# curl 导入源仓库的 GPG key,将官方Docker存储库的GPG密钥添加到系统
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 将 Docker APT 软件源添加到系统
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装docker (docker-ce 社区版、 docker-ee 企业版)
sudo apt update
sudo apt install docker-ce
#sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证docker
sudo systemctl status docker
# 输出大概如下
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-05-21 14:47:34 UTC; 42s ago
# 以上,docker工具下载完成

3.3 获取docker镜像

Docker容器是从Docker镜像构建的。默认情况下,Docker从 Docker Hub 中提取这些镜像,这是一个由Docker管理的Docker镜像市场,这是Docker项目背后的公司。任何人都可以在Docker Hub上托管他们的Docker镜像,所以您只需要将您的应用程序和Linux放在那边托管即可。
S

# 查找远端的镜像
sudo docker search ubuntu

user@ubuntu:~$ sudo docker search ubuntu
NAME                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu              Ubuntu is a Debian-based Linux operating sys…   16717     [OK]       
websphere-liberty   WebSphere Liberty multi-architecture images …   296       [OK]       
ubuntu-upstart      DEPRECATED, as is Upstart (find other proces…   115       [OK]       
neurodebian         NeuroDebian provides neuroscience research s…   105       [OK]   
# 获取远端镜像
sudo docker pull ubuntu

# 查看镜像
sudo docker images

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       latest    df5de72bdb3b   2 days ago   77.8MB

3.4 运行 docker

这里就是把下载好的镜像通过docker运行起来。

# 运行
docker run -it -v $(pwd):/home/openharmony ubuntu    # /home/openharmony 可以自定

docker run -it --name my_name --hostname ubuntu_name -v $(pwd):/home/openharmony ubuntu   # 这个是指定主机名和运行的用户名称

# $(pwd) 这是shell命令,获取当前路径
# my_name 可用于删除这个运行的docker
# ubuntu_name 是docker进去之后显示的主机名字

3.5 保存修改后的镜像

我们每次进去这个docker镜像,他都是上次保存的样子。如果我们需要搭建环境,都配置好了怎么拿到别的环境中去使用呢?跟我一起来实现吧~

  • 先进入docker,把需要的环境配置好,此时需要返回到 ubuntu 中来,可以在 ubuntu 中再开一个终端进行操作。
  • 使用以下的命令进行保存当前的修改。
# 查看运行中的 docker
sudo docker ps

CONTAINER ID IMAGE    COMMAND     CREATED       STATUS          NAMES
bde135cb1ab9 ubuntu   "bash"    2 minutes ago   Up 2 minutes    sweet_cori

# 保存指定镜像的改动,前提是docker未退出的情况下进行
docker commit bde135cb1ab9 ubuntu

3.6 打包 docker 镜像

环境配置好了,怎么给到别的环境去使用呢?那就需要以下两种方式打包出来了。

  • 保存与加载我们的 docker 镜像
# 查看已有镜像
sudo docker images

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       latest    df5de72bdb3b   2 days ago   77.8MB

# 保存镜像
docker save df5de72bdb3b ubuntu > ubuntu.tar

# 加载镜像
docker load < ubuntu.tar
  • 导出与导入我们的 docker 镜像
# 查看 docker
sudo docker ps

CONTAINER ID IMAGE    COMMAND     CREATED       STATUS       NAMES
ffcdad1d05af ubuntu "bash" 6 seconds ago Up 6 seconds hardcore_lumiere

# 导出镜像 中间的参数是docker ps 查看运行中的docker才能导出
docker export ffcdad1d05af > ubuntu.tar

# 在新机器导入镜像
docker import - ununtu < ubuntu.tar

# 新机器首次运行 可能需要加 /bin/bash
docker run -it -v $(pwd):/home/openharmony ubuntu /bin/bash

3.8 docker 的删除

有时候我们平凡使用docker,他会有停止的镜像占用我们的资源,或者有的镜像我们不需要了,就需要清除干净。

  • 关闭某一运行中的镜像,并进行清除。
# 查看运行中的镜像
user@ubuntu:~$ sudo docker ps

CONTAINER ID   IMAGE        COMMAND       CREATED         STATUS         PORTS     NAMES
835b42d983dd   ubuntu_2.1   "/bin/bash"   5 seconds ago   Up 3 seconds             keen_sammet

# 停止镜像
user@ubuntu:~$ sudo docker stop 835b42d983dd
835b42d983dd

# 删除镜像
user@ubuntu:~$ sudo docker rm 835b42d983dd
835b42d983dd
  • 关闭所有运行中的镜像,并进行清除。
# 关闭所有运行中的docker
sudo docker stop $(sudo docker ps -a -q)

# 删除所有占用的容器

sudo docker rm $(sudo docker ps -a -q)
  • 删除无用的docker镜像
# 查看镜像
sudo docker images
REPOSITORY  TAG       IMAGE ID       CREATED        SIZE
ubuntu      latest    27941809078c   2 weeks ago    77.8MB

# 删除镜像 可用全量停止、全量删除使用的镜像
docker rmi 27941809078c
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:34fea4f31bf187bc915536831fd0afc9d214755bf700b5cdb1336c82516d154e
Deleted: sha256:df5de72bdb3b711aba4eca685b1f42c722cc8a1837ed3fbd548a9282af2d836d
Deleted: sha256:629d9dbab5edeac7fa51f205839d7f9bb629a5e83548da3a183fb66c22fe7af7

更多原创内容请关注:中软国际OpenHarmony技术团队

入门到精通、技巧到案例,系统化分享OpenHarmony开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐