小白docker入门碎碎念

目录

1、docker与虚拟机的对比

2、Docker的镜像、容器、仓库

3、标签(Tag)、Dockfile、docker-compose.yml

4、docker run命令详解

5、docker相关命令

二、相关问答

1、docker image 与 docker images的不同?

2、docker run 与 docker start的不同?

3、docker stop 与 docker kill的不同?

4、Docker构建镜像有哪两种方式?

三、Docker安装配置

1、docker安装使用指南

2、Docker安装

3、下载

4、安装

5、设置加速服务

6、查看版本:docker version

四、Docker搭建web服务器

1、首先拉取centos镜像

2、安装Nginx源

3、安装Nginx

4、查看Nginx路径,启动Nginx

5、访问Web服务器Nginx

五、Docker搭建自己的镜像

1、创建Dockerfile文件

2、编写Dockerfile文件的代码

3、Dockerfile指令详解

4、docker build命令构建镜像

5、查看新构建的镜像​


一、简介

1、docker与虚拟机的对比

特性 Docker 虚拟机
启动速度 秒级 分钟级
交付/部署 开发、测试、生产环境一致 无成熟体系
性能 近似物理机 性能损耗大
体量 极小(MB) 较大(GB)
迁移/扩展 跨平台,可复制 较为复杂

2、Docker的镜像、容器、仓库

Docker 由镜像(Image)、容器(Container)、仓库(Repository) 三部分组成。
镜像(Image):1.是创建容器的基础 2.镜像是容器的模版 3.容器是镜像的实例 4.docker images查看本地镜像列表
容器(Container):1.包含了应用及其需要的环境 2.是应用的运行时表现形式 3.docker ps -a查看本地运行过的容器
仓库(Repository):1.存放镜像的地方 2.推送(push)与拉取(pull) 
===>官方仓库:https://hub.docker.com
===>阿里云仓库:https://cr.console.aliyun.com

3、标签(Tag)、Dockfile、docker-compose.yml

标签(Tag):1.镜像版本号 2.mysl:latest 或 mysql:8
Dockfile:1.镜像描述文件 2.基于Dockfile生成镜像
docker-compose.yml:1.容器编排,同时管理多个容器 2.同时创建,运行,销毁多个容器

4、docker run命令详解

runoob@runoob:~$ docker run -it nginx:latest /bin/bash  

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]    
02.  
03.  -d, --detach=false         指定容器运行于前台还是后台,默认为false     
04.  -i, --interactive=false   打开STDIN,用于控制台交互    
05.  -t, --tty=false            分配tty设备,该可以支持终端登录,默认为false    
06.  -u, --user=""              指定容器的用户    
07.  -a, --attach=[]            登录容器(必须是以docker run -d启动的容器)  
08.  -w, --workdir=""           指定容器的工作目录   
09.  -c, --cpu-shares=0        设置容器CPU权重,在CPU共享场景使用    
10.  -e, --env=[]               指定环境变量,容器中可以使用该环境变量    
11.  -m, --memory=""            指定容器的内存上限    
12.  -P, --publish-all=false    指定容器暴露的端口    
13.  -p, --publish=[]           指定容器暴露的端口   
14.  -h, --hostname=""          指定容器的主机名    
15.  -v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录    
16.  --volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录  
17.  --cap-add=[]               添加权限,权限清单详见:http://linux.die.net/man/7/capabilities    
18.  --cap-drop=[]              删除权限,权限清单详见:http://linux.die.net/man/7/capabilities    
19.  --cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法    
20.  --cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU    
21.  --device=[]                添加主机设备给容器,相当于设备直通    
22.  --dns=[]                   指定容器的dns服务器    
23.  --dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件    
24.  --entrypoint=""            覆盖image的入口点    
25.  --env-file=[]              指定环境变量文件,文件格式为每行一个环境变量    
26.  --expose=[]                指定容器暴露的端口,即修改镜像的暴露端口    
27.  --link=[]                  指定容器间的关联,使用其他容器的IP、env等信息    
28.  --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用    
29.  --name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字    
30.  --net="bridge"             容器网络设置:  
31.                                bridge 使用docker daemon指定的网桥       
32.                                host    //容器使用主机的网络    
33.                                container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源    
34.                                none 容器使用自己的网络(类似--net=bridge),但是不进行配置   
35.  --privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities    
36.  --restart="no"             指定容器停止后的重启策略:  
37.                                no:容器退出时不重启    
38.                                on-failure:容器故障退出(返回值非零)时重启   
39.                                always:容器退出时总是重启    
40.  --rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)    
41.  --sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理    

5、docker相关命令

镜像操作:

docker images/rmi/tag/history

容器操作:

docker start/stop/kill/pause/unpause

