docker学习使用文档

docker学习参考文档

学习途径

Docker官网:
Docker中文网站:
Docker Hub官网: (仓库)
借鉴狂神老师b站视频以及笔记
在此,十分感谢狂神老师开源精神

安装

介绍

在这里插入图片描述

镜像image:

 docker镜像就好比是模板,可以通过这个模板创建容器服务,tomcat镜像=>run运行=>tomcat01容器(提供服务器)
 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)

容器container:

docker利用容器技术,独立运行一个或者一个组应用,通过·镜像来创建
启动,停止,删除,基本命令    
目前就可以理解为建议linux系统,项目

仓库repository:

存放镜像地方  
公有仓库  dockerhub   阿里云都有容器服务器(配置镜像加速)
私有仓库

总结
需要正确的理解仓储/镜像/容器这几个概念 :

  • Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个 可交付的运行环境,这个打包好的运行环境就似乎
    image镜像文件。只有通过这个镜像文件才能生 成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据
    image 文件生成容器的实例。 同一个 image 文件,可以生成多个同时运行的容器实例。
  • image 文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例, 也就是我们的容器
  • 至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来 就可以了。

环境准备

环境准备:

1.linux基础

2.centos 7

3.xhell连接远程服务器操作

环境查看

[root@iz8vb15btme7reio6zs71ez /]# uname -r
3.10.0-514.26.2.el7.x86_64

