Docker入门教程

目录

 

一、Docker介绍

为什么需要沙箱机制?

什么是沙箱机制?

二、Docker的优点

三、安装Docker

四、Docker的组成

问题:是否不理解容器与镜像?

五、启动Docker

六、安装Nginx 

1、查看可用的 Nginx 版本

2、取最新版的 Nginx 镜像

3、查看本地镜像

4、删除镜像:

5、运行容器

6、删除容器

7、进入容器

8、停止容器

七、Docker命令大全


一、Docker介绍

 

Docker 是一个开源的应用容器引擎,基于 Go 语言 。Docker 可以打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker的容器是完全使用沙箱机制。

为什么需要沙箱机制?什么是沙箱机制?

为什么需要沙箱机制?

默认情况下,一个应用程序是可以访问机器上的所有资源的,比如CPU、内存、文件系统、网络等等。
但是这是不安全的,如果随意操作资源,有可能破坏其他应用程序正在使用的资源,或者造成数据泄漏。为了解决这个问题,一般有下面两种解决方案:
(1) 为程序分配一个限定权限的账号:利用操作系统的权限管理机制进行限制
(2) 为程序提供一个受限的运行环境:这就是沙箱机制

什么是沙箱机制?

如上所述,沙箱就是一个限制应用程序对系统资源的访问的运行环境。常见的沙箱机制:java的虚拟机JVM、Javascript的虚拟机V8引擎。

二、Docker的优点

Docker 最主要的优点就是可以解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。能够将现有的应用程序部署在其它机器上。

同样虚拟机也可以实现,Docker相较于虚拟机的优点:

  1. Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。
  2. 启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程非常慢;而启动 Docker 相当于启动宿主操作系统上的一个进程。
  3. 虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU 资源,一台机器只能开启几十个的虚拟机。而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker
  4. 部署方便。

三、安装Docker

官网地址:https://www.docker.com

附赠window安装教程:https://www.runoob.com/docker/windows-docker-install.html

MacOS安装教程:https://www.runoob.com/docker/macos-docker-install.html

CentOS安装教程:https://www.runoob.com/docker/centos-docker-install.html

对于win10家庭版的,需要安装 Hyper-V(微软开发的虚拟机)

成功安装Hyper-V之后,启动任务管理器,查看性能就可以看到:虚拟化

这时候就可以启动Docker了

四、Docker的组成

一个完整的Docker有以下几个部分组成:

1.DockerClient客户端

2.Docker Daemon守护进程

3.Docker Image镜像

镜像是容器的基石,容器基于镜像启动,镜像就像是容器的源代码,保存了用于容器启动的各种条件。

4.DockerContainer容器

通过镜像启动:容器是docker的执行单元。启动和执行:镜像如果是构建和打包阶段,则容器是启动和执行阶段。容器启动过程:启动时在镜像的最顶层加一个可写的文件系统,即可写层。Docker中运行的程序就是在这个层中执行的。docker第一次启动一个容器时,可写层是空的,当文件系统发生变化,都会应用到这一层。如果想修改一个文件,该文件首先会从可读写层下边的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏。这个是docker的重要机制,写时复制。

5.Docker Registry 仓库

存放用户构建的镜像

问题:是否不理解容器与镜像?

百度之后大概对镜像与容器有一定的基础概念理解:

https://www.jb51.net/article/95259.htm

http://dockone.io/article/9249

http://www.dockerone.com/article/783

五、启动Docker

在启动Docker之前,我们可以先设置Docker 镜像加速

在Registrymirror中填入加速地址,通过命令 Docker info查看镜像地址:

国内有很多镜像加速地址:

  • 科大镜像:https://docker.mirrors.ustc.edu.cn/
  • 网易:https://hub-mirror.c.163.com/
  • 阿里云:https://<你的ID>.mirror.aliyuncs.com
  • 七牛云加速器:https://reg-mirror.qiniu.com

Docker的镜像仓库地址:https://hub.docker.com/