docker wait/logs/attach/inspect/port/top/ps/rm/exec

镜像与容器操作:

docker create/commit/run/cp/diff

docker import/export/load/save/load/save

docker filesystem

仓库操作:

docker pull/push/search/login/logout

引擎操作:

docker version/info/events

docker命令大全,点击command可直接跳转到官方链接。

Command Description 中文解释
docker attach Attach local standard input, output, and error streams to a running container 将本地标准输入,输出和错误流附加到正在运行的容器
docker build Build an image from a Dockerfile 从Dockerfile构建映像
docker builder Manage builds 管理构建
docker checkpoint Manage checkpoints 管理检查点
docker commit Create a new image from a container’s changes 根据容器的更改创建新镜像
docker config Manage Docker configs 管理Docker配置
docker container Manage containers 管理容器
docker cp Copy files/folders between a container and the local filesystem 在容器和本地文件系统之间复制文件/文件夹
docker create Create a new container 创建一个新的容器
docker deploy Deploy a new stack or update an existing stack 部署新堆栈或更新现有堆栈
docker diff Inspect changes to files or directories on a container’s filesystem 检查容器文件系统上文件或目录的更改
docker engine Manage the docker engine 管理Docker引擎
docker events Get real time events from the server 从服务器获取实时事件
docker exec Run a command in a running container 在正在运行的容器中运行命令
docker export Export a container’s filesystem as a tar archive 将容器的文件系统导出为tar存档
docker history Show the history of an image 显示镜像的历史记录
docker image Manage images 管理镜像
docker images List images 列出镜像
docker import Import the contents from a tarball to create a filesystem image 从tarball导入内容以创建文件系统映像
docker info Display system-wide information 显示系统范围的信息
docker inspect Return low-level information on Docker objects 返回有关Docker对象的底层信息
docker kill Kill one or more running containers 杀死一个或多个正在运行的容器
docker load Load an image from a tar archive or STDIN 从tar存档或STDIN加载镜像
docker login Log in to a Docker registry 登录Docker注册表
docker logout Log out from a Docker registry 从Docker注册表注销
docker logs Fetch the logs of a container 提取容器的日志
docker manifest Manage Docker image manifests and manifest lists 管理Docker映像清单和清单清单=
docker network Manage networks 管理网络
docker node Manage Swarm nodes 管理Swarm节点
docker pause Pause all processes within one or more containers 暂停一个或多个容器中的所有进程
docker plugin Manage plugins 管理插件
docker port List port mappings or a specific mapping for the container 列出端口映射或容器的特定映射
docker ps List containers 列出容器
docker pull Pull an image or a repository from a registry 从注册表中提取镜像或存储库
docker push Push an image or a repository to a registry 将映像或存储库推送到注册表
docker rename Rename a container 重命名容器
docker restart Restart one or more containers 重新启动一个或多个容器
docker rm Remove one or more containers 删除一个或多个容器
docker rmi Remove one or more images 删除一个或多个镜像
docker run Run a command in a new container 在新容器中运行命令
docker save Save one or more images to a tar archive (streamed to STDOUT by default) 将一个或多个镜像保存到tar存档(默认情况下流式传输到STDOUT)
docker search Search the Docker Hub for images 在Docker Hub中搜索镜像
docker secret Manage Docker secrets 管理Docker密钥
docker service Manage services 管理服务
docker stack Manage Docker stacks 管理Docker堆栈
docker start Start one or more stopped containers 启动一个或多个已停止的容器
docker stats Display a live stream of container(s) resource usage statistics 显示实时的容器资源使用情况统计流
docker stop Stop one or more running containers 停止一个或多个运行中的容器
docker swarm Manage Swarm 管理群
docker system Manage Docker 管理Docker
docker tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE 创建引用了SOURCE_IMAGE的标签TARGET_IMAGE
docker top Display the running processes of a container 显示容器的运行过程
docker trust Manage trust on Docker images 管理对Docker映像的信任
docker unpause Unpause all processes within one or more containers 取消暂停一个或多个容器中的所有进程
docker update Update configuration of one or more containers 更新一个或多个容器的配置
docker version Show the Docker version information 显示Docker版本信息
docker volume Manage volumes 管理卷
docker wait Block until one or more containers stop, then print their exit codes 阻塞直到一个或多个容器停止,然后打印其退出代码

二、相关问答

1、docker image 与 docker images的不同?

docker image(管理镜像) 与 docker images(列出镜像)

2、docker run 与 docker start的不同?

docker run = docker create + docker start
docker run 每次使用都会创建一个新的容器
docker start 重新启动已存在的镜像

image.png image.png

