1. 去官网下载repo 2. 更改成国内镜像baseurl=https://download.docker.com/linux/ 3. 有可能须要安装依赖包 yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.66-1.el7.noarch.rpm 4. yum install docker-ce
1. /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } Docker镜像加速 2. 启动 # systemctl start docker 3. 查看 # docker help # docker info 4. Docker经常使用 # docker image --help # docker search nginx (https://hub.docker.com/) nginx 顶级仓库 jwilder/nginx-proxy 私有仓库 # docker image pull nginx:1.14-alpine (下载alpine image, alpine是一个体积特别小的Nginx版本,没有任何调试工具,在实际工做中,根据自已的须要生成image) # docker pull quay.io/coreos/flannel:v0.10.0-amd64 (到quay.io网站下载镜像,这个网站是经常使用的第三方镜像) # docker image pull busybox:latest # docker image ls (显示下载的image) # docker image ls --no-trunc (显示详细信息) # docker container --help # docker container ls (显示容器) # docker container ps (显示容器) # docker container run --help # docker network list (网络查询) docker0: 默认是NAT的网桥 # docker run --name b1 -it busybox:latest (以b1的名字运行image busybox,而且是交互式界面) / # ls (进入到busybox容器的shell) mkdir /data/html -p vim /data/html/index.html (在容器里生成主页) httpd -f -h /data/html (启动b1容器里和httpd) # docker inspect b1 (在host上查看b1容器的IP) # curl 172.17.0.2 (访问b1容器的网页) 在容器里exit,退出容器 # docker ps -a (显示全部容器,运行的和中止的) # docker container start -i -a b1 (启动容器) # docker kill b1 (强制中止容器) # docker rm b1 (永久删除容器b1) # docker run --name web1 -d nginx:1.14-alpine (启动nginx容器,若是本地没有下载nginx image,只要repo指定为hub.docker.com, 会自动下载,在容器中的进程不能运行在后台,由于是惟一进程,是支撑一个容器的骨架) # docker run --name kdvsor1 -d redis:4-alpine (运行redis容器) # docker exec -it kdvsor1 /bin/sh # redis-cli # docker logs web1 (在host中查看web1容器的日志)
Docker镜像含有启动容器所须要的文件系统及其内容,所以,其主要做用建立并启动docker容器。
1. bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。 2. rootfs:位于bootfs之上,表现为docker容器的根文件系统。rootfs由内核挂载为只读模式,然后经过联合挂载技术额外挂载一个可写层; 位于下层的镜像称为父镜像,最底层的称为基础镜像 最上层为可读写层,基下层均为只读层
启动容器时,Docker Daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Registry中下载该镜像并保存到本地
Registry用于保存docker镜像,包括镜像的层次结构和元数据: 1. Sponsor Registry:第三方的registry,供客户和Docker社区使用 2. Mirror Registry:第三方的registry,只让客户使用 3. Vendor Registry:由发布Docker镜像的供应商提供的registry 4. Private Registry:经过设有防火墙和额外的安全层的私有实体提供的registry 注意:每一个仓库能够包含多个Tag,可是每个Tag只能属于一个仓库
Docker Registry中的镜像一般由研发人员制做,然后推送至公共或私有Registry上保存,供其余人员使用,而后部署到生产环境
1. Dockerfile
2. 基于容器制做
3. Docker Hub automated buildshtml
# docker run --name b1 -it busybox # / # mkdir -p /data/html # / # vi /data/html//index.html # docker commit -p b1 (制做image,此镜像仍是以bysybox的sh启动) # docker tag 542b72efce7e linuxdevops/httpd:v1.0-1 (给镜像标签) # docker tag linuxdevops/httpd:v1.0-1 linuxdevops/httpd:latest (加另外一个标签) # docker run --name t1 -it linuxdevops/httpd:v1.0-1 (启动作的镜像) # / # ls /data/html/index.html # docker commit -a "evanliang" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 linuxdevops/httpd:v1.0-2 # docker run --name t2 -it linuxdevops/httpd:v1.0-2 # curl 172.17.0.4 (新作的linuxdevops/httpd:v1.0-2能直接启动httpd) 4. 在dockerhub上建立帐户 # docker tag f43e5c3f987c liangjindong/httpd (tag名字必定要和dockerhub上建立的REPOSITORY名字一致) # docker login -u liangjindong (登陆dockerhub) Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded # docker push liangjindong/httpd (若是不带tag,全部image孝会上传到dockerhub) # 在dockerhub上,能够看到
# 同时,能够用国内阿里云的镜像服务dev.aliyun.com
# 配置镜像加速:
针对Docker客户端版本大于 1.10.0 的用户
您能够经过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sah48iqf.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
同时,能够在阿里云上建立镜像仓库,上传:
# sudo docker tag 0dfafbbae68a registry.cn-beijing.aliyuncs.com/liangjindong/httpd:latest (用阿里云指定的tag)
# sudo docker login --username=liangjindong registry.cn-beijing.aliyuncs.com (登陆)
# sudo docker push registry.cn-beijing.aliyuncs.com/liangjindong/httpd (上传镜像)
在阿里云上检查,成功
5. docker镜像打包分发
# docker save -o myimages.gz liangjindong/httpd:latest liangjindong/httpd:v1.0
# docker load -i myimages.gz 把myimages.gz copy到另一台docker服务器
镜像打包分发须要提早把image本地准备好,不然运行docker run时还会去dockerhub默认的Registry下载。linux
集中存储各类Docker镜像 Github他Docker hub来实现镜像的Automated Builds