1、yum 包更新到最新
yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、阿里源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker,出现输入的界面都按 y
yum install -y docker-ce
5、 查看docker版本,验证是否验证成功
docker -v
6、自己创vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://4a1df5ef.m.daocloud.io"], # 是用来pull容器加速用的,跟此次问题无关。
"storage-driver": "devicemapper" # 解决此次问题
}
7、启动 关闭 重启
systemctl start docker
systemctl stop docker
systemctl restart docker
若有问题
vim /etc/sysconfig/docker
加入
OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false"
8、镜像相关命令
1.搜索镜像:搜索镜像仓库上的镜像:search
docker search [镜像名称]
e.g.
docker search golang
docker search nginx
字段含义:
name:镜像名称
description:镜像描述
stars:下载次数
official:是否官方
automated:是否自动运行
2.获取镜像 :pull
docker pull [镜像名称]
e.g.
docker pull nginx
镜像下载的路径:
linux /var/lib/docker
查看镜像信息:/var/lib/docker/image/overlay2/repositories.json
3.查看镜像:images
查看所有的镜像:docker images
查看指定镜像:docker images [镜像名称]
4.镜像的删除 :rmi
docker rmi [镜像id] [镜像id] 或者docker image rm [镜像id] [镜像id] 可以删除多个
docker rmi [镜像名称]:[版本号]
还可以加参数:docker rmi -f [镜像id] 强制删除
注意:镜像id可以确定是哪个镜像,镜像名称不能确定,得和版本号一起使用才能确定具体那个镜像
5.镜像的重命名:tag
docker tag [旧镜像Id] [新镜像名称]:[版本号]
docker tag [旧镜像名称]:[版本号] [新镜像名称]:[版本号]
e.g.
docker tag mysql:5.7 test_mysql:5.7.3
注意:会复制一份,原来的镜像还存在,两个镜像的镜像id是同一个
6.镜像的导出:save
将已有的镜像导出到本地,没有网络时可以直接使用
docker save -o 导出的文件路径 本地的镜像名称
docker save -o nginx.gz.tar nginx
-o --output
7.镜像的导入:load
docker load -i 要导入的文件名称 或者 docker load < 要导入的文件名称
docker load -i nginx.tar.gz
-i --input
8.镜像的历史查看:history
docker history [镜像Id]
docker history [镜像名称]:[版本号]
9.镜像的详细信息:inspect
docker inspect [镜像名称]:[版本号]
docker inspect [镜像Id]
e.g.
docker inspect mysqllasted
10.根据模板创建镜像:import
下载模板地址:http://download.openvz.org/template/precreated/
cat 模板名 |docker import - [自定义镜像名称]
e.g.
cat centos-6-x86-devel.tar.gz | docker import centos-6
你要创建的镜像包 自定义名字
9、什么是容器
docker将镜像文件运行起来后,产生的对象就是容器,就是一个镜像运行起来的实例
容器的存放位置:/var/lib/docker/containers/
10、docker容器和虚拟机的区别
1.相同点
- 都可以安装各种应用,如mysql
- 都是有生命周期的,启动,关闭等
- 都会在宿主机上储存
2.不同点
- docker小,虚拟机大
- 虚拟机是个完整的操作系统,docker容器不是
- 虚拟机需要额外的资源来管理,docker容器不需要
11、容器的操作
1.查看容器:ps
显示正在运行的容器:docker ps
显示所有的容器:docker ps -a
字段含义:
container ID : 容器id
mage:基于的镜像
command:在这个镜像上运行过的命令
created:创建时间
status:状态
ports:端口号
names:容器名称,随机的
2.创建容器,没有启动的:create
docker create [参数] [基于的镜像名称] [容器内命令] [命令参数]
参数:
-t --tty 分配虚拟终端
-i --interactive 保持STDIN(标准输入)打开
--name 容器名称,不指定的话就随机指定
容器内命令:
如:pwd,ps,ls等
命令参数:
如:ps的ef,lsof的i参数
e.g.
docker create -i -t --name contain_name ubuntu lsof -i:80
3.启动容器:start
docker start [容器Id]
参数:
-a 将当前shell的标准输出打印出来
4.创建容器,并且启动:run
docker run [参数] [基于的镜像名称] [容器内命令] [命令参数]
参数:
-t --tty 分配虚拟终端
-i --interactive 保持STDIN(标准输入)打开
--name 容器名称,不指定的话就随机指定
-d 在后台运行容器,并打印容器id
--rm 当容器停止运行是,删除容器
容器内命令:
如:pwd,ps,ls等
命令参数:
如:ps的ef,lsof的i参数
e.g.
docker run -i -t --name contain_name --rm -d ubuntu lsof -i:80
查看日志:
docker logs 容器id
5.守护进程的运行方式:-d
加-d参数:
e.g. docker run -i -t --name contain_name --rm -d ubuntu lsof -i:80
6.容器暂停/取消暂停容器:pause
暂停: docker pause [容器Id]
取消暂停:docker unpause [容器Id]
8.容器的重启:restart
docker restart [参数] [容器Id] [容器Id]
参数:
-t 多少秒后重启,单位:秒,默认10秒
e.g.
docker restart -t 5 13dasd321
9.容器的关闭/立即终止:stop/kill
关闭:docker stop [容器Id] 建议使用,正常的关闭
强制关闭:docker kill [容器Id]
10.容器的删除:rm
正常删除:docker rm [容器Id]
注意:得先停止容器,然后再删除
强制删除:docker rm -f [容器Id]
注意:不需要停止容器,直接删除,有风险,不建议使用
11.容器的进入/退出
进入容器:
1.创建容器,并且进入:不能使用-d参数,不然是后台运行的
命令行是基于bash的,所以只需要创建后执行bash命令就行
e.g.
docker run -i -t --name contain_name --rm ubuntu /bin/bash
2.进入指定的容器:
docker exec -i -t 容器Id /bin/bash
退出:
exit 或者ctrl+d
12.基于容器创建镜像
将已经配置好的容器导出为镜像,方便下次使用
导出方式一:docker commit -m "信息" -a "作者" [容器Id] [镜像名称]:[镜像版本]
导出方式二:
先导出:docker export [容器Id] > xxx.tar.gz
再导入为镜像:cat xxx.tar.gz | docker import - [镜像名称]
13.load和import的区别
load不能指定名称,import可以