镜像命令:

Commands:
build       Build an image from a Dockerfile(构建镜像的命令)
history     Show the history of an image(显示镜像构建历史过程)
import      Import the contents from a tarball to create a filesystem image(导入一个由容器导出的镜像)
inspect     Display detailed information on one or more images(显示一个镜像的详细信息)
load        Load an image from a tar archive or STDIN(从一个文件或标准输入流中导入镜像)
ls          List images(查看镜像列表)
prune       Remove unused images(删除虚悬镜像)
pull        Pull an image or a repository from a registry(从仓库拉取镜像)
push        Push an image or a repository to a registry(推送镜像到仓库)
rm          Remove one or more images(删除镜像)
save        Save one or more images to a tar archive(streamed to STDOUT by default)(保存镜像到文件)
tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE(给镜像打标签)




容器命令:

Commands:
attach      Attach local standard input, output, and error streams to a running container
commit      Create a new image from a container's changes(把容器保存为镜像)
cp          Copy files/folders between a container and the local filesystem
create      Create a new container(创建一个新的容器)
diff        Inspect changes to files or directories on a container's filesystem
exec        Run a command in a running container(在一个运行的容器中执行命令)
export      Export a container's filesystem as a tar archive
inspect     Display detailed information on one or more containers
kill        Kill one or more running containers(杀死一个或多个正在运行的容器)
logs        Fetch the logs of a container
ls          List containers(显示本地容器列表)
pause       Pause all processes within one or more containers
port        List port mappings or a specific mapping for the container
prune       Remove all stopped containers
rename      Rename a container(重命名容器)
restart     Restart one or more containers(重启一个或多个容器)
rm          Remove one or more containers(删除一个或多个容器)
run         Run a command in a new container(运行一个新的容器)
start       Start one or more stopped containers
stats       Display a live stream of container(s) resource usage statistics
stop        Stop one or more running containers(停止一个或多个容器)
top         Display the running processes of a container
unpause     Unpause all processes within one or more containers
update      Update configuration of one or more containers
wait        Block until one or more containers stop, then print their exit codes

获取镜像:

docker pull ubuntu

启动容器:

docker run -it ubuntu /bin/bash。

该条命令参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

docker run命令有一些比较常用的参数,比如容器是一种提供服务的守护进程,那么通常需要开放端口供外部访问,如:

$ docker run -p 80:80 nginx

也可以为容器指定一个名称,如:

$ docker run -p 80:80 --name webserver nginx
另外一种则是使用docker start命令重新启动已经停止运行的容器,如:
# container_id表示容器的id
$ docker start container_id

六、安装Nginx 

1、查看可用的 Nginx 版本

访问 Nginx 镜像库地址: https://hub.docker.com/_/nginx?tab=tags

或者使用命令查看可用版本:docker search nginx 

2、取最新版的 Nginx 镜像

docker pull nginx:latest

3、查看本地镜像

docker images  或者 docker  image ls

4、删除镜像:

docker rmi image_id

对于已经创建了容器的镜像,删除镜像时会报错:Error response from daemon: conflict: unable to remove repository reference xxx。此时删除方法有两种:

一种是先把容器删除,再删除镜像,另一种则只需要在删除镜像的命令中跟一个-f参数便可,如:

$ docker rim -f image_id

5、运行容器

docker run --name nginx-test -p 8080:80 -d nginx
  • --name nginx-test:容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行

这时,nginx就启动成功了,点击地址查看:http://localhost:8080/  nginx是否运行成功

6、删除容器

docker rm container_id

7、进入容器

$ docker exec -it container_id /bin/bash

进入容器之后,命令就跟linux命令差不多,可以进行修改配置文件等 

输入命令 exit 可以退出容器,退出并没有停止容器运行

8、停止容器

docker stop container_id

 

七、Docker命令大全

欲练docker大法,必先学习此功,赠一本docker秘籍。点此获取秘籍地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值