关于Docker
Docker是一个开源项目,它提供了一个在容器中部署软件应用环境的解决方案,它是一种操作系统层面的虚拟化抽象层.
Docker Hub是一个镜像的管理平台,可以存放和下载成型的镜像。https://hub.docker.com/
Docker的框架是这样:
安装Docker
介绍一种在LINUX下安装docker的流程
》转换为根目录用户(或者在命令前添加sudo)
sudo sh -c su
》设置仓库
‣ $ apt-get update
‣ $ apt-get install ca-certificates curl gnupg lsb-release
‣ $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
‣ $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
‣ $ apt-get update
》安装docker engine
‣ $ apt-get update
‣ $ apt-get install docker-ce docker-ce-cli containerd.io
》验证是否成功(第一次可能要下载所需工具包)
docker run hello-world
若成功,可以看到“hello from docker!”字样。
常用Docker命令
》pull 用于从远程拉取docker images,例如
docker pull busybox
》查看docker images清单
docker images
》运行一个容器
docker run busybox echo "hello from busybox"
在使用run命令时,docker客户端实际上在执行:1.找到镜像(busybox)2.加载容器3.在容器中运行指令
》查看在运行的容器
docker ps
或查看更多信息
docker ps -a
》移除容器,可使用名称,id等
docker rm 305297d7a235 ff0a5c3750b9
清理存在的容器
docker rm $(docker ps -a -q -f status=exited)
-q只返回id,-f添加一个过滤器
停止一个容器
docker stop name
》移除未使用的镜像
docker rmi hello-world
示例运行一个静态网站
拉取一个网站镜像,并在后台运行这个容器
docker run -d -P --name static-site prakhar1989/static-site
其中-d是在后台运行,我们的终端继续运行;-p是publish所有端口到随机端口;–name我的起的网站名字
运行docker port 【container】可以查看端口映射
也可以定制一个端口映射关系(将容器外的8888端口映射到容器内的80端口)
docker run -p 8888:80 prakhar1989/static-site
创建一个我们自己的镜像
部署一个Flask app
‣ $ git clone https://github.com/prakhar1989/docker-curriculum
‣ $ cd docker-curriculum/flask-app
‣ $ cat Dockerfile
Dockerfile是一个文本文档,它包含了当docker客户端想要创建一个镜像时所需要的一系列命令
使用docker build来依据docker file创建一个docker镜像
docker build -t <用户名>/catnip .
其中<用户名>指的你在docker hub上的用户名。创建完成后可以docker images看一下,然后运行容器用户名>
docker run -p 8888:5000 <用户名>/catnip
此时用浏览器登录可以看到静态网站了。
将自己的镜像上传至docker hub
》登陆,输入账户信息。
docker login
》推送镜像。
docker push <用户名>/catnip
》现在任何安装了docker的人可以运行你的镜像了,只需要一行命令
docker run -p 8888:5000 <用户名>/catnip
部分内容节选自docker网站