2020-11-28 ubuntu下docker安装方法

昨天为了解决pyodbc访问mssql出现的openssl版本问题,将mssql升级成了2017版。晚上睡觉时突然想到,是不是vscode的mssql插件配置连接时出现握手失败也是这个原因。既然已经升级了mssql,那vscode的mssql插件应该也可以使用了。今早起床后试了一下,果不其然成功连通了。这个问题算是解决了,之前在网上搜了半天也没有找到答案,看来还在用mssql2008的人少之又少,从ubuntu最新版用vscode去访问mssql的人那更少了,如果你因为搜索这个问题看到这篇文章,都是稀有保护动物,握手。
今天主要工作包括测试了远程控制功能和初步尝试了Docker部署服务器。
远程控制首先想到的就是大名鼎鼎的teamviewer了,这种工具肯定会有ubuntu版本的呀。到teamviewer官网下载ubuntu系统下的最新版,windows系统上也下载对应版本,两头都装好就可以互相远控了。teamviewer可以设置开机启动,并配置固定密码,这样ubuntu服务器重启后一样可以远控。这个比较简单,相关配置网上也有很多资料。
关于docker,我之前只知道个大概,类似于一个裁剪的虚拟操作系统,可以定制各种镜像,这些镜像针对不同的应用需求已经做了裁剪,比如原始的ubuntu镜像、nginx镜像、python镜像,甚至还有django镜像。ubuntu镜像包含了ubuntu最基本的功能,甚至连最基本的vi文本编辑器都没有(其实也不需要有,后面你就知道了,想在docker容器里修改配置文件,完全可以在宿主机上修改好后再拷贝进容器里进行覆盖,毕竟宿主机上还可以用gedit不是),当然也可以在这个镜像的基础上自己扩展出nginx服务器等等。一个docker容器上一般只跑一个应用(也可以像配置ubuntu服务器一样跑很多应用,但这就违背了docker部署的初衷),可以将docker容器理解为一个单一应用的虚拟服务器,而一台宿主机上可以很方便地创建多个docker容器,相当于有多个轻量级的虚拟服务器。这里出现了镜像、容器的概念,镜像就相当于类,容器是类派生出的对象,比如一个nginx镜像可以生成多个容器,每个容器上都跑一个nginx服务器。
实践出真知,千里之行始于安装,先来安装docker。ubuntu下的docker安装最简单的方法是使用官方脚本,一条指令搞定,也可以使用国内daocloud的脚本:

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

安装好docker后就需要拉取镜像。首先还是套路,为docker更换国内镜像源,否则拉取镜像的速度很感人。在/etc/docker目录下新建daemon.json文件,gedit /etc/docker/daemon.json,将下面这段包含了中科大、网易和阿里镜像源的配置信息粘贴到daemon.json中保存,然后重启docker,重启docker的命令是systemctl restart docker,重启后的docker再拉取镜像时速度就很快。

{
    "registry-mirrors" : [
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://hub-mirror.c.163.com",
        "https://cr.console.aliyun.com/"
  ]
}

先拉取一个nginx镜像试试,可以用docker serach nginx查找一下有没有这个镜像,返回了一堆信息,第一条就是官方最新版的nginx镜像。拉取到本地的命令是docker pull nginx,拉取后可以查看一下本地的镜像仓库,docker image ls,可以看到已经存在了。通过这个镜像生成一个容器,docker run -d -p 81:80 --name mynginx nginx,就可以在在后台生成一个nginx容器:其中-d表示是后台进程,不会随着当前终端的关闭而关闭;-p 81:80是端口映射;将宿主机81端口映射给这个容器的80端口;--name mynginx是给这个容器命名,方便以后操作这个容器,否则以后要通过类似一个进程号的东西来操作它,如果没有这个参数,docker会随机分配一个名称;最后那个nginx就是基于这个nginx镜像来生成容器。好了,容器有了,我们可以通过docker ps来查看当前已经生成的容器状态,如果在普通权限下,只能看到当前活动的容器,通过sudo docker ps -a可以看到全部容器,包括挂起的、停止的容器。
那怎么进到容器内部去操作容器里的虚拟操作系统呢?sudo docker exec -it mynginx /bin/bash,-it是以交互终端的方式运行mynginx上的/bin/bash,这样就进到了虚拟操作系统中的终端。可以试试ls、cd等指令,是不是找到熟悉的感觉了。既然是nginx镜像产生的容器,自然会有/etc/nginx目录下的配置文件,这个裁剪的虚拟系统中cat命令还是有的,可以查看配置文件,cat /etc/nginx/nginx.conf可以看到这里的nginx.conf会加载conf.d目录下的所有配置文件,cat一下conf.d下的default.conf看一看,就是nginx熟悉的server配置文件。这里有个小技巧,在终端下输入某个目录或者文件名时,可以随时按下tab键试试,如果匹配前缀的目录或文件只有一个,会自动补齐,如果匹配多个,则可双击tab列出所有候选项。Linxu的这个功能我就美其名曰摸着石头过河吧。
接着就是把昨天已经发布在ubuntu上的vue dist目录上传到容器里,上传文件的命令是docker cp 本地路径 mynginx:/虚拟系统的路径。看到这个mynginx名字的用处了吧,如果当时生成容器时没有命名,那只能使用docker ps查出来的容器的container ID来操作了,类似于这样一串天书“c0bd9054f0e9”,很不方便吧。我这里把本地的dist目录上传到容器中nginx的网站根目录,刚才cat出来的default.conf文件中给出了这个目录:/usr/share/nginx/html,于是指令就是docker cp ~/myweb/dist mynginx:/usr/share/nginx/html,这样vue的dist目录就上传到nginx容器的网站根目录下了。由于生成容器时已经将主机81端口映射给容器了,在主机浏览器上访问localhost:81就可以访问到容器中的nginx网站了。打开的是nginx的欢迎页,而不是预想中的vue项目主页,因为我把dist目录整体上传,应该通过localhost:81/dist才能访问到vue的首页。然而这是不可以的,vue是单应用模式,其不支持网址的二级目录,必须要在根目录才行。那就修改nginx的default.conf文件,将80端口的root设置为dist目录。怎么修改?没有vi,通过apt去安装?也不是不可以,首先得apt update,但完全没必要。cat出default.conf文件的内容,屏幕上选中复制,再到主机的桌面上新建一个同名的文件(在主机桌面右键,点击打开终端,gedit default.conf),将复制的内容粘贴进去,进行修改,将root指向dist目录,保存后再通过docker cp指令上传到容器中覆盖就可以了。覆盖了配置文件后需要重启nginx -s reload,用主机浏览器再访问一下localhost:81,vue项目首页出现了吧。
docker的初步使用就这些了,后面再研究怎么打包自己的镜像和自动化部署。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容