【Docker】基础知识及使用

Docker是一种容器技术,用于隔离应用程序的运行时环境。它提供轻量级的隔离,比虚拟机更节省资源。Docker包括Dockerfile、Image和Container等概念。通过Dockerfile创建Image,然后运行Image得到Container。文章还介绍了Docker的常用命令,如build、run、pull等,以及在Ubuntu20.04上的安装过程和示例。在使用中可能遇到的权限和网络问题也给出了解决方案,包括使用阿里云镜像作为Docker的镜像源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Docker

容器技术,用来隔离应用程序的运行时环境——依赖的各种库以及配置,但容器之间可以共享同一个操作系统;
容器是一种通用技术,docker只是其中的一种实现,docker是一个用Go语言实现的开源项目;
docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现;
优点:与虚拟机操作系统相比,轻量级且占用的资源更少,能够快速部署。

如何使用Docker

docker中有这样几个概念:

  • dockerfile // 指定需要哪些程序、依赖什么样的配置
  • image // 可执行程序
  • container // 运行中的程序
    dockerfile就是image的源代码,docker就是"编译器"
    在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

Docker常用命令

  • docker build:根据dockerfile创建image
  • docker run:运行image
  • docker pull:在docker hub中下载其他用户编写好的image

镜像控制

  • 搜索镜像:docker search [OPTIONS] TERM
  • 上传镜像:docker push [OPTIONS] NAME[:TAG]
  • 下载镜像:docker pull [OPTIONS] NAME[:TAG]
  • 提交镜像:docker commit [OPTIONS] CONTAINER NAME[:TAG]
  • 构建镜像:docker build [OPTIONS] PATH
  • 删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE…]
  • 增加镜像标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 查看所有镜像:docker images [OPTIONS] [REPOSITORY[:TAG]]

容器控制

  • 启动/重启容器:docker start/restart CONTAINER
  • 停止/强停容器:docker stop/ kill CONTAINER
  • 删除容器:docker rm [OPTIONS] CONTAINER [CONTAINER…]
  • 重命名容器:docker rename CONTAINER CONTAINER_NEW
  • 进入容器:docker attach CONTAINER
  • 执行容器命令:docker exec CONTAINER COMMAND
  • 查看容器日志:docker logs [OPTIONS] CONTAINER
  • 查看容器列表:docker ps [OPTIONS]

容器启动

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
    -d : 后台运行容器,并返回容器ID
    -i:以交互模式运行容器,通常与 -t 同时使用
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -v:绑定挂载目录
    –name=“mycontainer”: 为容器指定一个名称
    –net=“bridge”: 指定容器的网络连接类型,支持如下:
    bridge / host / none / container:<name|id>
    -p/-P :端口映射,格式如下:
    随机映射
    docker run -P
    指定映射
    docker run -p hostport:containerport
    docker run -p ip:hostport:container:port
    docker run -p ip::containerport
    docker run -p hostport:containerport:|udp

其他命令

  • 查看docker信息:docker info
  • docker命令帮助:docker run --help
  • 复制文件到容器:docker cp custom.conf Nginx:/etc/nginx/conf.d/
  • 更新容器启动项:docker container update --restart=always nginx
  • 查看docker日志:tail -f /var/log/messages

Docker安装(Ubuntu20.04)

更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

导入源仓库的 GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

将 Docker APT 软件源添加到你的系统

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

安装 Docker 最新版本(如果你想安装指定版本,跳过这个步骤,并且跳到下一步)

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

安装指定版本
列出 Docker 软件源中所有可用的版本

sudo apt update
apt list -a docker-ce

通过在软件包名后面添加版本=来安装指定版本

sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

在这里插入图片描述
安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它

sudo systemctl status docker

在这里插入图片描述
升级 Docker 软件包

sudo apt-mark hold docker-ce

阻止 Docker 自动更新

sudo apt-mark hold docker-ce

默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令,如果需要以非 Root 用户身份执行 Docker,执行以下命令:

sudo usermod -aG docker $USER

登出,并且重新登录,以便用户组会员信息刷新
验证安装过程

docker container run hello-world

如果本地没有该镜像,这个命令将会下载测试镜像,在容器中运行它,打印出 “Hello from Docker”,并且退出。
在这里插入图片描述
卸载 Docker
卸载 Docker 之前,你最好 移除所有的容器,镜像,卷和网络
运行下面的命令停止所有正在运行的容器,并且移除所有的 docker 对象

docker container stop $(docker container ls -aq)
docker system prune -a --volumes

使用apt像卸载其他软件包一样来卸载 Docker

sudo apt purge docker-ce
sudo apt autoremove

Docker使用示例
需要使用ubuntu进行sd-webui的部署
pull一个ubuntu20.04的docker镜像
运行以下命令进入docker

docker run ubuntu:20.04 /bin/bash

换源
更新软件源
安装git

如果在docker中再使用python venv会导致python项目的环境识别不到venv而是使用docker的python环境

报错及解决

安装及验证时

运行命令"docker container run hello-world"时提示权限问题,使用sudo进行使用或者添加用户组
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create”: dial unix /var/run/docker.sock: connect: permission denied.
See ‘docker run --help’.
运行"sudo docker container run hello-world"时报错如下,一般都是网络问题
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit.
See ‘docker run --help’.
使用ali的docker镜像
执行如下命令

sudo vim /etc/docker/daemon.json

在文件中添加如下内容:

{
"registry-mirrors":["https://alzgoonw.mirror.aliyuncs.com"]
}

重启docker

systemctl restart docker
systemctl status docker

参考

如何在 Ubuntu 20.04 上安装和使用 Docker
Docker 实战总结(非常全面),收藏了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值