用docker打造一个ubuntu开发环境 | 您所在的位置:网站首页 › docker云桌面有哪些 › 用docker打造一个ubuntu开发环境 |
1.背景
我们在做ubuntu应用开发时,手中的开发电脑搭载的操作系统一般是windows或者macos。 大多数人都会选择安装VMware或者VirtualBox。然后下载ubuntu对应发行版本的iso镜像安装一个虚拟机。 而我们开发人员只需要借助ubuntu的编译器编译自己的代码而已,安装一个完整桌面版的ubuntu虚拟机显然太耗费个人电脑的资源了。 因此,可以选择安装一个docker容器,小巧精简。下面介绍一下我在我个人MAC电脑上搭建ubuntu开发容器的过程。 2.环境搭建 2.1. 安装docker参考文章连接:https://www.runoob.com/docker/macos-docker-install.html 这个文章中介绍的安装流程很详细。有一些需要补充一下: (1)注册账号安装完成docker desktop之后,会提示你登录,如果你第一次使用,很显然你是没有登录的账号和密码。 如果你拥有一个个人或公司或组织的远程镜像仓库,那就无需注册账号了。 如果你没有这样的远程仓库,并且想后期制作镜像,然后上传(push)到远程仓库方便拉取,那么你最好注册一个账号。 注册账号时,会让你选择你要注册的账号类型,一般有三个:免费、普通会员、高级会员。 免费的账户可以使用docker hub官网提供给你的1个G左右的镜像仓库空间,供你上传你自己制作的镜像。会员则会享受到更大空间的仓库和更优质的上传下载速度。
(2)换镜像源 由于docker hub镜像仓库服务器在国外,因此国内在拉取docker hub上的源时非常缓慢,需要改为国内的免费的镜像仓库源地址。 国内的源有很多,文章中的其它章节有介绍:https://www.runoob.com/docker/docker-resources.html。也可以自行百度搜索寻找其他源地址。 更换源之后拉取镜像时速度就非常快了。 连接中的文章当时使用的docker desktop版本很旧,新版本在配置镜像源的方式上有很大更改,由之前的界面操作方式改成json文件配置方式。 因此我介绍一下新版本的修改docker hub源的方式: 2.2. 准备ubuntu镜像如果你没有属于自己的或组织的远程镜像仓库,那么你可以选择去docker hub官方网站上搜索ubuntu的镜像。 几乎所有的发行版操作系统厂商都在docker hub官方网站上放置了自己的操作系统镜像。当然一般是最小集合的。 以ubuntu1804为例: 搜索ubuntu 找到官方仓库下的1804版本 拉取指定的镜像到本地 将上图中箭头指向的命令复制,然后在本机本地执行即可下载。 可以发现镜像版本非常小合计才60MB多一些。而你用虚拟机时,需要下载的ubuntu1804发行版ISO镜像包最起码得1个G以上甚至更大。 拉取成功后,执行git image ls会显示当前本地的镜像列表。 2.3、制作镜像 由于我个人打算使用ubuntu1804进行 C/C++ 和python3的开发,因此需要安装基础工具。 2.3.1 启动镜像 执行:docker run -d -i -t --net=host --name my-ubuntu -v/Users/zhanglining:/opt/zln ubuntu:1804 注意:我这里增加一个卷映射,可以实现宿主机和docker容器之间代码文件的共享访问。方便我 开发在宿主机上进行,编译在容器中进行。 执行docker ps 查看当前运行中的容器。 执行 docker exec -it bash ,登入容器内部终端。 docker命令行工具的使用参考学习:https://www.runoob.com/docker/docker-command-manual.html 2.3.2 安装必要的开发组件 (1)首先修改ubuntu1804的软件源,使用ubuntu的官方源下载软件速度非常慢。 备份Ubuntu 的软件源配置文件/etc/apt/sources.list, 将该文件复制一份,改个名字作为备份 将/etc/apt/sources.list中的内容清空, 改成新的源地址,目前国内好多源,比如:清华大学、阿里云、网易等等可以自行百度搜索源地址,粘贴上去即可。 修改完成保存退出。 执行:apt update & apt upgrade (2)安装c/c++编译器 apt-get install gcc-7 g++-7 安装libcul库 还有其他版本的libcurl,可根据自己需求安装。包含openssl 是为了支持https apt-get install libcurl4-openssl-dev 头文件路径安装位置:/usr/include/curl 库文件路径安装位置:/usr/lib/x86_64-linux-gnu/libcurl.so.4 安装libjsoncpp库 apt-get install libjsoncpp-dev 头文件在:/usr/include/jsoncpp/json 动态库在:/usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.4
注意:能联网的情况下,可以通过apt-get命令安装大多数的软件和动态库, 如果无法联网,或者需要安装指定版本的动态库,可以自行去官网或者github下载源码手动编译安装,毕竟已经安装了gcc和g++编译器。
(3)安装python 安装python2:apt-get install python 安装Python3:apt-get install python3 安装pip3:apt-get install python3-pip
注意:python3默认安装的是3.6版本,如果希望安装其它版本,可以去下载python3的源码,解压后自己编译手动安装。 2.3.3 制作镜像并上传到远程仓库 安装了很多软件和动态库,但只要容器停止重启,之前安装的内容都会丢失,系统恢复为镜像初试状态。 因此,需要保存当前状态的容器为一个新的镜像。 docker commit -a 'zhanglining' -m 'install python' 04452eb82b59 zhanglining/develop-ubuntu1804:latest 注意我这里的前缀 "zhanglining/" 一定要和你dockerhub的账户名一致,否则会失败,并且提示: "denied: requested access to the resource is denied" 执行完毕docekr commit之后执行docker image ls会看到本地已经生成了个新的刚制作成功的镜像。 将此镜像上传到docker hub的远程仓库中: docker push zhanglining/develop-ubuntu1804:latest
注意:以后开发过程中,本地镜像每次有更新(安装了新的动态库或软件)都要git commit 然后git push。
|
CopyRight 2018-2019 实验室设备网 版权所有 |