Docker安装踩过的坑"/>
Docker安装踩过的坑
写在前面的话,这里的文档更全Ubuntu - Docker — 从入门到实践,下面记录的是我个人遇到的一些问题和解决方案,仅供参考!
Docker安装
以下是Ubuntu系统的docker安装过程,其他系统的docker安装请移步这里。
sudo apt-get remove docker \docker-engine \docker.io
sudo apt-get update
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg \lsb-release# 添加软件源的 GPG 密钥
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 向 sources.list 中添加 Docker 软件源
echo \"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update# docker安装
sudo apt-get install docker-ce docker-ce-cli containerd.io# 启动docker
sudo systemctl enable docker
sudo systemctl start docker# 测试docker是否安装正确
docker run --rm hello-world
安装NVIDIA-Docker
curl -s -L | \sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L /$distribution/nvidia-docker.list | \sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get updatesudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerddocker run --runtime=nvidia --rm nvidia/cuda:11.0-base nvidia-smi
安装Docker后遇到的问题
1. Docker pull镜像并运行
先去Docker Hub上找到你想要的
环境,执行
docker pull 镜像名:镜像tag
# 或使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
docker run -it nginx:latest /bin/bash
# 或使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
docker run --name mynginx -d nginx:latest
# 或使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -P -d nginx:latest
# 或使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data
docker run -p 80:80 -v /data:/data -d nginx:latest
# 或绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash# 若是启动已停止运行的容器
dock ps -a
# exec进入容器,优点是exit退出容器不会停止,推荐使用
docker exec -it 243c32535da7 /bin/bash
# 或attach进入容器,缺点是exit退出会导致容器停止
docker attach {contaniner的tag}# 容器停止
docker stop <container ID>
# 启动一个已停止的容器
docker start <container ID>
# 重启容器
docker restart <container ID>
2. 本地与docker镜像之间的文件传输
首先需要获取到docker id的全程,然后直接用docker cp命令就可以传输,具体操作如下:
1) 获取docker id全称
docker ps -a
2) 根据NAMES获取docker的全称
docker inspect -f '{{.Id}}' romantic_yonath
获取到了docker id的全称后就可以copy本地文件到docker镜像内
3)本地与docker镜像之间的文件传输
docker cp 本地文件 {docker id 全称}:docker镜像内文件存放路径
结果输出:
4)本地与docker镜像之间传输文件夹
docker cp -a 本地文件夹 {docker id 全称}:docker镜像内文件夹存放路径
结果输出:
5)保存修改过后的docker镜像,首先退出exit docker镜像,然后
sudo docker commit {docker ID} 镜像名:版本号
6)删除docker镜像/容器
使用过一段时间后,发现磁盘满了,发现很多残留的docker镜像文件,使用以下命令可以删除不用的docker镜像和docker缓存文件
# 列出所有的容器
docker image ls# 删除特定的不使用的docker镜像
sudo docker rmi docker_image_id# 删除所有不使用的docker镜像
sudo docker image prune -f -a# 删除所有停止的容器
sudo docker container prune -f# 或 停止所有的容器
docker stop $(docker ps -aq)# 删除所有的容器
docker rm $(docker ps -aq)# 删除所有的镜像
docker rmi $(docker images -q)
更多推荐
Docker安装踩过的坑
发布评论