################docker安装#####################html
Docker从1.13版本以后采用时间线的方式做为版本号,分为社区版CE和企业版EE。java
社区版是免费提供给我的开发者和小型团体使用的,企业版会提供额外的收费服务,好比通过官方测试认证过的基础设施、容器、插件等。linux
社区版按照stable和edge两种方式发布,每一个季度更新stable版本,如17.06,17.09;每月份更新edge版本,如17.09,17.10。nginx
一、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。git
经过 uname -r 命令查看你当前的内核版本spring
uname -r
二、使用 root 权限登陆 Centos。确保 yum 包更新到最新。docker
sudo yum update
三、卸载旧版本(若是安装过旧版本的话)json
sudo yum remove docker docker-common docker-selinux docker-engine
四、安装须要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的vim
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
五、设置yum源centos
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
六、能够查看全部仓库中全部docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
七、安装docker
sudo yum install docker-ce #因为repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
八、启动并加入开机启动
sudo systemctl start docker sudo systemctl enable docker
九、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
一、由于以前已经安装过旧版本的docker,在安装的时候报错以下:
Transaction check error: file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
二、卸载旧版本的包
sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
三、再次安装docker
sudo yum install docker-ce
1.docker使用国内镜像
vim /etc/docker/daemon.json
{ "registry-mirrors": ["http://hd1esep4.mirror.aliyuncs.com","https://registry.docker-cn.com"] }
systemctl daemon-reload
systemctl restart docker
######################docker经常使用命令######################
docker --version 查看版本
docker stats 查看容器使用的系统资源(每秒刷新一次输出)
docker search nginx 从镜像空间查找nginx镜像
docker pull nginx 拉取nginx镜像
docker images 查看全部镜像
docker ps 查看运行中容器信息 (包含 containerId image ports 等信息)
docker ps -all 查看全部容器信息
docker inspect containerId 查看容器内网的ip地址等信息
docker image inspect imageId 查看镜像详细信息
docker logs containerId 查看容器日志
docker cp localfile containerId:/usr/local 从宿主机拷贝文件到容器内指定目录
docker start containerId 启动容器
docker stop containerId 关闭容器
docker rm containerId 删除容器
docker rmi imageId 删除镜像 或者 docker rmi centos_nginx:v1
docker exec -it containerId bash 进入容器(ctrl+p+q 保存修改退出)
docker commit containerId nginxserver:v5.0 将自定义的容器提交成镜像
docker stop $(docker ps -q) 关闭全部运行中的容器
docker rm $(docker ps -aq) 删除全部容器
docker run -p 80:80 -d -v $PWD/html:usr/share/nginx/html nginx:latest【 -v $PWD/html:usr/share/nginx/html 表示把当前路径下html目录映射为usr/share/nginx/html 也就是说主机下的html就是容器下的usr/share/nginx/html html内的文件修改和添加就等同于容器usr/share/nginx/html文件操做 外网访问就能够访问获得,就不用再登陆容器操做文件了; -d 表示以守护进程启动; -p 宿主机端口:容器端口 映射; nginx:latest 已经pull下来的镜像】
apt-get update && apt-get install vim 容器内安装vi 工具
####################阿里云镜像仓库(也可本身搭一个镜像仓库)#############
######################Dockerfile编写#######################
1.经常使用的Dockerfile 文件内容以下:
FROM java:8 VOLUME /tmp ADD base_model_server_jg-0.0.1-SNAPSHOT.jar /app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] CMD ["--spring.profiles.active=isv"] EXPOSE 8101
2.容器构建:
docker build -t centos_nginx:v1 Dockerfile路径
3.自定义ES Dockerfile
FROM java:8 RUN groupadd elasticsearch RUN useradd elasticsearch -g elasticsearch RUN set -ex \ && mkdir -p /usr/local/data/elasticsearch \ && mkdir -p /usr/local/data/elasticsearch/data \ && mkdir -p /usr/local/data/elasticsearch/logs RUN chown -R elasticsearch:elasticsearch /usr/local/data/elasticsearch COPY elasticsearch-6.2.2.tar.gz /usr/local/elasticsearch-6.2.2.tar.gz RUN tar -zxvf /usr/local/elasticsearch-6.2.2.tar.gz -C /usr/local/ && rm -rf /usr/local/elasticsearch-6.2.2.tar.gz COPY elasticsearch.yml /usr/local/elasticsearch-6.2.2/config/elasticsearch.yml RUN chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-6.2.2 RUN chmod 777 /usr/local/data/elasticsearch/data VOLUME /usr/local/data/elasticsearch/data COPY docker-entrypoint.sh / RUN chmod 777 /docker-entrypoint.sh EXPOSE 9200 9300 ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["elasticsearch"]
docker-entrypoint.sh 文件以下:
#!/bin/bash su - elasticsearch -s /usr/local/elasticsearch-6.2.2/bin/elasticsearch chmod 777 -R /usr/local/data/elasticsearch
#####################docker-compose编写#####################
docker-compose.yml 以下:
version: '2' services: eureka-server: image: eureka/eurekaserver hostname: eureka-server ports: - "8761:8761" config-server: image: eureka/configserver ports: - "8888:8888" links: - "eureka-server" config-client: image: eureka/configclient ports: - "8881:8881" links: - "eureka-server" - "config-server"
#启动容器
在jwd_cloud/docker 目录下 执行以下命令
#构建/重建服务
docker-compose up --build
#之后台方式启动容器和容器内服务
docker-compose up -d
#显示当前项目容器
docker-compose ps
#####################################注意###########################################
1.写启动脚本时注意
2. inux下解决docker端口映射到宿主机后外网没法访问的问题