Docker的学习1
Posted shy13138
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的每一行都会产生一个新层
以上是关于Docker的学习1的主要内容,如果未能解决你的问题,请参考以下文章