一、 前言
Docker 解决了软件环境部署复杂的问题。对于一个传统的软件工程,开发人员把写好的代码放到服务器上去运行是一件很头疼的事情,因为常常会出现环境不兼容而导致各种各样的 Bug。比如说,开发是在 Windows 系统下编写的代码,放到 Linux 服务器上可能会出问题;开发在本地依赖了一个系统自带的驱动,服务器上却没有这个驱动;开发在本地设置了很多环境变量,服务器上又得重新设置,在软件部署的时候,经常会发生在这台机器上可以跑,但是在另一台机器上却运行失败的情况。运维人员需要不断在开发环境和服务器环境之间调试。有了 Docker, 只需要简单的几行命令,就可以做到所有的运行环境都一致。
本文主要介绍了如何在宿主机系统上进行 Docker 服务的部署,以及如何加载 Docker 镜像、如何创建并运行 Docker 容器等。
二、 安装 Docker 及相关软件包
1. 安装 https 相关的软件包
$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ sudo apt-get install ca-certificates
$ sudo apt-get install curl
$ sudo apt-get install software-properties-common
2. 设置 Docker 的 apt 仓库地址
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
3. 安装 Docker 软件包
$ sudo apt-get install docker-ce
4. 测试 Docker 服务是否已部署成功
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
# 出现以上 log 即证明 Docker 服务已部署成功。
5. 查看安装完成的 Docker 版本
$ docker --version
Docker version 20.10.11, build dea9396
三、 搭建 SemiDrive Docker 环境
1. 加载镜像 sd_build_docker.tar.gz
$ sudo docker load --input ./sd_build_docker.tar.gz
2. 检查 image 是否加载成功
$ docker images
#出现加载的镜像名 sd_build_3
3. 启动容器
$ docker run -it --name chelsea_ubuntu16_04 --hostname ubuntu16 -v media/atu/data/chelsea/x9h/:/home/workspace sd_build_3 /bin/bash
查看容器状态
$ docker ps -a
#说明容器已经启动
四、 Docker 常用命令
1. 创建并运行一个新的容器
$ docker run -it --name chelsea_ubuntu16_04 --hostname ubuntu16 -v media/atu/data/chelsea/x9h/:/home/workspace sd_build_3 /bin/bash
基于镜像 sd_build_3 创建名称为 chelsea_ubuntu16_04 的容器,设置容器中的 Ubuntu 系统 hostname 为 ubuntu16,并挂载指定的宿主机目录 media/atu/data/chelsea/x9h/ 到容器中的 /home/workspace 目录下。
2. 切换回宿主机
按 Ctrl+D 或运行 exit 命令:直接停止容器,容器中的系统会停止运行;
先按下 Ctrl+P,然后按下 Ctrl+Q:不停止容器切换终端回到宿主机。
# 提示 read escape sequence 后回到宿主机
3. 进入正在运行的容器
$ docker exec -it chelsea_ubuntu16_04 /bin/bash
4. 停止和启动容器
$ docker stop chelsea_ubuntu16_04
$ docker start chelsea_ubuntu16_04
5. 查看容器状态
$ docker ps -a
6. 删除容器
$ docker rm chelsea_ubuntu16_04
7. 重命名容器
$ docker rename chelsea_ubuntu16_04 chelsea_ubuntu16_04_rename
8. 宿主机和容器之间传输文件
如果在创建容器时已指定了挂载目录,则只需把文件放到挂载的宿主机目录下,容器中即可直接访问。如果没有挂载,可以使用 docker cp 命令进行传输。
复制文件到容器中 /home 目录下
$ docker cp filetest ubuntu16.04_felix:/home
复制容器中的目录 /home/dirtest/ 到宿主机的当前目录。
$ docker cp ubuntu16.04_felix:/home/dirtest/ ./
五、 参考文档
- 《SD_X9_SDK_User_Manual》
- 《Hands-On Docker 服务的部署及使用 on Ubuntu16.04_ Felix Ye_20200605》
- 《SD_X9_PTG3.9_release_notes》
评论