上左图:第一次启动docker run,Docker首先在本机中寻找该镜像,如果没有安装,Docker 在 Docker Hub 上查找该镜像并下载安装到本机,最后 Docker 创建一个新的容器并启动该程序(本机查找---Docker Hub查找---下载安装到本机---创建容器---启动程序)。上右图:当第二次执行  docker run 时,因为 Docker 在本机中已经安装该镜像,所以 Docker 会直接创建一个新的容器并启动该程序。注意的是,docker run 每次使用都会创建一个新的容器,因此,我们以后再次启动这个容器时,只需要使用命令 docker start  即可。Docker 容器重启后会沿用 docker run 命令指定的参数来运行,但是,此时它还是后台运行的。我们必须通过 docker attach 命令切换到运行交互式容器

3、docker stop 与 docker kill的不同?

docker stop 发送 SIGTERM 信号,而 docker kill 发送SIGKILL 信号。

4、Docker构建镜像有哪两种方式?

一种方式是使用docker commit命令,另外一种方式使用docker build命令和Dockerfile文件。
不推荐使用docker commit命令进行构建,因为它没有使得整个流程标准化。建议使用Dockerfile文件可以让构建镜像更具备可重复性,同时保证启动脚本和运行程序的标准化。

三、Docker安装配置

1、docker安装使用指南

官方指南:https://docs.docker.com/install/
阿里云指南:https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.468b1991jdT95t

2、Docker安装

先在https://hub.docker.com/注册账号。

3、下载

官方下载地址(Mac):https://download.docker.com/mac/stable/Docker.dmg
阿里云下载地址(Mac):http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/?spm=5176.8351553.0.0.468b1991jdT95t
阿里云下载地址(Windows): http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

4、安装

双击刚刚下载的 Doker.dmg 安装包进行安装。安装完成后启动, Mac 顶部导航栏出现了一个图标,通过菜单可以进行 docker 配置和退出等操作。

image.png

image.png

5、设置加速服务

image.png
右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中将https://xxx.mirror.aliyuncs.com 加到"registry-mirrors"的数组里,点击 Apply & Restart 按钮,等待 Docker 重启并应用配置的镜像加速器。
详见:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

6、查看版本:docker version

四、Docker搭建web服务器

1、首先拉取centos镜像

docker run -p 80 --name web -i -t centos /bin/bash

--name web

告诉Docker创建一个名称是web的容器,如果不指定,Docker会为我们创建的每一个容器自动生成一个随机的名称

-p 80

告诉Docker开放80端口

-i

告诉Docker容器保持标准输入流对容器开放,即使容器没有终端连接

-t

告诉Docker为容器分配一个虚拟终端,以便于我们接下来安装 Nginx 服务器

-d

告诉Docker在后台运行容器的守护进程

其中,docker run详见 三(2) 的解析

2、安装Nginx源

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

3、安装Nginx

yum install -y nginx

4、查看Nginx路径,启动Nginx

whereis nginx:可以看到安装的路径了,将Nginx跑起来:nginx

5、访问Web服务器Nginx

执行ctrl+P+Q切换到后台,然后通过docker ps -a来查看随机分配的端口。如下分配的端口是32769 ,那么通过浏览器访问http://127.0.0.1:32769即可。

image.png

五、Docker搭建自己的镜像

1、创建Dockerfile文件

mkdir dockerfile_test
cd dockerfile_test/
touch Dockerfile
nano Dockerfile

其中,nano实际就是进去编辑,跟vi差不多。

2、编写Dockerfile文件的代码

FROM centos:7
MAINTAINER LiangGzone "[email protected]"
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
EXPOSE 80

3、Dockerfile指令详解

FROM centos:7 Docker 需要依赖于一个基础镜像进行构建。这里,我们指定 centos 作为基础镜像,它的版本是 7 (CentOS 7)。
MAINTAINER LiangGzone "[email protected]" 指定该镜像的作者是 LiangGzone,邮箱是 [email protected]。这有助于告诉使用者它的作者和联系方式。
EXPOSE 80 暴露 Dokcer 容器的 80 端口

image.png

4、docker build命令构建镜像

docker build -t="lianggzone/nginx_demo:v1" .

- t 告诉 Docker 镜像的名称和版本。

没有指定任何标签,Docker 将会自动为镜像设置一个 lastest 标签。

最后还有一个 . 是为了让 Docker 到当前本地目录去寻找 Dockerfile 文件。

Docker 会在每一步构建都会将结果提交为镜像,然后将之前的镜像层看作缓存,因此我们重新构建类似的镜像层时会直接复用之前的镜像。如果我们需要跳过,可以使用 --no-cache 选项告诉 Docker 不进行缓存。

5、查看新构建的镜像image.png

猜你喜欢

转载自blog.csdn.net/wuhuagu_wuhuaguo/article/details/105867934