1.docker架构php
docker架构主要由如下几部分组成:
1.Client,docker 客户端,执行docker命令
2.DOCKER_HOST,docker 服务端,服务端主要包括容器和镜像,而且须要监听在某个套接字上。客户端和服务器端的链接若是使用http默认必须使用https协议,若是须要使用http协议须要明肯定义。
3.Registry,镜像仓库,docker服务端的镜像来源,默认链接是https,若是须要使用http协议须要明肯定义。默认使用的仓库为hub.docker.com,也能够创建私有仓库。每一个registry都有不一样的仓库,如:ngxin仓库,tomcat仓库,busybox仓库等。每一个仓库中又存在每一个镜像的不一样版本(标签:tag),如:nginx:1.1,nginx1.2,nginx1.3等等。linux
docker分为企业版和社区版,其中企业版的包名为:docker-ee,社区版的为docker-cenginx
接下来让咱们开始使用docker吧。
1.下载最新的docker yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce.x86_64
docker的配置文件在 /etc/docker/daemon.json,是一个json格式的配置文件,默认是不存在的,须要本身建立。
docker默认的镜像仓库在国外,因此在国内使用建议先添加一个镜像加速器。这里使用阿里云的,代码以下:web
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://6rdyvtbt.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
使用以下命令若是返回咱们上部一添加的url则说明加速域建立成功docker
[root@localhost ~]# docker info|grep -A 1 'Registry Mirrors' Registry Mirrors: https://6rdyvtbt.mirror.aliyuncs.com/
docker经常使用命令以下(docker启动后才能使用):shell
docker version #查看docker版本信息 docker info #查看docker详细信息 docker search #在docker仓库中查找相关镜像 docker pull #推送一个镜像到远程仓库 docker images #列出全部本地镜像 docker create #建立一个docker容器 docker start #启动一个容器 docker run #建立并启动一个容器 docker attach # docker ps #列出运行中的同期 docker logs #查看相关容器的日志 docker restart #重启一个容器 docker stop #中止一个容器 docker kill #中止一个容器 docker rm #删除一个镜像
让咱们来搜索一个nginx镜像:json
[root@localhost ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 11049 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1555 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 688 [OK] jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as p… 492 [OK]
咱们能够看到第一个nginx是顶格写的,表示他是顶级仓库中的镜像,有分隔符的则是该dockerhub.com注册用户的镜像。查找完就能够下载镜像了,使用命令:centos
[root@localhost ~]# docker image pull nginx:1.14-alpine 1.14-alpine: Pulling from library/nginx 8e402f1a9c57: Pull complete c797cfb922b7: Pull complete b691d0a030cb: Pull complete 401ca65c99ae: Pull complete Digest: sha256:b67e90a1d8088f0e205c77c793c271524773a6de163fb3855b1c1bedf979da7d Status: Downloaded newer image for nginx:1.14-alpine
下载一个nginx镜像,若是后面不跟版本号默认下载tag为latest的版本,若是须要下载指定的版本,能够登陆到dockerhub.com找到nginx后查看tag标签里面的版本信息。这里下载nginx:1.14-alpine的版本,下载完毕后使用如下命令查看下载的镜像:tomcat
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.14-alpine cafef9fe265b 3 days ago 16MB
删除一个镜像文件以下:服务器
[root@localhost ~]# docker image rm nginx:1.14-alpine Untagged: nginx:1.14-alpine Untagged: nginx@sha256:b67e90a1d8088f0e205c77c793c271524773a6de163fb3855b1c1bedf979da7d Deleted: sha256:cafef9fe265b4b5555ba35cc346cd59ac8666223198ec72d657b2033e5b6d51f Deleted: sha256:e559ec1e768857703cbb1cdfa0377d2007c7b71423b88d4f757261cf5382322e Deleted: sha256:3ab9f17bd15d634d84a02bf8c7c539886e43bb87511ab0ec9703c163e8ae4f4d Deleted: sha256:6874590135827cec2b5f81187420457e976f08bddf956367815c30b88017ab3b Deleted: sha256:bcf2f368fe234217249e00ad9d762d8f1a3156d60c442ed92079fa5b120634a1 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 881bd08c0b08 6 days ago 109MB busybox latest d8233ab899d4 3 weeks ago 1.2MB
再次查看,已经没有该镜像了。
接下来,让咱们建立第一个docker容器吧
[root@localhost ~]# docker run --name b1 -it busybox:latest run:表示运行一个容器,若是本地没有该镜像,会自动去下载。 --name:表示容器的名称,容器的名称是惟一的。 -it:表示启动交互式接口。 busybox:latest:表示镜像名字。
接下来查看一个容器运行的状况:
[root@localhost ~]# docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5a37667a778 busybox:latest "sh" 7 seconds ago Up 7 seconds b1 CONTAINER ID :容器的ID,惟一 IMAGE:该容器运行的镜像名称 COMMAND:该容器运行的命令 CREATED:容器建立时间 STATUS:容器状态 PORTS:暴漏的端口号 NAMES:容器名字
由于该容器运行的是一个busybox,是一个shell的交互式接口,因此退出shell,容器就自动结束了,可使用
[root@localhost ~]# docker start -ai b1 / #
可使用 docker stop或docker kill中止一个容器
删除一个容器使用:docker rm
总结(以运行一个nginx为例):
1.拉取一个镜像
docker pull nginx:1.14-alpine
2.建立一个容器
docker create --name web1 nginx:1.14-alpine
3.启动一个容器
docker start web1
以上三条命令能够合成一条: docker run --name web1 -d nginx:1.14-alpine docker run会自动去拉取本地没有的镜像,并建立启动这个容器
4.中止一个容器
docker stop web1
5.删除一个容器
docker rm web1 或 docker container rm web1
6.删除一个镜像
docker rmi nginx:1.14-alpine 或 docker image rm nginx:1.14-alpine
以上就完成了一个docker的基本生命周期。
注:第五、6步前一个是老的命令格式,后一种是新的命令格式,建议使用新的命令格式
附图一张,容器的状态转换: