一、docker简介

docker是一个用Go语言实现的应用容器引擎开源项目,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。其广泛应用于开发、测试和生产环境中,帮助开发者和系统管理员简化应用的部署和管理,实现快速的交付,测试和部署。

二、docker安装

1、安装docker依赖

sudo apt update # 更新本地软件包索引

sudo apt install -y ca-certificates curl gnupg lsb-release # 安装Docker官方仓库所需的4个依赖工具

2、配置docker官方仓库

mkdir -p /etc/apt/keyrings # 创建一个存放GPG密钥的目录
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 下载Docker官方GPG密钥,将其解密保存到指定文件
ls -lh /etc/apt/keyrings/docker.gpg # 检查文件是否生成

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null # 将Docker的镜像源地址写入系统软件源列表
apt update # 更新索引

apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 下载并安装Docker的5大核心组件

通过以上步骤,Docker就部署完毕了,接下来就可以在Ubuntu上启动Docker了。

service docker start # 启动Docker

docker run hello-world # 验证是否部署成功

docker version # 查看版本

三、环境搭建

开发时,常常会遇到这些问题:

换台电脑,开发环境要重新配一遍

不同项目的依赖库版本冲突

想临时测试一个库,又不想污染宿主机系统

Docker就可以很好地解决这些问题:

如上图所示,所有开发工具和依赖都装在docker容器里,这样之后一条命令就可以启动完整的开发环境

宿主机只需要有Docker和SSH客户端:

之后通过Xshell进行远程连接,就可以进行开发了:

下面演示如何在Docker容器中搭建C++开发环境,并通过远程连接方式使用它。

1、启动Ubuntu容器

docker pull ubuntu:22.04 # 拉取Ubuntu 22.04镜像

docker run -itd \
  --name cpp-dev \
  -p 2222:22 \
  -v $(pwd)/code:/app \
  ubuntu:22.04 bash
# 启动容器,映射SSH端口(22->2222),挂载代码目录

-itd:后台运行且保持交互

--name cpp-dev:容器命名为cpp-dev

-p 2222:22:宿主机的2222端口映射到容器的22端口(SSH默认端口)

-v $(pwd)/code:/app:挂载当前目录下的code文件夹到容器的/app

2、进入容器安装开发工具

 docker exec -it cpp-dev bash # 进入容器

apt update # 更新包列表

apt install -y g++ gcc make cmake # 安装编译器

apt install -y libjsoncpp-dev # 安装jsoncpp开发库

apt install -y openssh-server # 安装SSH服务

passwd root #设置root密码(用于SSH登录)

service ssh start # 启动SSH服务

service ssh status # 验证SSH是否正常运行

四、远程连接

宿主机可以通过以下方式来连接容器内的SSH。

方式1:

ssh root@localhost -p 2222 # SSH命令连接

方式2:

Xshell新建会话连接,过程如下所示:

主机填写云服务器的公网IP,端口号为2222。

用户名为root,密码填写完毕即可连接,如下所示:

如上图所示,即为连接成功,已进入到容器内部,之后就可以像操作一台服务器一样进行开发。

五、结语

Docker通过容器化技术把应用和它的整个运行环境打包成一个不可变的镜像,确保代码从开发到交付的每一个环节都在相同的环境中运行,Docker的意义在于它让软件交付变得可预测、可复现,让开发者可以专注于代码本身,而不是耗费精力在各种环境适配的问题上。容器技术正在重新定义软件开发的方式,本文从安装Docker到搭建远程开发环境,每一步都是在为实现更高效、更规范的工作流!

更多推荐