Open zengbin93 opened 6 years ago
Dockerfile是Docker自动化创建镜像的配置文件,通常放在项目根目录。使用docker build命令可以从Dockerfile创建镜像。推荐使用Dockerfile进行镜像的定制,不要使用docker commit来创建镜像。
镜像的操作主要包括:1)获取;2)创建;3)查看;4)删除;
docker pull
DockerHub上面有很多高质量的镜像,因此,大部分时候,我们都可以从远程仓库获取满足需求的镜像。
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
DockerHub上找不到满足需求的镜像时,就必须自己动手创建了,方法有以下几种:1)使用Dockerfile定制镜像;2)从rootfs压缩包导入;3)使用docker commit
创建等。
最主流的自制镜像方法是使用Dockerfile!尤其不推荐使用docker commit
方法创建,理由是:commit是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像,也就是说大量的无关文件都会添加到新的镜像中,造成臃肿;此外,使用 docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像,换句话说,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知。
docker build
如:docker build -t runoob/ubuntu:v1 .
docker images
docker search 'image name'
执行docker search centos 会从dockerhub上搜索镜像
使用docker rmi 后面加上docker的ID;如果镜像已经创建了一个容器,那么将无法进行删除
容器的常用操作包括:1)启动;2)终止;3)删除;4)进入容器;5)导入和导出
docker run
docker run -it --rm ubuntu:16.04 bash
参数说明:
启动一个ubuntu容器,并进入bash,如果本地没有ubuntu镜像,直接从远程仓库拉取:
docker run -it ubuntu bash
docker stop
默认情况下,指定应用运行结束后,容器会自动终止。终止状态的容器可以通过 docker container ls -a
查看。
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。其应用场景主要有:1)Web应用的自动化打包和发布;2)自动化测试和持续集成;3)在服务型环境中部署和调整数据库或其他的后台应用等。
官网:https://www.docker.com/ DockerHub:https://hub.docker.com/
Docker是Docker.lnc公司使用Go语言开发的一个基于LXC技术的容器引擎,源代码托管在Github上,遵从Apache2.0协议开源。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
类似于虚拟机,启动一个容器就必须要有镜像
运行业务的主体,其实就是从镜像创建的一个实例。可以对容器进行增删改查,容器之间也是相互隔离的。和虚拟机最大的区别就是一个是虚拟的一个是隔离的。 缺点:不会像虚拟机那样隔离的那么彻底,我们可以将容器理解为简化版的linux,有进程运行在里面。
根据docker的三大理念【构建 - 运输 - 运行】,我们就需要一个仓库来存放镜像。简单的说:我们将镜像创建完成就需要存放到仓库里面,进行集中式的管理。仓库这点类似于github,docker也有一个dockerhub,他也是一个公共对外的仓库。
镜像是由多层存储构成,下载镜像也是逐层进行。下载过程中给出每一层ID的前12位,下载结束后给出该镜像的完整sha256摘要,以确保下载的一致性。
.dockerignore
文件可以指定在创建镜像的时候过滤哪些文件,类似于git的 .gitignore
文件
docker container prune
$ docker rmi $(docker images -q)
$ docker rm $(docker ps -a -q)
Docker Compose是一种用于通过使用单个命令创建和启动Docker应用程序的工具。我们可以使用它来配置应用程序的服务。它是开发,测试和升级环境的好工具。
它提供以下命令来管理应用程序的整个生命周期。
https://docs.docker.com/install/linux/docker-ce/ubuntu/
测试使用的是root用户
step 1. 如果之前安装过,卸载老版本 $ sudo apt-get remove docker docker-engine docker.io
step 2. 安装Docker CE
安装方法有三个:1)设置Docker的库,然后安装;2)下载DEB包,然后全手动安装;3)下载可信脚本自动安装。
对于开发和测试来说,使用脚本安装是最方便的,当然,下载脚本后要先看看,然后再执行。
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
执行 docker run hello-world
看看docker有没有安装成功,正常输出结果如下图:
https://docs.docker.com/install/linux/linux-postinstall/
增加docker用户组,并把需要使用docker的用户加进去,参考: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
设置docker开机启动
$ sudo systemctl enable docker
tag可选值 5.5, 5.6, 5.7, 8.0, latest,默认是latest
默认端口:3306 docker run -p 3306:3306 --name=mysql1 -d mysql/mysql-server:tag
mysql服务器启动后,会为root用户创建一个随机密码,执行一下代码可以查看
docker logs mysql1 2>&1 | grep GENERATED
docker exec -it mysql1 mysql -uroot -p
默认情况下,MYSQL_ONETIME_PASSWORD是True,所以第一次连接之后必须修改root用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
【可选】配置root用户的远程连接
grant all PRIVILEGES on test_db.* to root@'%' identified by 'password';
flush privileges;
资料推荐