Docker个人笔记


## Docker笔记

1.docker容器化技术 可以保证从开发到发版测试,到生产环境一致性问题,不会报错。

解释:①dev开发环境 安装一个docker盒子,之后在docker里面安装各种环境,数据库,jdk等,相当于所有东西都是在docker下完成,不需要安装环境到本机。
② 当开发完成,打包docker镜像,提交到镜像仓库,测试服务器只需要将这个盒子拉下来用就行了,有问题在重新修改提交盒子到测试环境,测试环境通过,生产拉下盒子跑就行了
2.与虚拟机的区别:
本质区别:vmware虚拟机在当前操作系统上在安装一个虚拟的操作系统,虚拟的仓库,运行的程序都是在这个虚拟的操作系统中运行。而docker是在当前操作系统上创建docker引擎。应用安装在引擎中,可以在docker中安装ubuntu,运行的就是ubuntu应用,就是安装ubuntu虚拟机和docker拉取ubuntu镜像的区别,虚拟机运行约2分钟,docker约两秒
使用的区别,docker启动快,文件小,集成性能高

3.命令
docker run hello-world  (拆分两步为,先拉取再把 hello-world镜像跑为容器)
①docker pull hello-world  ② docker run hello-world
默认拉取最新版本,指定版本加冒号: docker pull hello-world:v1.0.2
若本地有镜像了,就直接启动不必再拉取

查看当前系统所有docker 镜像:docker images
查看正在运行的容器:docker ps
查看正在运行或已经推出的容器:docker ps  -a
根据id或名字 删除容器:docker rm id  或 docker rm name
删除镜像: docker rmi hello  (但是删除镜像前要先删除容器)

关闭一个容器:docker stop hello  或 docker kill hello  

进入一个容器:先查看他的id :docker ps 之后------》 docker run it hello
例如安装centeros容器在进入该容器查看所有目录:安装centeros:docker pull centeros,运行并进入 : docker run it centerosid 之后在centeros中查看目录:ps

端口映射:指定端口映射,前面是宿主机端口后面是容器端口,如docker run  -p 8080:80 -d nginx,将容器的80端口映射到宿主机的8080端口,然后使用localhost:8080就可以查看容器中nginx的欢迎页了


安装mysql:docker pull mysql:5.7.28
启动mysql:  docker run  -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7.28
解释:-e 环境变量,MYSQL_ROOT_PASSWORD=123456:root密码为123456,端口映射:容器3307映射到本机3306

docker run it    -i: 以交互方式运行容器   -t: 为容器分配一个伪输入终端

跑tomcat:docker run -p 8080:8080 -d tomcat



数据卷:数据持久化,将容器产生的数据保存到宿主机中,以防止容器销毁数据丢失

docker run -it -v /mydatas:/container/datas centos  
-v:代表拷贝到宿主机的目录,将容器centos在/container/datas目录下产生的数据拷贝到 宿主机/mydatas目录下,没有目录自动创建
eg:  docker run -p 80:80 -v /my-nginx/html:/usr/share/nginx/html nginx:1.17.7
 将容器nginx 80端口映射到宿主机80端口,将容器 /usr/share/nginx/html目录下的文件挂载到宿主机/my-nginx/html下面


Dockerfile:是镜像的描述文件,描述了我们的镜像是怎么一步步构成的(即说明书)
FROM         :构建的镜像是基于那个镜像来的
MAINTAINER    :定义作者是谁
ADD			   :拷贝文件并解压
COPY           :拷贝文件
RUN            :运行shell命令
ENV             :定义环境变量
CMD             :启动容器时候执行的命令
WORKDIR        :进入到容器之后的落脚点
EXPOSE			:容器暴露的端口
ENTYRPOINT      :启动容器的时候执行的命令

docker build -t nginx:v1.0
构建一个名为nginx的伪终端镜像,理解就是拷贝一份镜像文件给他重命名并且加注释生成新的镜像文件
一个完整的Dockerfile:
#基于centos镜像
FROM centos

#维护人的信息
MAINTAINER The CentOS Project <1234567@qq.com>

#安装httpd软件包
RUN yum -y update
RUN yum -y install httpd

#开启80端口
EXPOSE 80

#复制网站首页文件至镜像中web站点下
ADD index.html /var/www/html/index.html

#复制该脚本至镜像中,并修改其权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh

#当启动容器时执行的脚本文件
CMD ["/run.sh"]

你可能感兴趣的:(docker,docker)