Dockerr入门笔记

本文为学习慕课网Docker入门教程后的笔记

1. Docker介绍

Docker和虚拟机的区别

在这里插入图片描述

Docker的架构
在这里插入图片描述

在这里插入图片描述

2.Docker命令小结

命令用途举例
docker pull从远端仓库获取imagedocker pull ubuntu(默认获取latest版本)
docker build创建image
docker images列出本地所有的image
docker ps列出正在containerdocker ps列出当前正在运行的容器,如果加上-a则会展示历史容器
docker run运行containerdocker run nginx -d -p 80:80(-d表示在后台执行,-p表示端口映射,格式为宿主机端口:容器端口)
docker stop停止正在运行的容器后接ID
docker rm删除container后接ID
docker rmi删除image后接ID
docker cp在host 和container之间拷贝文件docker cp index.html 容器ID://usr/share/nginx/html
docker commit保存改动为新的Imagedocker commit -m “fun” 容器ID nginx-fun (-m后面是保存新镜像的messgae,nginx-fun是新镜像名字)
docker exec进入运行的容器内部docker exec -it 容器ID /bin/bash (以命令行的方式进入)

3. Dockerfile介绍

一个简单的Dockerfile实例介绍(默认文件名字就叫Dockerfile)

FROM alpine:latest //代表该镜像的基础镜像

MAINTAINER hh //代表作者

CMD echo ‘hello docker’ //运行命令

然后利用docker build命令制作

docker build -t hellp_docker . //-t 代表标签,也就是新镜像的名字,.代表当前目录,就是把目录中的内容都送到docker engine,用于产生image

4. Dockerfile语法介绍

命令用途举例
FROMbase imageFROM hello-world
RUN执行命令RUN apt-get update
ADD添加文件除了CPOY的功能外,还能将远程服务器上的文件添加进来
COPY拷贝文件COPY index.html /val/www/html
CMD执行命令
EXPOSE暴露端口EXPOSE 80
WORKDIR指定路径指定运行命令的路径
MAINTAINER维护者
ENV设定环境变量
ENTRYPOINT容器入口ENTRYPOINT ["/usr/sbin/nginx","-g",“daemon off;”] 运行的时候会把数组拆开,拼接成一个命令;如果指定ENTRYPOINT之后,CMD指定的字符将成为ENTRYPOINT命令后面的参数
USER指定用户指定执行该命令的用户
VOLUMEmount point指定容器挂载的卷

ENTRYPOINT和CMD的区别

https://www.kancloud.cn/spirit-ling/docker-study/1413265

镜像分层

Dockerfile中的每一行都产生一个新层

对于已经存在的Image,他的每一层都是只读的,当image运行成为一个容器之后,会产生一个新层,容器层,是可读可写的
在这里插入图片描述

分层的好处

不同的镜像之间可能存在有几层是共享的,减少存储压力

5. volume:独立于容器之外的持久化存储

方法一:挂载一个卷

docker run -d --name nginx -v /usr/share/nginx/html nignx (/usr/share/nginx/html内部的一个地址)

docker inspect nginx (得知容器内部所有的信息)

在这里插入图片描述

可以知道宿主机中的路径挂载到了容器内的地址

方法二:本地的一个目录挂载到容器中

docker run -v $PWD/code: /var/www/html nginx (PWD代表当前目录,冒号后面代表的是挂载在容器内的目录)

方法三:创建一个仅有数据的容器,并把该容器当作volume挂载在其他容器内

docker create -v $PWD/data:/var/mydata --name data_container ubuntu

(-v表示volume,–name是给容器起个名字,这里的ubuntu是指基础镜像)

docker run -it --volumes-from data_container ubuntu /bin/bash

(–volume-from 后面跟着的就是要作为volume被挂载的镜像,这里的ubuntu是指要把data_container挂载到ubuntu里面)

利用mount命令可以查看到挂载的数据卷

6.registry仓库

与registry交互相关命令

docker search hello–world 搜索镜像

docker pull hello-world 拉去镜像

docker push myname/hello-world 推送自己的镜像

docker tag docker/whaleasy hehe/whaleasy (把docker/whaleasy这个镜像打一个新tag,命名为hehe/whaleasy)

7. docker compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

使用 Dockerfile 定义应用程序的环境。

使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

最后,执行 docker-compose up 命令来启动并运行整个应用程序。

docker-compose.yml文件常用命令

命令用途
build本地创建镜像
command覆盖缺省命令
depends_on连接容器
ports暴露端口
volumes
imagepull镜像

docker-compose.yml文件举例:想搭建ghost博客项目,用到了nginx和mysql

version: '2'
networks:
    ghost:

services:
    ghost-app:
        build: ghost
        networks:
            - ghost
        depends_on:
            - db
        ports:
            - "2368:2368"
    nginx:
        build: nginx
        networks:
            - ghost
        depends_on:
            - ghost-app
        ports:
            - "80:80"
    db:
        image: "mysql:5.7.15"
        networks:
            - ghost
        enviroment:
            MYSQL_ROOT_PASSWORD: mysqlroot
            MYSQL_USER: ghost
            MYSQL_PASSWORD: ghost
        volumes:
            - $PWD/data:/var/libmysql
        ports:
            - "3306:3306"

docker-compose命令

命令用途举例
up启动服务docker-compose up -d
stop停止服务docker-compose stop
rm删除服务中的各个容器
logs观察各个容器的日志
ps列出服务相关的容器

8.docker 网络

网络类型:

  1. Bridge桥接模式,docker默认类型,分配独立的network namespace,需要端口映射

  2. Host模式,和宿主机使用一个network namespace ,使用宿主机的ip和端口

  3. None模式,docker不和外界通讯
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值