docker主要的3个概念:镜像(image)+容器(container)+仓库(repository)
- docker镜像:概念类似虚拟机的镜像,可以用来创建新的容器。
- docker仓库:docker仓库概念和git类似。docker仓库是用来包含镜像的位置。
- docker容器:是由docker镜像创建的运行实例。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
它们之间的关系可以参照下图:
我们在这个过程中熟悉经常使用的命令。
Docker 镜像和容器
- 镜像查询:
- docker hub镜像查询:https://hub.docker.com/search
2、docker search查询
我们也可以使用docker search: 的方式来搜索镜像,但这种方式无法查询镜像tags,所以建议使用第一种。
各个选项说明:
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
拉取镜像(nginx 为例)
- 拉取nginx镜像到本地
docker pull :,如果不加tags,默认拉取最新镜像(latest)。
docker pull nginx:latest
直接执行命令报错:
Got permission denied while trying to connect to the Docker daemon socket ….: connect: permission denied
我们使用su root 命令切换到root用户,再次执行命令即可。
使用docker images 命令即可查看已经拥有的镜像。
各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
删除镜像
docker rmi :,如果不加tags,默认删除最新镜像(latest)。
docker rmi nginx:latest
创建容器
使用镜像创建一个 nginx容器
- 创建挂载目录
mkdir -p /usr/local/nginx/{conf,html,logs}
- 创建nginx.conf 配置文件
在/usr/local/nginx/conf下创建nginx.conf文件,作为外置配置文件使用。这样我们就可以很方便的配置nginx。
user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;}
在/usr/local/nginx/html目录下新建index.html,这个文件作为容器外部数据卷,替换默认首页。关于数据卷的概念,我们后期文章专门介绍。
Docker Nginx
Docker Nginx
Hello, Nginx.
- 执行容器创建命令
docker run -d -p 80:80 --name nginx80 --restart=always -v /usr/local/nginx/html:/usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/logs/:/var/log/nginx nginx:latest
如果返回一长串字符即为成功。使用docker ps 即可看到已启动容器列表:
参数说明:
- -d 后台运行
- -p 设置端口映射 宿主机端口:容器端口
- --name 设置容器别名
- --restart=always 设置容器开机启动
- -v 数据卷映射 宿主机目录:容器目录。这样方便我们管理容器配置文件及日志文件
最后加上nginx:latest,表示我们是以nginx:latest为模板创建的。
- 浏览器访问
浏览器访问 http://192.168.85.128/ ,192.168.85.128是我虚拟机的端口。
这样我们就使用docker创建好了一个 nginx。
学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。