现代示范校建设专题网站,机关单位网站建设的重要性,云匠网投诉电话,wordpress传入视屏黑屏文章目录 前言一、docker安装1.1、下载docker安装包1.2、解压1.3、移动1.4、docker注册成系统服务1.5、添加文件权限1.6、设置开机启动1.7、启动docker1.8、测试是否启动 二、镜像加载2.1、镜像准备2.2、加载镜像2.3、查看已加载镜像2.4、进入镜像 三、打包镜像3.1、创建 Docke… 文章目录 前言一、docker安装1.1、下载docker安装包1.2、解压1.3、移动1.4、docker注册成系统服务1.5、添加文件权限1.6、设置开机启动1.7、启动docker1.8、测试是否启动 二、镜像加载2.1、镜像准备2.2、加载镜像2.3、查看已加载镜像2.4、进入镜像 三、打包镜像3.1、创建 Dockerfile3.2、构建镜像3.3、运行容器3.4、导出镜像 前言
想必大家都遇到过类似的困扰拿到git上的一套代码想在本机上运行又缺少环境。配制环境不是遇到缺少库就是版本不兼容各种问题。大家共同开发一套代码如果有共同的服务器配置一次环境大家都可以用如果没有就需要每个人都需要配置环境又费时又费力。这时候就需要我们的docker。docker是什么Docker 是一个开源的容器化平台用于开发、运输和运行应用程序。它将应用程序及其依赖项打包到一个可移植的容器中确保在任何环境中都能一致地运行。简单来说就是只要一个人把运行环境配置好把环境打包分享出来其他人直接用docker加载这个文件分分钟就可以运行代码。当然你也可以把你的环境打包分享给其他人。
一、docker安装
1.1、下载docker安装包
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz1.2、解压
tar -zxvf docker-24.0.6.tgz1.3、移动
移动到/usr/bin目录
sudo cp docker/* /usr/bin/1.4、docker注册成系统服务
gedit /etc/systemd/system/docker.service没有gedit的下面命令安装 sudo apt update sudo apt install gedit 复制下面内容写入docker.service文件
[Unit]
DescriptionDocker Application Container Engine
Documentationhttps://docs.docker.com
Afternetwork-online.target firewalld.service
Wantsnetwork-online.target[Service]
Typenotify
ExecStart/usr/bin/dockerd
ExecReload/bin/kill -s HUP $MAINPID
LimitNOFILEinfinity
LimitNPROCinfinity
TimeoutStartSec0
Delegateyes
KillModeprocess
Restarton-failure
StartLimitBurst3
StartLimitInterval60s[Install]
WantedBymulti-user.target1.5、添加文件权限
sudo chmod x /etc/systemd/system/docker.service
sudo systemctl daemon-reload 1.6、设置开机启动
sudo systemctl enable docker.service1.7、启动docker
sudo systemctl start docker1.8、测试是否启动
sudo docker run hello-world到这里就算完成了显示 unable to find image 先不用管
二、镜像加载
2.1、镜像准备 如果没有docker按照上文一安装如果有了 docker需要一个已经打包完成的镜像 假设打包的镜像命名为 ros.tar。 2.2、加载镜像
docker load -i ros.tar # ros.tar 修改为自己名字如果镜像较大需要等待数分钟
2.3、查看已加载镜像
docker images这时候会显示镜像对应的属性表格 REPOSITORY TAG IMAGE ID CREATED SIZE 2.4、进入镜像
docker run -it REPOSITORY:TAG 假设 REPOSITORY 为 rosTAG 为 latest则
docker run -it ros:latest 三、打包镜像
同样的我们也可以把自己的镜像打包分享给他人使用
下面以打包 ros2_humble ubuntu22.04 基础环境为例
3.1、创建 Dockerfile
基础环境最好通过 Dockerfile 创建创建名为 Dockerfile 的文件
touch Dockerfile复制以下内容
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04# 设置环境变量
ENV DEBIAN_FRONTENDnoninteractive# 更新包管理器并安装ROS 2依赖
RUN apt-get update apt-get install -y \locales \curl \gnupg2 \lsb-release \ locale-gen en_US.UTF-8 \ apt-get install -y software-properties-common \ add-apt-repository ppa:osrfoundation/osrf-ros2 \ apt-get update apt-get install -y \ros-humble-desktop \ apt-get clean rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /workspace# 启动bash
CMD [/bin/bash]3.2、构建镜像
保存了上述 Dockerfile 文件在同一目录下运行下面命令
docker build -t ros2-ubuntu .如果这一步显示网络失败需要梯子进行我试过国内许多源现在都被禁止了。如果有梯子需进行如下设置。亲测有效具体是参考一位博主的操作。 创建或编辑 Docker 的系统代理配置文件 创建目录并编辑代理配置文件 sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf添加以下内容 [Service]
EnvironmentHTTP_PROXYhttp://127.0.0.1:7890
EnvironmentHTTPS_PROXYhttp://127.0.0.1:7890
EnvironmentNO_PROXYlocalhost,127.0.0.1注意将 http://127.0.0.1:7890 替换为 Clash 监听的实际代理地址和端口。如果 Clash 使用其他端口请相应调整。 保存并退出编辑器。 重新加载 systemd 配置并重启 Docker sudo systemctl daemon-reload
sudo systemctl restart docker验证配置 尝试拉取一个小的 Docker 镜像验证配置是否正确。例如 docker pull hello-world3.3、运行容器
假设镜像名是ros2-ubuntu
docker run -it ros2-ubuntu如果想在容器内部访问、编译本地代码。可以运行容器时使用-v选项将本地代码目录挂载到容器中。
docker run -it -v /home/jeff:/home ros2-ubuntu 例如我把本地 /home/jeff 目录挂载到镜像 /home 目录下。如此在镜像home目录就可以访问 本机 /home/jeff 目录下的代码了
3.4、导出镜像
如果编译代码的时候发现镜像里缺少了一些库想自己在镜像里安装然后再打包出去可以如此操作。
以安装 yaml-cpp 安装包为例。进入镜像安装 yaml-cpp 库git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build
cd build
cmake -DBUILD_SHARED_LIBSON ..
make
sudo make install** 注过程中不要 exit 退出镜像 ** 退出再进入需要重新安装 yaml-cpp 库。为了不用反复安装我们可以重新打包一份镜像下次直接加载新镜像。
docker save -o ros2.tar my-id # ros2.tar可以换成自定义名称my-image镜像名或ID。 docker images可以查看