1、Docker基础原理
和虚拟机有点像:单个物理环境可以虚拟分割出多套独立环境,互不干涉影响;但核心技术不一样
镜像:一套特有环境的只读模版,用以创建容器;Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变;
容器:承载应用的运行环境
仓库:管理镜像
2、Docker Mac 安装
1)先一顿命令操作猛如虎
brew install docker
brew install docker-machine
brew install virtualbox
brew install docker-compose
2)上述步骤完成后,执行docker info命令发现提示:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
3)尝试启动docker-machine
brew services start docker-machine
还是提示Is the docker daemon running?
4)只能重新安装 Docker for Mac :
由于官网访问不了,可百度输入docker.dmg 或直接去https://get.daocloud.io/下载docker.dmg
安装完docker.dmg即可
3、Docker使用
1)获取镜像:
docker pull nginx(官网无法访问)
docker pull daocloud.io/library/nginx:latest (推荐方法)
2)启动容器
本地当前目录下准备好:www/html www/conf/nginx.conf
a.命令:docker run -p 80:80 --name mynginx2 -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
报错:docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:359: container init caused \"rootfs_linux.go:53: mounting \\\"/Users/videojj/Downloads/docker_test/www/conf/nginx.conf\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/1d898cb484ab7149106ef6473411447d0fbb09d078e2bd10eba97ed6b008f20b\\\" at \\\"/var/lib/docker/aufs/mnt/1d898cb484ab7149106ef6473411447d0fbb09d078e2bd10eba97ed6b008f20b/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\""\n".
解决办法:执行当前命令时当前目录不对 导致$PWD/www目录找不到
b.问题:mynginx 容器启动后发现 访问不到自己定义的页面
解决办法:nginx容器中默认路径是从/usr/share/nginx/开始访问,所以运行容器时指定下目录,如下命令:
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/www/html:/usr/share/nginx/html -d nginx
c. 对外访问端口修改为8080:
docker run -p 8080:80 --name mynginx1 -v $PWD/www:/www -v $PWD/www/html:/usr/share/nginx/html -d nginx
d. 删除容器:docker rm -f mynginx
e. 查看容器日志:docker logs -f mynginx