本文默认使用linux系统以及会linux的基本指令,windows下安装docker较为繁琐
docker是什么
Docker 是一个开源的应用容器引擎,基于go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
(docker官网)
ubuntu下docker的安装
使用官方的脚本进行自动安装
curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh
手动安装
r如果系统中已经存在docker历史版本的安装包,或者有卸载残留,都可能会导致安装的失败,所以确保安装前,docker已经完全卸载,或删除历史的docker版本。(详见下面文章)
卸载docker指令
docker版本历史
sudo apt-get remove docker docker-engine docker.io containerd runc
有兴趣参考以上文章来了解docker docker-engine docker.io 删除指令会根据linux的系统不同版本存在些许不同,这里只讲了ubantu
先更新apt包的索引
sudo apt-get update
使用docker仓库来进行安装
安装apt的依赖包,用于仓库的获取
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common
添加docker秘钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
设置稳定版仓库
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装最新版docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
已经安装成功了,接下来验证安装
sudo docker run hello-world
如果安装成功,输入上述指令则会看到以下内容
仔细看上面所示的英文,其实他已经揭晓了,docker运行时的过程
docker run hello-world
1. 这句话输入以后,docker客户端会像docker的守护进行进行联系
2. docker的守护进程把hello-world这消息放入docker hub中
3.docker守护进程从该镜像创建了一个新容器,该容器运行可执行文件,从而生成了当前正在阅读的输出。
4.docker再把生成内容发送到客户端,客户端在输送到当前显示屏上
可交互式容器
上述第一个docker程序中,输出了文字之后,便没有了后续,这里我们可以通过指定参数来创建一个可以交互的容器,这个容器耗费资源少,但是相应的很多指令和内容都没有
- -t: 在新容器内指定一个伪终端或终端
- -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
docker run -i -t ubuntu:15.10 /bin/bash
输入上述代码后
等待服务器下载完成之后,就会出现另外一个linux的系统(这里没有展示图片,因为本人云服务器下载速度较慢),可以使用ls来查看当前系统的文件
要退出可以使用指令
exit
或者CTRL+D来进行退出容器
创建后台程序
上面讲了如何创建交互容器,这里进行后台程序的创建(重点)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
可以看到输入后,出现的指令是一个长字符串,这个字符串叫做容器id,每个创建的容器都有唯一id,可以通过容器id来查看容器内发生了什么
docker ps
来查看当前有哪些容器
这里是本人的 镜像这些后面的文章会提到
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的镜像。
- COMMAND: 启动容器时运行的命令。
- CREATED: 容器的创建时间。
- STATUS: 容器状态。
-
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)
-
NAMES: 自动分配的容器名称
使用一下命令可以查看 容器内的输出 容器id可以只缩写前3个字符
docker logs (容器id)
停止容器
docker stop
参考文章
https://www.runoob.com/docker/docker-hello-world.html
https://www.docker.com/
https://zhuanlan.zhihu.com/p/305572519
https://blog.csdn.net/doublepg13/article/details/131781150