Docker学习资料及填坑
1. 介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
2. 结构
3. Docker 在centos上的安装
https://www.cnblogs.com/yu-hailong/p/7629120.html
4. Docker 常用命令
http://www.runoob.com/docker/docker-command-manual.html
5. Dockerfile 命令详解
https://www.cnblogs.com/dazhoushuoceshi/p/7066041.html
6. Docker-Compose微服务编排
https://www.cnblogs.com/neptunemoon/p/6512121.html
7. Docker集群化工具
Kubernetes、Mesos,Fleet和Swarm
8. 填坑
修改Docker的镜像存储位置
vim /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/docker/docker_home --storage-driver=devicemapper
重新启动docker
如何使用镜像
一般的镜像由Linux系统来构建,一般使用官方提供的镜像
使用下面命令来搜索镜像
docker search ${img_name}
下面以搜索rabbmq为例:
其中标注OFFICIAL为[OK]的为官方镜像,其余的全部为私人构建的镜像
一般使用镜像由两种方式:
- 官方文档
- 进入容器内部查看相关信息,自行研究使用
一般容器的使用涉及到的无非三个问题:- 相关目录的挂载问题
- 宿主机和容器挂载目录权限问题
- 端口映射的问题
关于容器权限的问题
在构建镜像时,有时需要挂载宿主机指定目录到容器中,但是如果容器中使用root用户会造成很多问题,为此,如果容器使用某一用户进行启动,那么请配置容器内部用户与宿主机用户的uid要一致,否则可能造成文件没有权限访问的问题,挂载目录时使用特权模式运行 --privileged=true
关于第一次镜像运行第一次启动成功,但第二次启动失败的问题
因为容器时占有宿主机一部分资源的(端口等等),所以当一些不可重复利用的资源被使用时,运行镜像就会报错,这时候使用命令
docker ps -a
查看所有容器,看是否有冲突的资源,包括容器名称如果指定的话也有可能冲突,如果有
则使用下面的命令删除容器
# 一定要先停止容器才能删除容器
docker stop ${container_name}
docker rm ${container_name}
很多新手在使用时,因为不知道基础概念,造成容器重复启动
其实第一次在使用docker run 启动容器之后,后续如果容器停止,想要再次运行,
只需要使用命令
docker start ${container_name}
就可以再次运行容器,无需docker run 创造重复的容器
9. 最常用的命令
以下所有命令的container_name可使用container_id代替,不知道的可以敲"docker ps -a" 查看,第一列就是。
查看最新十条容器日志
docker logs -f --tail=10 ${container-name}
运行指定镜像,附带常用参数
docker run --restart=always -m 512m -e JAVA_OPTS='-Xmx512m' --name ${container_name} -v ${host_path}:${container_path} -p ${host_port}:${container_port} -d ${images_name}
-d 以后台模式运行
--name ${container_name} 指定容器名称
----------------------------------------------------
将宿主机指定目录挂载到容器指定目录
-v ${host_path}:${container_path}
----------------------------------------------------
将宿主机端口映射到容器端口
-p ${host_port}:${container_port}
----------------------------------------------------
始终重新启动
--restart=always
进入指定运行中的容器,使用指定的方式运行
docker exec -it ${container_name} /bin/bash
-it以命令交互方式运行
删除镜像
docker rmi ${img_name}
删除容器
docker rm ${container_name}
停止容器
docker stop ${container_name}
启动容器
docker start ${container_name}
查看容器
docker ps
参数 -a 查看所有容器
查看容器运行状态
查看所有
docker status
查看指定容器
docker status ${container_name}