什么是镜像?
简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。
镜像从哪里来?
Docker Hub由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
https://hub.docker.com/explore
默认是国外的源,下载会慢,建议配置成国内的镜像仓库:
# vi /etc/docker/daemon.json (默认安装没有,需要手动创建)
{
“registry-mirrors”: [ “https://registry.docker-cn.com” ]
}
![图片[1]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-59.png?x-oss-process=image/resize,m_fill,h_393,w_1024)
查看镜像: docker image ls
下载镜像: docker pull nginx
上传镜像到仓库: docker push nginx
保存镜像: docker save nginx:1.11 > nginx1.11.tar
加载镜像: docker load < nginx1.11.tar
提交容器到仓库: docker commit nginx02 nginx:v2
拷贝文件到容器里: docker contaniner cp /root/test.txt nginx01:/root
删除所有创建的容器: docker rm -f $(docker ps -q -a)
![图片[2]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-61.png?x-oss-process=image/resize,m_fill,h_463,w_1024)
管理卷
# docker volume create nginx-vol
# docker volume ls
查看卷详细信息:
docker volume inspect nginx-vol
![图片[3]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-62.png)
用卷创建一个容器 (可以多个容器引用同一个卷)
# docker run -itd –name=nginx-test –mount src=nginx-vol,dst=/usr/share/nginx/html nginx
# docker run -itd –name=nginx=test -v nginx-vol:/usr/share/nginx/html nginx
–mount参数 : 源卷可写source 或 src , 目标可写:destination 或 dst 或 target
![图片[4]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-63.png?x-oss-process=image/resize,m_fill,h_163,w_1024)
清理:
docker container stop nginx-test
docker container rm nginx-test
docker volume rm nginx-vol
注意:
1、若未指定要挂载的卷名,则容器自动创建随机名字的匿名卷
2、建议使用–mount,更通用
官方文档: https://docs.docker.com/storage/volumes/
Bind Mounts(挂载宿主机已存在的目录)
用卷创建一个容器:
docker run -itd –name=nginx-test –mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html nginx
验证绑定:
docker inspect nginx-test
清理:
docker container stop nginx-test
docker container rm nginx-test
注意:
1、如果源文件/目录没有存在,不会自动创建,会抛出一个错误
2、如果挂载目标在容器中非空目录。则该目录现有内容将被隐藏
官方文档: https://docs.docker.com/storage/bind-mounts/
![图片[5]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-64.png?x-oss-process=image/resize,m_fill,h_596,w_1024)
部署LNMP 环境的wordpress网站
1、创建一个容器网络:
docker network create lnmp
2、启动一个mysql镜像:
docker run -itd –name lnmp_mysql –net lnmp -p 3306:3306 –mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql –character-set-server=utf8
3、创建所需数据库:
docker exec lnmp_mysql sh -c ‘exec mysql -uroot -p”123456″ -e”create database wpsql”‘
![图片[6]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-66.png)
3、进入容器命令:
docker exec -it lnmp_mysql /bin/bash
![图片[7]-Docker-](https://fbi.kim/wp-content/uploads/2019/12/image-65.png)