Docker的学习1
docker是开源的应用容器引擎。可以理解为轻量级的虚拟机,又可以理解为开了挂的chroot。
官方解释为docker是一个开源的项目,可以用来将任何应用以轻量级容器的形式,打包,发布和运行。
docker架构:
docker run images_name 运行容器
docker images 查看所有本地的容器
docker pull 获取image
docker build -t image_name 路径名 创建image
docker rm 删除container
docker rmi 删除image
docker ps 查看正在运行的容器
docker
-p 端口映射
-d 直接返回
docker cp 文件 容器id://容器内的地址 cp文件到容器内的地址,但当重启后,文件不再容器内,这时就需要保存,保存的命令为:docker commit -m ‘message’ 容器id 新的容器名称,这时就产生了一个新的image
docker stop 容器id 停止当前容器
docker ps -a 历史容器
例:下载nginx镜像并运行:
[root@localhost ~]# docker pull nginx using default tag: latest latest: pulling from library/nginx digest: sha256:9688d0dae8812dd2437947b756393eb0779487e361aa2ffbc3a529dca61f102c status: image is up to date for nginx:latest docker.io/library/nginx:latest
运行nginx镜像:
[root@localhost ~]# docker run -p 8080:80 -d docker.io/nginx #
cad31276eaaa32efa41eb5355189b5c657a4bac22cc0da24f43fd889c8e2c883
将本地的8080端口映射到80端口
[root@localhost ~]# netstat -anp |grep 8080 tcp6 0 0 :::8080 :::* listen 1972/docker-proxy
开放8080端口
[root@localhost ~]# iptables -i input -p tcp --dport 8080 -j accept
通过编写简单的文件自创docker镜像
1、首先建立文件夹docker
2、在docker文件夹下建立dockerfile文件,并编辑:
from alpine:latest ##是一个专门针对docker做的一个环境 maintainer xbf cmd echo "hello docker"
3、利用docker build 命令构建新的image
[root@localhost dockertest]# docker build -t hello_docker .
# sending build context to docker daemon 2.048kb
step 1/3 : from alpine:latest
latest: pulling from library/alpine
9d48c3bd43c5: pull complete
digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
status: downloaded newer image for alpine:latest
---> 961769676411
step 2/3 : maintainer xbf
---> running in c92d0fa7be5c
removing intermediate container c92d0fa7be5c
---> 3f3ea64dc595
step 3/3 : cmd echo "hello docker"
---> running in 6568cd66097d removing intermediate container 6568cd66097d
---> d7cc9ec010e5
successfully built d7cc9ec010e5
successfully tagged hello_docker:latest
[root@localhost dockertest]# docker images
repository tag image id created size
hello_docker latest d7cc9ec010e5 9 seconds ago 5.58mb
nginx latest ab56bba91343 20 hours ago 126mb
alpine latest 961769676411 3 weeks ago 5.58mb
hello-world latest fce289e99eb9 8 months ago 1.84kb
4、利用docker run来运行此image
[root@localhost dockertest]# docker run hello_docker hello docker
第二个dockerfile
1、首先建立文件夹docker2
2、在docker2文件夹下建立dockerfile文件,并编辑:
from ubuntu
maintainer root
run sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
run apt-get update && apt-get install nginx -y
copy index.html /var/www/html
entrypoint ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
expose 80
3、建立www/index.html文件
touch index.html
hello nginx.ubuntu
4、构建新的image。
docker build -t whr/hello-nginx /dockertest/docker2
[root@localhost docker2]# docker images
repository tag image id created size
whr/hello-nginx latest f6efa129cd16 2 minutes ago 149mb
5、启动whr/hello-nginx
[root@localhost docker2]# docker run -d -p 80:80 whr/hello-nginx
ada48aa3a8fef5e1feb35e5c90ff176f584cd69b8ad1af403de96cd883247599
dockerfile的语法
from base image
run 执行命令
add 添加文件
copy 拷贝文件
cmd 执行命令
expose 暴露窗口
workdir 指定路径
maintainer 维护者
env 设定环境变量
entrypoint 容器入口
user 指定用户
volume mount point
镜像分层
dockerfile中的每一行都会产生一个新层