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的主要内容,如果未能解决你的问题,请参考以下文章

Docker教程-1-学习及安装Docker

Python3 - 深入学习Docker容器管理

原创docker在Ubuntu下1小时快速学习

docker学习笔记——创建私有库

Docker学习笔记(6-1)Docker镜像与Docker仓库

Docker入门学习1 ——概述