【环境搭建】docker

1,安装
ubuntu 24.04

sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 非root权限访问docker
sudo usermod -aG docker $USER
newgrp docker

参考

2,docker基础配置
2.1 docker配置aliyun镜像
登录https://cr.console.aliyun.com/undefined/instances/mirrors,镜像中心->镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["xxx-镜像加速地址-xxx"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker # 重启docker
sudo docker info # 查看docker信息

## 24.04 
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ]
}



2.2 容器显卡设置

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install nvidia-container-toolkit
service docker restart

3,docker相关的指令

systemctl start docker # 启动docker
service docker start # 启动docker
systemctl stop docker # 停止docker
systemctl restart docker # 重启docker
systemctl enable docker # 开机启动docker
service docker status # 查看docker状态

4,docker镜像相关指令

docker info # 查看docker概要信息
docker --help # 查看docker帮助文档
docker version # 查看docker版本信息
docker pull ubuntu:18.04 # 从阿里云拉一个镜像,centos:7,hello-world
docker images # 显示所有镜像
docker search xx # 搜索镜像
docker images -qa # 列出所有镜像的id
docker rmi -f fce289e99eb9 # 删除镜像,参数,IMAGE ID
docker rmi -f $(docker images -qa) # 删除所有镜像

5.docker容器相关指令
有镜像才能创建容器
5.1 运行,run

docker run [可选参数] image
	--name="镜像名字" 容器名
	-d 				 后台运行
	-it 			 交互方式运行,进入容器查看内容
	-p     			 指定端口 -p 8080:8080 主机端口:容器端口
	-v               挂在磁盘 -v /hone/data:/root/data 主机路径:容器路径
# 运行centos
docker run -it centos /bin/bash
exit # 从容器退出主机, ctrl+alt+p退出,不退出进程

# 创建容器
docker run --gpus all -itd --name container_name -v /home/nvidia/data:/root/data yolo:l4t /bin/bash
--workdir /root 
--runtime=nvidia
# 使用GPU,容器名,挂在盘,镜像及版本
--dns 8.8.8.8 --dns 8.8.4.4 --network=host     # 连接外网
--cpu-cpus 1 -m 2G --memory-swap 8G            # 1核2G内存8G交换内存
-p 20022:22                                    # 端口映射
docker network create -d bridge class.com      # 创建网桥  --network=class.com
docker network connect class.com container_id  # 运行容器连接网桥,[网桥名称] [容器名称]

# 1.容器添加端口
1. sudo docker stop 容器Id # 停止容器,为其添加端口映射
2. sudo docker inspect 容器Id | grep Id  #  查看容器Id
3. cd /var/lib/docker/containers/container_id
4. vim hostconfig.json   # 键,内部端口,值,外部端口,8080/tcp内部端口
"PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8080"}]}
5. vim config.v2.json
"ExposedPorts":{"8080/tcp":{}}
"Ports":{"8080/tcp":[{"HostIp":"0.0.0.0","HostPort":"8080"}]}
6. sudo systemctl restart docker # 重启docker
7. sudo docker port 容器Id
8000/tcp -> 0.0.0.0:8080   # 内部端口 -> 外部端口
8000/tcp -> :::8080

# 2.容器添加挂在目录
1. sudo docker stop 容器Id # 停止容器,为其添加端口映射
2. sudo docker inspect 容器Id | grep Ip  #  查看容器Id
3. cd /var/lib/docker/containers/container_id
4. vim hostconfig.json
"Binds":["/data:/import"]  # 数组,多个,隔开。外部挂在盘:内部挂在盘
5. vim config.v2.json
"MountPoints":  {
...
"/import":{                                    # 内部挂在目录
"Source":"data",                         # 外部挂在目录
"Destination":"/import",         # 内部挂在目录
"RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate",
"Spec":{
  "Type":"bind",
  "Source":"data",                     # 外部挂在目录
  "Target":"/import"},               # 内部挂在目录
"SkipMountpointCreation":false
}
} # MountPoints
6. sudo systemctl restart docker # 重启docker
7. docker inspect 容器Id | grep Mounts -A 20

5.2 常用镜像

sudo docker pull pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel   #  cuda=10.2
sudo docker pull pytorch/pytorch:1.10.0-cuda11.3-cudnn8-devel  # cuda=11.3
sudo docker pull nvcr.io/nvidia/tensorrt:21.05-py3             # tensorrt

