reference:菜鸟编程docker教程
docker的牛逼之处
docker是一个开源的应用容器引擎,基于Go语言开发
可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任意流行的linux机器上,也可以实现虚拟化。
举个简单的例子。
在ubuntu系统中可以运行centos,可以运行kail等发行版
当运行某个应用程序需要不同的环境时,即可以考虑使用docker,不仅方便,而且相互之间不受影响,更重要的是性能开销低。
如图,当前的linux发行版是ubuntu,在使用docker运行kail时,发行版将由ubuntu环境变为kail环境。
ubuntu如何安装docker
安装需要的包
sudo apt-get install apt-transport-https ca-certificates software-properties-common curl
添加GPG密匙,并添加Docker-ce软件源,使用中国科技大学源
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu\
$(lsb_release -cs) stable"
更新
sudo apt-get update
安装docker-ce
sudo apt-get install docker-ce
添加当前用户到docker组(可不使用sudo 可选)
sudo usermod -aG docker $USER
测试docker
sudo docker run hello-world
若添加当前用户到了docker组
使用docker run hello-world
如果出现问题
使用sudo chmod 666 /var/run/docker.sock
配置加速docker
在/etc/docker/daemon.json中添加阿里云的镜像服务
{
"registry-mirrors": ["https://ng0enh5k.mirror.aliyuncs.com"]
}
#重启
systemctl daemon-reload
systemctl restart docker
docker架构
- 镜像(Image):相当于是一个root文件系统。比如官方镜像ubuntu16.04就包含了完成的一套ubuntu16.04最小系统的root文件系统。
- 容器(Container):镜像和容器的关系,就像是面对对象程序中设计的类和实例一样,镜像是静态的定义,容器是镜像中运行时的实体。容器可以被创建,启动,停止,删除等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
docker基本使用(万年不变的hello world)
我们创建一个容器来运行hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
参数解释:
- docker:二进制程序
- run 运行容器
- ubuntu15.01指定要运行的镜像,Docker首先从本地上查找镜像是否存在,如果不存在,docker就会从镜像仓库Docker hub下载该镜像
- /bin/echo "hello world":在该容器中输入该命令,打印hello world
与容器进行交互
使用-i -t参数
- -t: 在新容器内指定一个伪终端或终端。
- -i: 允许你对容器内的标准输入 (stdin) 进行交互。
sudo docker run -i -t ubuntu:15.10
echo "hello world"
可以看到已经进入了ubuntu15.10
docker镜像使用
-
列出本地镜像
docker images
- REPOSITORY :仓库源
- TAG :镜像的标签或者说版本
- IMAGE ID :镜像ID
- CREATE :镜像创建时间
- SIZE :镜像大小
-
获取一个新的镜像
docker pull
未指定TAG,则会下载Latest
未指定TAG,默认也使用Latest的镜像
可以看到已经使用了最新版ubuntu:20.04
-
查找镜像
docker search
-
删除镜像
docker rmi -f ubuntu:15.10
docker容器使用
docker run -it xxx docker ps # 查看正在运行的容器 docekr ps -a # 查看所有(包括停止的容器) docker start id # 后台运行 docker run -itd --name ubuntu20.04 ubuntu:latest # 停止容器 docker stop id # 重启停止的容器 docker restart id # 在使用-d参数时,容器启动后会进入后台,若想进入容器,使用docker exec docker exec -it id /bin/bash # 删除容器 docker rm -f id