镜像与容器
在web项目开发完成准备上线时,通常采用docker进行容器化管理,这样当需要新增服务器时,只需要将容器生成镜像,将镜像复制到另外的服务器即可,在使用之前我们有必要了解一些什么是镜像什么是容器
镜像:就是将操作系统打包成一个文件,这可文件容易传输,就想平时使用U盘重装系统是放在U盘的系统,区别在于镜像里面一般很纯净,只有一些系统必要的文件,没有其他文件,所有不像我们安装系统的文件这么大,像redis镜像,mysql镜像等镜像一般只有100m大小
容器:是已经运行在内存的镜像文件,内容不能直接复制,就像我们使用的操作系统,所以想要将容器复制一份,需要先将容器打包成镜像文件,关系图如下所示:
下载
1.更新ubuntu的apt源索引:
sudo apt-get update
2.安装允许apt通过https使用仓库:
sudo dpkg --configure -a
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3.添加Docker官方DPD key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.设置Docker稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5.添加仓库后,再次更新apt源索引
sudo apt-get update
6.安装最新版Docker CE(社区版)
sudo apt-get install docker-ce
7.检测Dcoker CE是否安装成功(命令是允许hello-world镜像,由于系统本来没有hello-world镜像,docker会自动在官网下载hello-world镜像)
sudo docker run hello-world
安装成功则会出现下图:
docker常命令使用
查看docker当前版本
docker version
启动docker
sudo service docker start
停止docker
sudo service docker stop
重启docker
sudo service docker restart
关于镜像
列出所有镜像
docker image ls --all(课程查看镜像名,镜像id等信息)
拉取镜像(没有版本号默认拉去最新版本)
docker image pull <镜像名:版本号>
删除镜像(在删除镜像前,需要把正在允许的镜像先停止)
docker image rm <镜像名或者镜像id>
把镜像打包成文件发送给别人
docker save -o 自定义文件名.tar.gz 镜像名
把镜像tar.gz文件加载到docker中
docker load -i 文件名.tar.gz
关于容器
运行镜像文件
docker container run -itd -p80:80 -v/home:/home --name=test 镜像名
container可以省略,-i表示容器启动后会进入其命令行终端, -t:表示以“交互模式”运行容器,-d:创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器),-p:冒号前面是服务器的端口号,即外部访问的端口号,后面是容器得到端口号,-v:冒号前面是服务端的目录,后面是容器的目录,将该目录生成一个快捷方式到冒号后面的目录,--name是指定容器名,不写则系统自动生成
列出所用容器
docker container ls (列出所用正在运行的容器)
docker container ls --all(列出所用容器)
启动容器
docker container start <容器名或者容器id>
停止容器(类似于电脑正常关闭)
docker container stop <容器名或者容器id>
杀死容器(类似于拔电脑电源)
docker container kill <容器名或者容器id>
进入正在运行的容器(bash是进入容器的第一个命令)
docker container exec -it 容器名或者容器id bash
删除容器
docker container rm<容器名或者容器id>
把容器保存成镜像
docker commit <容器名或容器id> 自定义镜像名
其他
使用docker命令需要管理员权限,如果希望每次输入docker相关命令时,不用sudo,可通过以下命令进行设置
sudo usermod -a -G docker $USER
sudo service docker restart
newgrp - docker