Docker

什么是镜像?

简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。

镜像从哪里来?

Docker Hub由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。

https://hub.docker.com/explore

默认是国外的源,下载会慢,建议配置成国内的镜像仓库:

# vi /etc/docker/daemon.json (默认安装没有,需要手动创建)

{

“registry-mirrors”: [ “https://registry.docker-cn.com” ]

}

%title插图%num

查看镜像: 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)

%title插图%num

管理卷

# docker volume create nginx-vol

# docker volume ls

查看卷详细信息:

docker volume inspect nginx-vol

%title插图%num

用卷创建一个容器 (可以多个容器引用同一个卷)

# 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参数 : 源卷可写sourcesrc , 目标可写:destinationdsttarget

%title插图%num

清理:

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/

%title插图%num

部署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”‘

%title插图%num

3、进入容器命令:

docker exec -it lnmp_mysql /bin/bash

%title插图%num