参考文档
《docker 从入门到实践.pdf》《第一本Docker书 完整版.pdf》
版本
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,
强调安全,付费使用,支持周期 24 个月。
手册帮助:http://www.runoob.com/docker/docker-tutorial.html
https://docs.docker.com/
docker hub 镜像资源站 :https://hub.docker.com
什么是Docker?
Docker 是使用 Go 语言开发的一种 Linux 容器封装,提供简单易用的使用接口,是目前最流行的 Linux 容器解决方案。
Docker与VM的区别
参考:https://blog.csdn.net/jingzhunbiancheng/article/details/80994909
docker和传统虚拟机技术的特性比较:https://blog.csdn.net/xupeixin520/article/details/80588531
Docker容器化虚拟机:抛弃传统虚拟机:https://blog.csdn.net/boonya/article/details/83027974
Centos7.0以下的参考:https://blog.csdn.net/qq_21101587/article/details/83820690
以下适用于centos7.0以上
1、更新update到最新的版本
yum update
2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine
3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本
yum list docker-ce --showduplicates|sort -r
6、安装docker
yum install -y docker-ce
指定版本安装,如下:
yum install docker-ce-18.03.1.ce -y
7、启动docker
systemctl start docker
8、加入开机自启
systemctl enable docker
9、配置国内镜像
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
几个基本概念
Docker 包括三个基本概念
镜像( Image )
容器( Container )
仓库( Repository )
Docker三剑客
Docker-Composer
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
Docker-machine
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安
装 Docker 环境。Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。
Docker-Swarm
Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
镜像操作
#docker image ls
删除镜像为none的 # docker rmi $(docker images | grep "none" | awk '{print $3}')
构建镜像实例:#docker build -t nginx-yan1 .
# docker build -t angelkitty/nginx_web:v1 .
保存镜像 #docker save -o a.tar 1e1148e4cc2c
#docker save 1e1148e4cc2c > /home/a.tar
#docker load < /home/a.tar
# docker rename mysql-master57 mysql-master8
构建镜像实例 #docker build -t nginx-yan1:v1 .
注:当前目录中应当包含脚本文件Dockerfile容器操作
批量 # docker container stop $(docker ps -a -q)
批量 # docker container rm $(docker ps -a -q)
# docker run -itd --name redis-yan-v1 --net mynetwork -p 6380:6379 --ip 192.168.0.2 redis-yan:v1
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--ip: 为容器制定一个固定的ip
--net: 指定网络模式
# docker exec -it redis-yan-v1 bash
docker exec -it
仓库操作
自定义网络操作
数据卷
# docker run -itd --name test \
--mount type=bind,source=/home/myapp,target=/myapp alpine
# docker exec -it test sh
//test为容器名,alpine为镜像名,意为将本地目录/home/myapp挂载到容器test的/myapp中。这样容器的/myapp目录修改数据后,本机目录也同时修改。即使容器删除,数据不会丢失。
卸载docker
#yum remove docker-ce
#rm -rf /var/lib/docker
1、docker安装后,核心文件在目录/var/lib/docker/下有目录containers、images等,排查错误时可进相应目录查看。
问题记录
问题:
docker容器存放目录磁盘空间满了,如何做解决:docker数据默认存放在/var/lib/docker,若存满了,可以迁移数据,然后使用使用软连接将数据存放在数据盘,#ln -s /vdb1/var/lib/docker /var/lib/docker
参考https://blog.csdn.net/qq_37674858/article/details/79976751
#docker rmi [IMAGEID]时会提示上述错误
解决:#docker image rm nginx2:latest ,带镜像tag删除,提示“Untagged: nginx2:latest”,再次查看解除镜像了。
解决:因为已经有网络定义了192.168.0.0/16的subnet,网段定义重叠了,无须再定义,或重新定义其他网段。
解决:https://blog.csdn.net/qq_14853889/article/details/79678406?utm_source=blogxgwz6
解决:docker update --restart=always
或docker run --restart=always ... 注意加--restart=always参数
持续完善,待续...