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

被折叠的 条评论
为什么被折叠?



