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

测试

sudo docker info

添加到用户组

# 添加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

这里的

  • `--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

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

重启和关闭容器

新开一个终端

查看本地存在的容器:

sudo docker ps -a

启动容器:

sudo docker start fa647741f188 

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

sudo docker exec -it fa647741f188  /bin/bash

再次进入容器启动ros2

root@fa647741f188:/# ros2

bash: ros2: command not found

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

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

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

追加完成后source即可:

source ~/.bashrc

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

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

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

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

镜像重命名:

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

镜像打包:

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

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

打包完成可以在相应目录下看到多了一个tar包,这就是你装好环境的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

停止和删除容器

docker stop 【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

解释

  • 交互式终端 (-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

你可能感兴趣的:(docker,ubuntu,容器)