[root@iz8vb15btme7reio6zs71ez /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

开始安装:

帮助文档:

在这里插入图片描述

linux安装版本

1.卸载旧版本 (如果有)

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

出现如下提示代表卸载成功

Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal

2.需要的安装包 环境
ps:如果出现问题就运行提示中给出的运行代码

# yum install -y yum-utils device-mapper-persistent-data lvm2 git

3.设置镜像仓库


# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

4.更新yum包索引

yum makecache fast

5.安装docker引擎 ce社区版推荐 ee企业版

yum install docker-ce docker-ce-cli containerd.io

6.启动docker

systemctl start docker

7.打印 docker version出现信息说明安装成功

[root@iz8vb15btme7reio6zs71ez /]# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:58:10 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:56:35 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

8.通过运行hello-world 映像验证 Docker Engine 是否已正确安装。

docker run hello-world

第一次没有寻找到镜像会自动下载

出现hello from Docker!说明安装成功了

[root@iz8vb15btme7reio6zs71ez /]# docker run hello-world
⭐Unable to find image 'hello-world:latest' locally
⭐拉取 latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest

⭐⭐Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

9.查看下载的hello-word镜像

docker images
[root@iz8vb15btme7reio6zs71ez /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    4cdc5dd7eaad   3 weeks ago    133MB
hello-world   latest    d1165f221234   4 months ago   13.3kB

了解 卸载docker

卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
删除资源
rm -rf /var/lib/docker

docker默认工作路径
/var/lib/docker

阿里云镜像加速

目的:提高效率

1.登录阿里云,找到容器服务

2.找到镜像加速地址(左边栏最下面 镜像加速器)

操作文档会告诉怎么做 centos
在这里插入图片描述
3.配置使用 找到类似下表文件 配置

sudo mkdir -p /etc/docker
//新建目录docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
   
  "registry-mirrors": ["https://0p279n1x.mirror.aliyuncs.com"]
}
EOF
//配置阿里云地址
sudo systemctl daemon-reload
//镜像重启
sudo systemctl restart docker
//docker重启

在这里插入图片描述

底层原理

docker怎么工作

docker是一个Client-serve结构的系统,docker的守护进程运行在主机上。通过socker从客户端访问。

dockerServe接收到docker-client指令,就会执行这个命令

在这里插入图片描述

docker为什么比虚拟机快

1.docker有着比虚拟机更少的抽象层
2.docker利用的是宿主机内核·,vm需要guest os

在这里插入图片描述

所以,新建容器时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导操作。虚拟机是加载guest os,分钟级别的。而docker是利用宿主机操作系统,省略了复杂过程,秒级别。
在这里插入图片描述

docker常用命令

帮助命令

docker -version  #显示版本信息
docker info   # 显示系统信息  包括镜像和容器数量
docker --help  #帮助命令

帮助文档

镜像命令

docker images 查看所有主机镜像

[root@iz8vb15btme7reio6zs71ez /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    4cdc5dd7eaad   3 weeks ago    133MB
hello-world   latest    d1165f221234   4 months ago   13.3kB

查看镜像可选

	-a    --all      //列出所有镜像
	-q     --quite    //只显示镜像id

docker search搜索镜像

docker search mysql
[root@iz8vb15btme7reio6zs71ez /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11188     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4251  

可选项,通过收藏过滤

--filter=STARS=3000   //搜索出来STARS大于3000得
[root@iz8vb15btme7reio6zs71ez /]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11188     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4251      [OK]       
[root@iz8vb15btme7reio6zs71ez /]# 

docker pull 镜像名[:tag版本] 下载镜像

没有tag指定版本默认最新

[root@iz8vb15btme7reio6zs71ez /]# docker pull mysql
Using default tag: latest    //如果不写tag默认就是latest
latest: Pulling from library/mysql
33847f680f63: Pull complete    //分层下载 dock image核心  联合文件系统
5cb67864e624: Pull complete 
1a2b594783f5: Pull complete 
b30e406dd925: Pull complete 
48901e306e4c: Pull complete 
603d2b7147fd: Pull complete 
802aa684c1c4: Pull complete 
715d3c143a06: Pull complete 
6978e1b7a511: Pull complete 
f0d78b0ac1be: Pull complete 
35a94d251ed1: Pull complete 
36f75719b1a9: Pull complete 
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd   //签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest     //真实地址

docker pull mysql 5.7 (前提官方文档有支持这版本)

docker rmi 删除镜像

[root@iz8vb15btme7reio6zs71ez /]# docker rmi -f d1165f221234
Untagged: hello-world:latest
Untagged: hello-world@sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726

在这里插入图片描述

容器命令

⭐⭐⭐有镜像才可以创建容器

docker pull centos 下载centos测试学习

[root@iz8vb15btme7reio6zs71ez /]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

新建容器并启动

docker run [可选参数] 镜像

#参数说明
--name='Name'    容器名字   tomcat01    tomcat02,用来区分容器
-d               后台方式运行
-it               使用交互方式运行,进入容器查看内容
-p                指定容器的端口  -p 8080:8080
	-p  ip:主机端口:容器端口
	-p  主机端口:容器端口(常用)
	-p  容器端口
	容器端口
-p                随机指定端口

# 测试,启动并进入容器
[root@iz8vb15btme7reio6zs71ez /]# docker run  -it centos /bin/bash     //⭐⭐⭐
[root@26fc6c67f452 /]# ls    //查看容器内centos
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

# 从容器口退出
exit
[root@26fc6c67f452 /]# exit
exit
[root@iz8vb15btme7reio6zs71ez /]#

列出所有运行的容器

# docker ps 命令
   #列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=#显示最近创建的容器
-q   #只显示容器得编号


[root@iz8vb15btme7reio6zs71ez /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iz8vb15btme7reio6zs71ez /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                       PORTS     NAMES
26fc6c67f452   centos         "/bin/bash"   11 minutes ago   Exited (130) 7 minutes ago             sharp_wiles
d81717efa43f   d1165f221234   "/hello"      2 hours ago      Exited (0) 2 hours ago                 sleepy_archimedes
371e8c74bcf6   d1165f221234   "/hello"      3 hours ago      Exited (0) 3 hours ago                 mystifying_shirley
[root@iz8vb15btme7reio6zs71ez /]# 

退出容器

exit  #直接从容器停止并退出
ctrl+p+q  #可以不停止退出 //⭐⭐⭐⭐⭐⭐⭐⭐
[root@iz8vb15btme7reio6zs71ez /]# docker run  -it centos /bin/bash
[root@dba569e5b212 /]# [root@iz8vb15btme7reio6zs71ez /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
dba569e5b212   centos    "/bin/bash"   22 seconds ago   Up 21 seconds             laughing_mirzakhani
[root@iz8vb15btme7reio6zs71ez /]# 

删除容器

docker rm 容器id        #删除指定容器  除正在运行容器
docker rm -f $(docker ps -aq)   #强制删除所有容器
docker ps -a -qixargs docker rm #删除所有容器

启动和停止容器

docker start 容器id     #启动容器
docker restart 容器id  #重启容器
docker stop 容器id     #停止当前正在运行的容器
docker kill 容器id        #强制停止当前容器

常用其他命令

后台启动容器

# 命令 
docker run -d 容器名 
# 例子 
docker run -d centos # 启动centos,使用后台方式启动 
# 问题: 使用docker ps 查看,发现容器已经退出了! 经测试有的不会停止,比如我的。。。。
# 解释:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令,就会自动退出。 
# 比如,你运行了nginx服务,但是docker前台没有运行应用,这种情况下࿰
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一种容器技术,它允许开发人员将应用程序和相关依赖项打包到一个可移植的容器中,并在多个环境中运行这些容器。在 Docker 中,Dockerfile 是用于构建 Docker 镜像的指令文件。本文将介绍如何编写 Dockerfile,并构建一个基本的 Docker 镜像。 ## Dockerfile 基本结构 Dockerfile 是一个文本文件,包含一系列指令,用于描述如何构建 Docker 镜像。它的基本结构如下: ``` # Comment INSTRUCTION arguments ``` 其中,`#` 表示注释,`INSTRUCTION` 是指令名称,`arguments` 是指令的参数。 ## Dockerfile 指令 Dockerfile 中常用的指令如下: ### FROM `FROM` 指令指定要使用的基础镜像。例如: ``` FROM ubuntu:18.04 ``` ### RUN `RUN` 指令在容器中运行命令。例如: ``` RUN apt-get update && apt-get install -y nginx ``` ### COPY `COPY` 指令将本地文件或目录复制到容器中。例如: ``` COPY index.html /usr/share/nginx/html/ ``` ### WORKDIR `WORKDIR` 指令设置容器内部的工作目录。例如: ``` WORKDIR /usr/share/nginx/html/ ``` ### EXPOSE `EXPOSE` 指令指定容器运行时监听的端口。例如: ``` EXPOSE 80 ``` ### CMD `CMD` 指令指定容器启动时要运行的命令。例如: ``` CMD ["nginx", "-g", "daemon off;"] ``` ## Dockerfile 示例 下面是一个简单的 Dockerfile 示例,用于构建一个运行 Nginx 的 Docker 镜像。 ``` FROM ubuntu:18.04 RUN apt-get update && apt-get install -y nginx COPY index.html /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 在当前目录下创建一个名为 `Dockerfile` 的文件,并将上述内容复制到文件中。然后,在命令行中进入到该目录,并运行以下命令: ``` docker build -t my-nginx . ``` 该命令将使用 `Dockerfile` 中的指令构建一个名为 `my-nginx` 的 Docker 镜像。`.` 表示 Dockerfile 所在的当前目录。 构建完成后,可以使用以下命令运行该镜像: ``` docker run -p 8080:80 my-nginx ``` 该命令将启动一个名为 `my-nginx` 的容器,并将容器内部的 80 端口映射到本地的 8080 端口。打开浏览器,访问 `http://localhost:8080` 即可看到 Nginx 的欢迎页面。 ## 总结 本文介绍了 Dockerfile 的基本结构和常用指令,并给出了一个简单的 Dockerfile 示例。Dockerfile 是构建 Docker 镜像的核心文件,掌握 Dockerfile 的编写技巧可以帮助开发人员快速构建自己的 Docker 镜像。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值