Docker 安装与使用 2019
2019-04-18 23:39
399 查看
官网:www.docker-cn.com
简介:
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使
用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的
核心概念:
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker客户端(Client):连接docker主机进行操作;
docker仓库(Registry):用来保存各种打包好的软件镜像;(所有的模板类)
docker镜像(Images):软件打包好的镜像;放在docker仓库中;(模板类)
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用(java的bean,非单例)
使用Docker的步骤:
- 安装Docker
- 去Docker仓库找到这个软件对应的镜像;
- 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
- 对容器的启动停止就是对软件的启动停止;
卸载
[code] 1.查询安装过的包 yum list installed | grep docker docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrep 2.删除安装的软件包 yum -y remove docker-engine.x86_64 3.删除镜像/容器等 rm -rf /var/lib/docker
安装Docker
[code]准备: 系统要求,64位,内核版本3.10以上 uname -r :查看系统版本 cat /etc/redhat-release : 查看centOS版本
[code]centOs6.8安装docker 1、yum install -y epel-release 依赖库 2、yum install -y docker-io 安装docker 3、安装后的配置文件:/etc/sysconfig/docker 4、启动docker : service docker start 5、docker version 验证
[code]CentOS7安装Docker 1、//卸载已有的docker $ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine 2、安装驱动包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 3、使用下列命令设置 stable 镜像仓库 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 4、启用 edge 和 testing 镜像仓库 $ sudo yum-config-manager --enable docker-ce-edge $ sudo yum-config-manager --enable docker-ce-testing 5、更新 yum 软件包索引。 sudo yum makecache fast 6、安装最新版本的 Docker CE sudo yum install docker-ce 7、 启动docker sudo systemctl start docker 8、验证安装完成 sudo docker run hello-world
Docker镜像仓库加速(使用阿里云,国外下载太慢)
1、注册阿里云(可以用淘宝账户登陆)https://promotion.aliyun.com/ntms/act/kubernetes.html
获取镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2、#修改镜像地址
[code]sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://fhotxdhv.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 设置开机启动 systemctl enable docker
运行docker run hello-world
docker命令
镜像命令:
[code]docker version docker info 个人信息详细描述 docker --help 帮助命令 docker images 查看本机的镜像 REPOSITORY:镜像仓库源 TAG:镜像标签(版本) IMAGE ID:镜像id CREATED:创建时间 SIZE:镜像大小 docker images -a 显示本地全部镜像(包含内层镜像) docker images -q 显示本地镜像id docker images -qa 显示本地全部镜像id docker images --digests 镜像摘要信息 docker images --no-trunc 镜像完整信息 docker search tomcat 远程仓库中查找镜像文件(各种版本) docker search -s 30 tomcat 显示点赞数超过30以上的版本 docker pull tomcat 下载远程镜像 (不写版本好默认是 :latest 最新版本) docker rmi hello-world:latest 删除镜像(不写版本好默认是 :latest 最新版本) docker rmi -f hello-world 强制删除,运行中也可以删除 (用名字或id都可以) docker rmi -f hello-world nginx 删除多个,空格分隔 docker rmi -f $(docker images -qa) 删除全部
容器命令:
[code]docker pull centos 下载只有199mb,他是一个精简版的运行需要的程序。快 docker run -it --name mycentos 9f38484d220f i代表交互,t代表伪终端 docker ps 查询docker里面的所有容器 docker exit 容器停止推出 docker ctrl+P+Q 容器不停止推出(后台运行) docker ps -l 显示上一次运行过的容器 docker ps -n 3 显示上三次运行过的容器 docker ps -lq 只显示容器编号(显示上一次运行过的容器) docker start mycentos 启动已有的容器 docker stop mycentos 停止容器(正常关机) docker kill mycentos 强制停止容器 docker rm 9f38484d220f 删除已停止的容器 docker rm -f 9f38484d220f 删除容器(可以未停止) docker run -d centos 后台运行(docker 后台运行必须有一个前台程序,没有会自动关闭) docker logs -f -t --tail 查看日期 (-t 加入日志时间戳,-f跟随最新日志打印,--tail显示最后多少条) docker top 9f38484d220f 查看容器内的进程 docker inspect 9f38484d220f 查看容器内部细节 docker attach 9f38484d220f 重新进入容器(ctrl+P+Q) docker exec -t 9f38484d220f ls -l/tmp 在容器外面,执行容器里面的命令 docker cp 9f38484d220f:/tmp/yum.log /root 拷贝容器里面的内容到容器外面 docker run -it -p 8888:8080 tomcat启动tomcat 外部暴露端口8888(内部还是8080) 打包正在运行的容器为镜像,名字:atguigu/mytomcat,版本号:1.0 ,-m描述信息,-a作者 docker commit -a="zzyy" -m="new Tomcat" 913c5cb0bfb9 atguigu/mytomcat:1.0 启动自己打包的镜像 docker run -it -p 7777:8080 atguigu/mytomcat:1.0
数据卷(docker容器数据持久化)
[code]特点: 1、可以在容器直接共享,或重用数据 2、卷中的更改可以直接生效 3、卷中的更改不会包含在镜像中 4、数据卷的生命周期一直保持到没有容器使用它为止 直接命令: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 主机上开始没有myDataResources文件,镜像内也没有dataContainer 文件,开始后会在对应位置创建,容器内的dataContainer 相当于和myDataResources绑定在一起,修改一起生效。 docker run -it -v /myDataResources: /dataContainer centos docker inspect centos 查看到绑定信息 容器停止后,主机修改,服务器启动数据同步 docker run -it -v /myDataResources:/dataContainer:ro centos 添加的卷,容器内只能读,不能写
数据卷容器(活动硬盘上挂活动硬盘,实现数据的传递依赖)
[code]1、docker run -it --name dc01 zzyy/cenos 启动之前写好dockerfile的容器 docker run -it --name dc02 --volumes-from dc01 zzyy/cenos 与dc01共享容器卷 docker run -it --name dc03 --volumes-from dc01 zzyy/cenos 与dc01共享容器卷
DockerFile:(像是docker images源码的改动)
[code]mkdir /mydocker 主机下建一个mydocker文件夹 使用dockerFile添加一个卷 vim Dockerfile Dockerfile内容:(docker run -it -v /host1:/dataVolumeContainer1 -v host2/dataVolumeContainer2 centos /bin/bash) 1、(宿主机上的容器卷是默认生成的) FROM centos VOLUME ["/dataVolumeContainer1","dataVolumeContainer2"] CMD echo "finished,--------success1" CMD /bin/bash 2、docker build -f /mydocker/Dockerfile -t zzyy/centos . 根据dockerFile创建新的镜像 3、出现cannot open directory异常 添加 --privileged=true docker run -it -v /host1:/dataVolumeContainer1 --privileged=true centos 4、解析过程 保留字指令必须大写,执行内容不能为空。 命令由上到下执行。 # 注释 每条指令都会创建一个新的镜像层,并对镜像层提交 5、执行流程 docker从基础镜像运行一个容器 执行一条命令并对容器进行修改 执行docker commit操作提交一个新的镜像层 docker基于刚提交的镜像,运行一个新的容器 执行docker的下一条指令,直到所有命令执行完毕。 6、保留字指令 FROM :当前命令基于那个基础镜像 (scratch所有镜像的基类) MAINTAINER :作者加作者的邮箱 RUN :容器运行时需要执行的命令 EXPOSE :对外暴露的端口号 WORKDIR:登录以后的工作目录(登录后第一次停留的目录) ENV:临时环境变量 ADD:拷贝加解压缩 COPY:拷贝 VOLUME:容器数据卷,用于保存数据持久化 CMD:指定容器运行时需要运行的命令。(可以有多个cmd命令,但只会执行最后一个) ENTRYPOINT:指定容器运行时需要运行的命令。(追加命令,多个指令会绑定一起执行) ONBUILD:有子镜像继承本地镜像时,子镜像构建后会触发父镜像的这个命令
案例:
1、添加一个centos镜像,会自动导入vim 和ifconfig 功能,进去入口是 /user
[code]from centos ENV mypath /user WORKDIR $mypath RUN yum -y install vim RUM yum -y install net-tools EXPOSE 80 CMD /bin/bash
2、最后添加命令
[code]#执行centos里面的url命令查询当前ip所在区域 1、直接执行-i然后报错 FROM centos Run yun install -y curl CMD["curl","-s","http://ip.cn"] CMD -i 2、执行的是["curl","-s","-i","http://ip.cn"] FROM centos Run yun install -y curl ENTRYPOINT["curl","-s","http://ip.cn"] CMD -i
3、这类被构建时打印父类信息
[code]FROM centos RUN yum install -y curl ENTRYPOINT ["curl","-s","http://ip.cn"] ONBUILD RUN echo "father images onbuild----88"
4、添加mysql
5、启动redis
本地镜像推送到阿里云
申请阿里云账号后,进入下面设置界面,获取推送镜像方法
https://cr.console.aliyun.com/repository
相关文章推荐
- Virtualbox 安装CoreOS 学习使用Docker
- Mac OS X 下安装使用 Docker
- 使用docker安装gitlab
- 阿里云部署Docker(8)----安装和使用redmine
- Mac OS安装使用docker
- Docker的安装及简单使用
- Mac下Docker安装与使用
- Mac OS X 下安装使用 Docker
- 需要安装 MongoDB,RabbitMQ,或者 MySQL?使用 Docker 来简化开发和测试
- Docker安装使用笔记
- centos7下安装使用docker
- docker-compose 的安装与使用
- 群晖 NAS DSM 系统,只要三步使用 Docker 安装迅雷远程下载
- CentOS7安装docker1.9.1及简单使用
- docker安装使用
- nova-docker安装使用中遇到的一些问题(juno版)
- DockerUI安装、使用
- 需要安装 MongoDB,RabbitMQ,或者 MySQL?使用 Docker 来简化开发和测试