Docker学习笔记(1)——Dockerfile创建镜像
2017-11-24 22:38
1081 查看
1.了解Dockerfile基本操作
基本操作:
1.FROM指令:FROM : 指定创建镜像的基础镜像
$ FROM ubuntu:latest
2.ENTRYPOINT指令:默认入口命令,在启动容器时作为根命令执行
支持两种格式:
$ ENTRYPOINT ["executable","param1","param2"] (exec运行,推荐) $ ENTRYPOINT command param1 param2 (shell运行,/bin/sh)
指定多个,最后一个生效
可以被–entrypoint 参数覆盖掉
3.CMD指令:只有一条,作为主进程,也是有同上两种形式
比如ubuntu镜像默认的CMD是/bin/bash,
如果docker run -it ubuntu cat /etc/os-release这就是用 输出系统版本信息指令 替换了 默认的/bin/bash命令,CMD大概就是这样的过程。
4.RUN指令:在当前镜像基础上运行指定命令,并提交为新的镜像,命令较长时可以使用\来换行
$ RUN apt-get update\ && apt-get install -y libsnappy-dev\ && rm -rf /var/cache/apt
注意及时删除一些临时文件和缓存文件,特别是在apt-get指令后,/var/cache/apt下面会缓存一些安装包。
5.ENV命令:指定环境变量,ENV < key>< value>或ENV< key>=< value>
$ ENV PG_MAJOR 9.3
6.VOLUME命令:创建一个数据卷挂载点
$ VOLUME ["/data"]
7.WORKDIR命令:为后续的RUN,CMD,ENTRYPOINT指定配置工作目录
参数是相对路径:
$ WORKDIR /a $ WORKDIR b $ WORKDIR c
实际路径:/a/b/c
声明镜像内服务所监听的端口,只是生命作用,并不会端口映射,可以使用容器中-P来完成端口映射。
8.ADD命令:将dockerfile 所在同一目录下的文件可以新建写入容器中 ADD sourcefile destfile
$ ADD authorized_keys /root/.ssh/authorized_keys
9.MAINTAINER命令:指定作者,格式如下
$ MAINTAINER docker_user (user@docker.com)
创建镜像:
1.创建Dockerfile文件,在任意路径下创建即可”Dockerfile”
2.输入如下创建命令即可
2.使用两个链接在一起的容器运行Wordpress博客程序
首先下载相关镜像
$ sudo docker pull wordpress $ sudo docker pull mysql Using default tag: latest latest: Pulling from library/mysql 85b1f47fba49: Already exists 5671503d4f93: Pull complete 3b43b3b913cb: Pull complete 4fbb803665d0: Pull complete 05808866e6f9: Pull complete 1d8c65d48cfa: Pull complete e189e187b2b5: Pull complete 02d3e6011ee8: Pull complete d43b32d5ce04: Pull complete 2a809168ab45: Pull complete Digest: sha256:1a2f9361228e9b10b4c77a651b460828514845dc7ac51735b919c2c4aec864b7 Status: Downloaded newer image for mysql:latest
查看是否下载镜像,启动MySQL容器,通过设置MYSQL_ROOT_PASSWORD环境变量来设置密码。
$sudo docker run --name mysqlwp -e MYSQL_ROOT_PASSWORD=wordpress -d mysql 8a34bd9e46a7f77c6a5fc9c685041065405dd504140a396041af7a23e274bd4d
将wordpress用–link方式链接到mysql容器,Docker会自动进行网络配置,让Wordpress能够访问到容器所暴露出来的端口。两个容器都会以守护态方式运行,wordpress容器的80端口会映射到宿主机的80端口。
$sudo docker run --name wordpress --link mysqlwp:mysql -p 80:80 -d wordpress 997a113f5c55882488e9e0f7176feb20d87fb88ad92272555fc92f3eb16c223a
之后使用ifconfig去查询docker host的ip
sudo ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ...
连接http://172.17.0.1即可进入wordpress安装界面,安装成功后登录即可到主页面
wordpress使用的是root用户这并不是一个好实践,创建一个名为wordpress的数据库
把之前的容器关闭删掉之后(关闭之后其链接的wordpress容器也会终止),创建容器如下
$sudo docker run --name mysqlwp -e MYSQL_ROOT_PASSWORD=wordpressdocker \ > -e MYSQL_DATABASE=wordpress \ > -e MYSQL_USER=wordpress \ > -e MYSQL_PASSWORD=wordpresspwd \ > -v /home/docker/mysql:/var/lib/mysql \ > -d mysql 3346d944abb77b49760de11de72de60ba9d64d550eb29f63887e059dbe503d70
启动wordpress并指定你设置好的数据表
$ sudo docker run --name wordpress --link mysqlwp:mysql -p 80:80 \ > -e WORDPRESS_DB_NAME=wordpress \ > -e WORDPRESS_DB_USER=wordpress \ > -e WORDPRESS_DB_PASSWORD=wordpresspwd \ > -d wordpress e91fb9e547aef33cb27c485f778cf3575fda088ea966723e79400598e199d755
(注意挂载到之前已经存在的目录下)
之后目录下会看到文件变动:
/home/docker/mysql$ ls auto.cnf client-key.pem ib_logfile1 private_key.pem sys ca-key.pem ib_buffer_pool ibtmp1 public_key.pem wordpress ca.pem ibdata1 mysql server-cert.pem client-cert.pem ib_logfile0 performance_schema server-key.pem
备份数据(使用exec mysqlwp再容器内,执行mysqldump完成备份
$ sudo docker exec mysqlwp mysqldump --all-databases \ > --password=wordpressdocker > wordpress.backup
在宿主机和容器之间共享数据($PWD表示当前绝对路径)挂载到宿主机上,在/bin/bash操作即可链接起来
$ sudo docker run -ti -v "$PWD":/docker ubuntu:latest /bin/bash root@61c64c249bad:/# touch /docker/mysql root@61c64c249bad:/# exit exit
相关文章推荐
- docker学习笔记3—使用Dockerfile与docker build命令创建一个nginx服务器镜像,并使用浏览器进行访问
- docker学习笔记6:利用dockerfile创建镜像介绍(生成简单web服务器镜像)
- docker学习笔记之dockerfile创建镜像
- Docker学习笔记之使用Dockerfile创建镜像
- Docker学习笔记(三)- Dockerfile创建本地镜像
- docker学习笔记(四)——Dockerfile创建自定义镜像
- docker学习笔记5:利用commit命令创建镜像 和 删除本地镜像
- docker学习笔记(三)——创建自定义镜像
- docker学习笔记2—创建一个nginx的镜像,并使用浏览器访问
- docker学习笔记之创建本地镜像(三)docker build的结果
- docker学习系列(二):使用Dockerfile创建自己的镜像
- Docker 学习笔记1—创建一个docker nginx镜像并通过浏览器访问
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- docker学习笔记4:利用docker hub上的mysql镜像创建mysql容器
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- Docker学习笔记1-从0创建并发布一个docker镜像
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
- docker学习笔记(六)使用Dockerfile构建镜像
- Docker学习记录(二)-Dockerfile创建镜像
- Docker学习笔记(3)-- 如何使用Dockerfile构建镜像