docker 安装 使用(ubuntu)

#配置源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #安装阿里云gpg证书 cd /etc/apt/sources.list.d #在指定目录下新建docker.list文件,添加阿里云镜像源 sudo touch docker.list sudo chmod 666 docker.list sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#配置源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #安装阿里云gpg证书 cd /etc/apt/sources.list.d #在指定目录下新建docker.list文件,添加阿里云镜像源 sudo touch docker.list sudo chmod 666 docker.list sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
#配置源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #安装阿里云gpg证书 cd /etc/apt/sources.list.d #在指定目录下新建docker.list文件,添加阿里云镜像源 sudo touch docker.list sudo chmod 666 docker.list sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker info
sudo docker info
sudo docker info
# 添加docker用户组,一般已存在,不需要执行 sudo groupadd docker # 将登陆用户加入到docker用户组中 sudo gpasswd -a $USER docker # 更新用户组 newgrp docker # 测试docker命令是否可以使用sudo正常使用 docker version
# 添加docker用户组,一般已存在,不需要执行 sudo groupadd docker # 将登陆用户加入到docker用户组中 sudo gpasswd -a $USER docker # 更新用户组 newgrp docker # 测试docker命令是否可以使用sudo正常使用 docker version
# 添加docker用户组,一般已存在,不需要执行 sudo groupadd docker # 将登陆用户加入到docker用户组中 sudo gpasswd -a $USER docker # 更新用户组 newgrp docker # 测试docker命令是否可以使用sudo正常使用 docker version
docker run -it -v /home/sz3/ailab/:/share --name my_container scllovewkf/opencalib:latest /bin/bash
docker run -it -v /home/sz3/ailab/:/share --name my_container scllovewkf/opencalib:latest /bin/bash 
docker run -it -v /home/sz3/ailab/:/share --name my_container scllovewkf/opencalib:latest /bin/bash

这里的

  • `--name my_container` 选项为创建的容器指定了名称 `my_container`。完整解释如下: - `docker run`:创建并运行一个容器。 - `-it`:以交互模式运行容器,并分配一个伪终端。 - `-v /home/sz3/ailab/:/share`:将宿主机的 `/home/sz3/ailab/` 目录挂载到容器的 `/share` 目录中。 - `--name my_container`:为容器指定名称 `my_container`。 - `scllovewkf/opencalib:latest`:要运行的 Docker 镜像。 - `/bin/bash`:在容器中启动一个 Bash 终端。
    `--name my_container` 选项为创建的容器指定了名称 `my_container`。完整解释如下: - `docker run`:创建并运行一个容器。 - `-it`:以交互模式运行容器,并分配一个伪终端。 - `-v /home/sz3/ailab/:/share`:将宿主机的 `/home/sz3/ailab/` 目录挂载到容器的 `/share` 目录中。 - `--name my_container`:为容器指定名称 `my_container`。 - `scllovewkf/opencalib:latest`:要运行的 Docker 镜像。 - `/bin/bash`:在容器中启动一个 Bash 终端。
    `--name my_container` 选项为创建的容器指定了名称 `my_container`。完整解释如下: - `docker run`:创建并运行一个容器。 - `-it`:以交互模式运行容器,并分配一个伪终端。 - `-v /home/sz3/ailab/:/share`:将宿主机的 `/home/sz3/ailab/` 目录挂载到容器的 `/share` 目录中。 - `--name my_container`:为容器指定名称 `my_container`。 - `scllovewkf/opencalib:latest`:要运行的 Docker 镜像。 - `/bin/bash`:在容器中启动一个 Bash 终端。

sudo docker run -it osrf/ros:humble-desktop
sudo docker run -it osrf/ros:humble-desktop
sudo docker run -it osrf/ros:humble-desktop

注意:每运行一次该指令,就会在本地生成一个新的容器,分配一个新的容器ID

重启和关闭容器

新开一个终端

查看本地存在的容器:

sudo docker ps -a
sudo docker ps -a
sudo docker ps -a

启动容器:

sudo docker start fa647741f188
sudo docker start fa647741f188 
sudo docker start fa647741f188

进入刚刚生成的ros2容器,假设容器id前缀是fa647741f188 :

sudo docker exec -it fa647741f188 /bin/bash
sudo docker exec -it fa647741f188 /bin/bash
sudo docker exec -it fa647741f188 /bin/bash

再次进入容器启动ros2

root@fa647741f188:/# ros2 bash: ros2: command not found
root@fa647741f188:/# ros2 bash: ros2: command not found
root@fa647741f188:/# ros2 bash: ros2: command not found

这是因为新终端没有自动添加环境变量,解决办法:

直接输入下面的命令追加bashrc即可

echo 'source /opt/ros/humble/setup.bash'>> ~/.bashrc
echo 'source /opt/ros/humble/setup.bash'>> ~/.bashrc
echo 'source /opt/ros/humble/setup.bash'>> ~/.bashrc