5.3 容器操作

# 查看正在运行的容器
docker ps
docker ps -a # 查看历史运行的容器
docker ps -n=1 # 显示最近创建的容器
docker ps -q # 只显示容器的编号

docker start 容器id     # 启动
docker restart 容器id  # 重启
docker stop 容器id     # 停止当前正在运行的容器
docker kill 容器id       # 强制停止容器
docker status 容器id  # 查看容器状态
docker rm 容器id # 删除容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除所有的容器

6 docker其他命令

docker exec -it 容器id /bin/bash      # 方式一,开启新的终端,可以操作
docker attach 容器id                  # 方式二,进入容器正在运行的终端
docker cp 容器id:/root/1.txt /home    # 容器 -> 主机
docker cp 1.txt 容器id:/root          # 主机 -> 容器
docker logs -tf 容器id                # 查看日志
docker logs -tf --tail 10 容器id      # 显示启动容器的最后10条
docker top 容器id                     # 查看容器中的进程信息
docker inspect 容器id                 # 查看容器的元数据
docker commit 容器id 镜像:版本  # 容器 -> 镜像:版本
docker save hello:latest > hello.tar.gz        # 镜像打包
docker save hello:latest | gzip > hello.tar.gz # 压缩打包,减小一半空间
docker load -i hello.tar.gz                    # 镜像加载

6.6 本地连接docker
1.进入容器,修改ssh配置文件,root可以访问

vim /etc/ssh/sshd_config
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
PermitRootLogin yes #root能使用ssh登录

7 制作docker镜像

8 docker-compose
8.1 linux安装

sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

8.2 docker-compose的使用

docker-compose.yml  # docker-composer文件
version: 3.0
services:
	rtsp_server:  # 服务名
		image: tomcat:jre-8  # 镜像:版本
		container_name: server   # 容器名称
		environment:
        	OPENBLAS_CORETYPE: ARMV8
            LC_ALL: "zh_CN.utf8"
		ports:
			- "8080:8080"  # 端口映射
		volumes: 
		   - "/data:/data"   # 挂在卷
		working_dir: /opt/data
        command:
                - /bin/bash
                - -c
                - "bash start_rtsp_flask.sh"  # 启动指令

docker network create -d bridge hello # 创建网桥,docker容器内部通信
docker-compose up # 启动服务,-d 后台进程启动

9 安装mysql

docker pull mysql:8.0
# 启动mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 指令登录mysql
docker exec -it mysql bash   # 进入容器
mysql -u root -p             #  指令登录

创建,删除,重启,日志,查看
https://www.runoob.com/docker/docker-compose.html

相关链接
https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html

要在Linux环境搭建Docker,可以按照以下步骤进行操作: 1. 安装依赖包,使用以下命令安装所需的依赖包: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 设置阿里云镜像源,使用以下命令添加阿里云的镜像源: ``` sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` 3. 安装Docker-CE,执行以下命令重建yum缓存,并安装docker-ce: ``` sudo yum install docker-ce ``` 4. 启动Docker-CE,使用以下命令启动Docker服务并设置开机自启动: ``` sudo systemctl enable docker sudo systemctl start docker ``` 5. [可选]为Docker建立用户组,可执行以下步骤: 5.1 建立Docker用户组 5.2 添加当前用户到Docker组 6. 配置镜像加速器,可按照自己的需要配置加速器: ``` sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://your-mirror.example.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` 7. 安装本地仓库,可以按照以下步骤进行操作: 7.1 下载docker registry私有镜像 ``` docker pull docker.io/registry ``` 7.2 修改配置文件 ``` vim /etc/sysconfig/docker ``` 8. 启动本地仓库,执行以下命令启动本地仓库容器: ``` docker run -d -p 5000:5000 --restart=always --name registry registry:2 ``` 9. 修改配置文件,将以下内容添加到docker配置文件中: ``` vim /etc/sysconfig/docker OPTIONS='--insecure-registry your-registry.example.com:5000' ``` 10. 修改防火墙规则,确保外部可以访问Docker的端口: ``` firewall-cmd --zone=public --add-port=5000/tcp --permanent firewall-cmd --reload ``` 以上是在Linux环境搭建Docker的步骤,你可以根据需要选择执行其中的步骤来完成Docker的安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux docker 环境搭建](https://blog.youkuaiyun.com/qq_38951990/article/details/120831117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值