追加完成后source即可:

source ~/.bashrc
source ~/.bashrc
source ~/.bashrc

五、把建好的容器打包给其他人使用

先退出容器:exit或者ctrl + D

提交全部更改到本地容器:docker commit 【容器ID】
提交全部更改到本地容器:docker commit 【容器ID】
提交全部更改到本地容器:docker commit 【容器ID】

此时的容器会生成一个新的未命名的镜像。我们需要对它重新命名,

镜像重命名:

docker tag 0bc42f7ff218【镜像ID】 sqlmap_docker:v1【名称:版本】
docker tag 0bc42f7ff218【镜像ID】 sqlmap_docker:v1【名称:版本】
docker tag 0bc42f7ff218【镜像ID】 sqlmap_docker:v1【名称:版本】

镜像打包:

docker save sqlmap_docker:v1 > /root/sqlmap_docker .tar
docker save sqlmap_docker:v1 > /root/sqlmap_docker .tar 
docker save sqlmap_docker:v1 > /root/sqlmap_docker .tar

其中/root/指定存放的路径。

打包完成可以在相应目录下看到多了一个tar包,这就是你装好环境的docker镜像。

把这个镜像的tar包发送给别人, 然后他那边导入你的镜像:

docker load -i sqlmap_docker .tar
docker load -i sqlmap_docker .tar
docker load -i sqlmap_docker .tar

,运行这个镜像,进入对应的容器,然后就可以在相应目录下运行你的代码了。

sudo docker ps sudo docker exec -it 775c7c9ee1e1 /bin/bash sudo docker exec -it dm8_01 /bin/bash
sudo docker ps sudo docker exec -it 775c7c9ee1e1 /bin/bash sudo docker exec -it dm8_01 /bin/bash 
sudo docker ps sudo docker exec -it 775c7c9ee1e1 /bin/bash sudo docker exec -it dm8_01 /bin/bash

停止和删除容器

docker stop 【id】
docker stop 【id】
docker stop 【id】
docker rm [id]
docker rm [id]
docker rm [id]
docker run -it \ --runtime=nvidia \ -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \ -e NVIDIA_VISIBLE_DEVICES=all \ --shm-size 15g \ -w /code \ -v "/path/to/your/edgeyolo/parent_dir":/code \ -v "/path/to/your/dataset/parent_dir":/dataset \ edgeyolo:latest
docker run -it \ --runtime=nvidia \ -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \ -e NVIDIA_VISIBLE_DEVICES=all \ --shm-size 15g \ -w /code \ -v "/path/to/your/edgeyolo/parent_dir":/code \ -v "/path/to/your/dataset/parent_dir":/dataset \ edgeyolo:latest
docker run -it \ --runtime=nvidia \ -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \ -e NVIDIA_VISIBLE_DEVICES=all \ --shm-size 15g \ -w /code \ -v "/path/to/your/edgeyolo/parent_dir":/code \ -v "/path/to/your/dataset/parent_dir":/dataset \ edgeyolo:latest
  • 交互式终端 (-it):允许您使用终端接口与容器进行交互。
  • NVIDIA Runtime (--runtime=nvidia):使用 NVIDIA 的 GPU 运行时进行 Docker,允许容器访问主机上的 NVIDIA GPU。
  • NVIDIA 驱动程序功能 (-e NVIDIA_DRIVER_CAPABILITIES=compute,utility:指定 NVIDIA 驱动程序所需的功能。在这种情况下,它要求计算(CUDA 操作所必需的)和实用程序(使用 .nvidia-smi
  • 可见设备 (-e NVIDIA_VISIBLE_DEVICES=all):使主机上的所有 GPU 都可供容器使用。
  • 共享内存大小 (--shm-size 15g):将(共享内存)的大小设置为 15GB,这对于需要大量共享内存的操作非常有用,例如某些深度学习模型。/dev/shm
  • 工作目录 (-w /code:将容器内的工作目录设置为 。/code
  • 卷装载 (-v “/path/to/your/edgeyolo/parent_dir”:/code-v “/path/to/your/dataset/parent_dir”:/dataset
    • 将目录从主机 () 挂载到容器内部。/path/to/your/edgeyolo/parent_dir/code
    • 将主机 () 中的另一个目录挂载到容器内部。/path/to/your/dataset/parent_dir/dataset
  • Image (edgeyolo:latest:指定要用于容器的 Docker 镜像,在本例中为 .edgeyolo:latest

原文链接:https://blog.csdn.net/W25679/article/details/140460603?ops_request_misc=%257B%2522request%255Fid%2522%253A%25225452c8e90db54f7c68f09e672ce81788%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=5452c8e90db54f7c68f09e672ce81788&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-30-140460603-null-null.nonecase&utm_term=%E9%A3%9E%E7%89%9BOS

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享