Linux部署docker(最详细docker,一看就会)

这篇具有很好参考价值的文章主要介绍了Linux部署docker(最详细docker,一看就会)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker概述:

Docker为什么会出现?

一款产品:开发...测试..上线,三套环境!

例如:发布一个项目(jar+redis mysql jdk等),项目能不能带上环境安装一起打包

传统:java -- apk(应用)-- 发布(应用商店)--张三使用apk -- 下载安装即可使用

现在:java -- jar(环境)-- 打包项目带上环境(镜像)-- (docker仓库:商店) --下载我们发布的镜像 -- 直接运行即可!

Docker的核心思想:隔离

Docker的历史:

2010年,几个搞it的年轻人,就在美国成立了一家公司叫dotCloud

做一些pass的云计算服务,LXC有关的容器服务!

他们将自己的技术(容器化技术)命名为docker!

Docker刚刚诞生的时候,没有引起行业的注意!dotCloud,就活不下去了!

想到了“开源”

开放源代码!

2013年,docker开源!

Docker越来越多的人发现了docker的优点!火了,docker每个月都会有新的版本诞生!

2014年4月9日,docker1.0发布!

Docker至今短短10年为什么这么火?

十分轻巧

在容器技术出来之前,我们都是使用虚拟机(非常占内存及本地资源),vm、kvm等!

linux docker,docker,容器,java

Docker如何安装:

Docker的基本组成:

镜像(image):就好比是个一个模板,可以通过这个模板来启动容器创建容器服务,tomcat镜像 --- run --- tomcat服务,可以经过这个镜像可以启动无数个(最终服务运行或项目运行就是在这个容器中的)

容器(container):docker利用容器技术,独立运行一个或一组应用,通过镜像来创建的;容器的基本命令,启动、停止、删除!目前就可以把这个容器理解为就是一个简易的Linux系统。

仓库(repository):仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库。公有仓库有docker Hub(默认是国外的)、阿里云、腾讯云...都有容器服务器(我们需要配置镜像加速)

安装docker:

环境准备:系统centos7

帮助文档:

  1. 卸载旧的 版本

yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

  1. 安装依赖关系:

yum install -y yum-utils

  1. 设置镜像仓库:

yum-config-manager \

    --add-repo \

https://download.docker.com/linux/centos/docker-ce.repo(国外的,很慢)

yum-config-manager \

    --add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(推荐使用阿里云的)

  1. 更新yum软件包索引

yum makecache fast

  1. 安装docker

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

注:docker-ce 社区、docker-ee 企业版

  1. 启动docker

systemctl start docker

  1. 使用docker version查看是否启动成功

linux docker,docker,容器,java

8、测试hello-world

docker run hello-world

linux docker,docker,容器,java

9查看一下hello-world镜像在不在?

docker images

10如何卸载docker

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

rm -rf /var/lib/docker #docker默认的工作路径

rm -rf /var/lib/containerd

阿里云加速:

1、登录阿里云平台找到“产品与服务”里的“容器镜像服务”

 linux docker,docker,容器,java

2. 点击“镜像工具”-“镜像加速器”linux docker,docker,容器,java

回顾hello-world创建流程

linux docker,docker,容器,java

linux docker,docker,容器,java

docker底层原理:

Docker是怎么工作的?

Docker是一个client-server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问!

Docker-server接受到docker-client的指令就会执行这个命令!

linux docker,docker,容器,java

Docker为什么比vm虚拟机快?

Docker利用的是宿主机的内核,vm需要Guest OS

linux docker,docker,容器,java

所以说新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免一些引导性的操作。

Docker常用命令:

帮助命令:

Docker version #显示docker的版本信息

Docker info #显示docker的系统信息,docker的镜像和容器信息

Docker 命令 --help #万能命令

 linux docker,docker,容器,java

镜像命令:

Docker images 查看所有本地的主机上的镜像

[root@localhost containerd]# docker images

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE

hello-world   latest    d1165f221234   3 months ago   13.3kB

#解释:

REPOSITORY  #镜像的仓库源

TAG  #镜像的标签

IMAGE ID  #镜像的ID

CREATED  #镜像的创建时间

SIZE  #镜像的大小

#可选项

[root@localhost containerd]# docker images --help

Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]

List images

Options:

  -a, --all       #显示所有镜像

  -q, --quiet     #只显示镜像的ID

Docker search 镜像名称  #搜索镜像

[root@localhost containerd]# docker search mysql

NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

mysql                             MySQL is a widely used, open-source relation…   11082     [OK]       

mariadb                           MariaDB Server is a high performing open sou…   4199      [OK]       

#可选项,通过搜索来过滤

--filter=STARS=4000 #就是搜索出来的镜像STARS大于4000的。

Docker pull 镜像名称[:tag]  #下载镜像

最新版本下载:

[root@localhost containerd]# docker pull mysql

Using default tag: latest  #不跟版本,下载默认最新的版本

latest: Pulling from library/mysql

b4d181a07f80: Pull complete  #分层下载,image的核心,联合文件系统

a462b60610f5: Pull complete

578fafb77ab8: Pull complete

524046006037: Pull complete

d0cbe54c8855: Pull complete

aa18e05cc46d: Pull complete

32ca814c833f: Pull complete

9ecc8abdb7f5: Pull complete

ad042b682e0f: Pull complete

71d327c6bb78: Pull complete

165d1d10a3fa: Pull complete

2f40c47d0626: Pull complete

Digest: sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b #签名信息,防伪标识

Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest  #真实地址

指定版本下载:

[root@localhost containerd]# docker pull mysql:5.7

5.7: Pulling from library/mysql

b4d181a07f80: Already exists

a462b60610f5: Already exists

578fafb77ab8: Already exists

524046006037: Already exists

d0cbe54c8855: Already exists

aa18e05cc46d: Already exists

32ca814c833f: Already exists

52645b4af634: Pull complete

bca6a5b14385: Pull complete

309f36297c75: Pull complete

7d75cacde0f8: Pull complete

Digest: sha256:1a2f9cd257e75cc80e9118b303d1648366bc2049101449bf2c8d82b022ea86b7

Status: Downloaded newer image for mysql:5.7

docker.io/library/mysql:5.7

Docker rmi 删除镜像

docker rmi -f 09361feeb475  #根据镜像ID,删除单个镜像

docker rmi -f $(docker images -aq)  #删除全部镜像

容器命令:

说明:我们有了镜像才可以创建容器,下载一个centos镜像来测试学习!

docker pull centos

创建容器并启动

docker run [可选参数] image

参数说明:

--name=“name” #容器的名字 tomcat01 tomcat02 用来区分容器

-d #后台方式运行

-it #使用交互方式运行,进入容器查看内容

/bin/bash #给一个控制台

-p #指定容器的端口 -p8080:8080

-p ip:主机端口:容器端口

    -p主机端口:容器端口 (常用)

    -p容器端口

-P  #随机映射一个 49000~49900 的端口到内部容器开放的网络端口

-v 宿主机目录和容器内目录映射

测试 启动并进入容器:

[root@localhost containerd]# docker run -it centos /bin/bash

[root@c2e9f2af5df6 /]# ls  #查看容器内的centos ,基础版本,很多命令是不完善的

bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

[root@c2e9f2af5df6 /]# exit   #退出命令

exit

[root@localhost /]# ls

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

列出容器:

dokcer ps #查看正在运行中的容器列表

-a #查看所有容器

-n=? #显示最近创建的容器

-q #只显示容器的ID

[root@localhost /]# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@localhost /]# docker ps -a

CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES

c2e9f2af5df6   centos         "/bin/bash"   7 minutes ago   Exited (0) 4 minutes ago             infallible_wu

04e4b20d023d   d1165f221234   "/hello"      2 hours ago     Exited (0) 2 hours ago               flamboyant_hellman

退出容器

Exit #退出后容器停止

Ctrl+p+q #退出容器不停止

删除容器

docker rm 容器id  #删除指定容器,不能删除正在运行中的容器

docker rm -f $(docker ps -aq)  #删除所有的容器

docker ps -a -q | xargs docker rm  #删除所有的容器

启动和停止容器的操作

docker start 容器id  #启动容器

docker stop容器id   #停止当前运行容器

docker restart 容器id  #重启容器

docker kill 容器id   #强制停止当前容器

常用其他命令:

查看日志:

docker logs -f -t --tail 10 容器

-tf  #显示日志

--tail number  #要显示日志条数

[root@MiWiFi-R4A-srv ~]# docker ps

CONTAINER ID   IMAGE     COMMAND       CREATED        STATUS         PORTS     NAMES

c2e9f2af5df6   centos    "/bin/bash"   10 hours ago   Up 6 seconds             infallible_wu

[root@MiWiFi-R4A-srv ~]# docker logs -f -t --tail 10 c2e9f2af5df6

2021-07-03T16:58:57.371780294Z [root@c2e9f2af5df6 /]# ls

2021-07-03T16:58:57.378009686Z bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

2021-07-03T16:58:57.378060051Z dev  home  lib64  media       opt  root  sbin  sys  usr

2021-07-03T17:00:45.937116561Z [root@c2e9f2af5df6 /]# exit  

2021-07-03T17:00:45.937156697Z exit

查看容器进程信息

[root@MiWiFi-R4A-srv ~]# docker top c2e9f2af5df6

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                9559                9538                0                   11:00               pts/0               00:00:00            /bin/bash

[root@MiWiFi-R4A-srv ~]# docker inspect --help

Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:

  -f, --format string   Format the output using the given Go template

  -s, --size            Display total file sizes if the type is container

      --type string     Return JSON for specified type

[root@MiWiFi-R4A-srv ~]# docker inspect c2e9f2af5df6

进入当前正在运行的容器

#我们通常容器都是使用后台方式运行,退出容器后需要再次进入容器修改一些配置

#命令

方式一:docker exec -it 容器id bashshell  #进入容器后开启一个新的终端,可以在里面操作(常用)

[root@MiWiFi-R4A-srv ~]# docker ps

CONTAINER ID   IMAGE     COMMAND       CREATED        STATUS          PORTS     NAMES

c2e9f2af5df6   centos    "/bin/bash"   10 hours ago   Up 14 minutes             infallible_wu

[root@MiWiFi-R4A-srv ~]# docker exec -it c2e9f2af5df6 /bin/bash

[root@c2e9f2af5df6 /]# ls

bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

方式二:

docker attach 容器id  #进入容器正在执行的终端,不会启动新的进程

[root@MiWiFi-R4A-srv ~]# docker attach c2e9f2af5df6

[root@c2e9f2af5df6 /]# ls

bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

[root@c2e9f2af5df6 /]#

从容器内拷贝文件到主机上

docker cp c2e9f2af5df6:容器文件路径 本地路径

#进入docker容器内部

[root@MiWiFi-R4A-srv ~]# docker attach c2e9f2af5df6

[root@c2e9f2af5df6 /]# ls

bin  etc   lib   lost+found  mnt  proc  run   srv  tianda.txt  usr

dev  home  lib64  media       opt  root  sbin  sys  tmp var

[root@c2e9f2af5df6 /]# pwd

/

#cp容器内部文件到本地

[root@MiWiFi-R4A-srv ~]# docker cp c2e9f2af5df6:/tianda.txt ./

[root@MiWiFi-R4A-srv ~]# ls

??               initial-setup-ks.cfg  tianda.txt  模板  图片  下载  桌面

anaconda-ks.cfg  localho

注:cp是一个手动过程,后边我们使用-v选项,以卷的技术实现自动

从主机复制到容器:

docker cp host_path containerID:container_path

#docker cp 本地文件 容器id:容器路径

小结:linux docker,docker,容器,java

linux docker,docker,容器,java

1. 如何搜索镜像和获取镜像?

    dockersearch 关键字和 docker pull 镜像名

2、创建一个保持运行的容器命令?

    docker run -t -i centos /bin/bash

3、容器的启动、停止及重启命令?

    docker start 、restart 、stop 容器id

4、怎么查看正在运行的容器和所有容器?

    docker ps && docker ps -a

5、怎么退出容器:两种方法分别?

    exit:bash终止,容器进入停止状态

    ctrl+p && Ctrl+q:退出容器,但容器保持运行状态

6、查看容器运行信息(占用的cpu、内存、网络等)

    docker stats 容器id

7、怎么查看在容器里做过的操作记录?

    docker diff 容器id

8、怎么连接到运行的容器?

    docker attach 容器id

    docker exec -ti 容器id /bin/bash

9、查看容器或镜像的内部信息?

    docker inspect 容器id或镜像id

10、如何删除容器?

    docker rm 容器id (前提需要关闭运行的容器),不关闭加-f强行移除

11、如何查看所有镜像?

     docker images

12、如何删除镜像?

     在没有容器使用此镜像的前提下使用:

     docker rmi 镜像id

13、从容器内拷贝文件到主机上

docker cp c2e9f2af5df6:容器文件路径 本地路径

作业练习

作业一:

Docker安装nginx

1、搜索镜像 search 镜像名称 #建议大家去docker搜索,可以看帮助文档

2、拉去镜像 pull 镜像名称

3、docker images 查看镜像

4、docker run -d --name nginx01 -p 3344:80 nginx

5、运行测试 :elinks http://ip:3344 --dump

6、进入容器查看配置文件

docker exec -it nginx01 /bin/bash

whereis nginx

cd /etc/nginx

ls

端口暴露的概念:

linux docker,docker,容器,java

思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分的麻烦,我要是可以在外部提供一个映射路径,达到在容器外修改文件名,容器内部就可以自动修改?(使用-v数据卷技术实现)

作业二:

使用docker安装一个tomcat!

#官方的使用

Docker run -it --rm tomcat:9.0

#我们之前的启动都是后台启动,停止了容器之后,容器还是可以查到的,Docker run -it --rm 一般是用来测试的,用完即删。

#下载启动

docker pull tomcat

#启动tomcat

docker run -d -p 3355:8080 --name tomcat01 tomcat

安装好tomcat后,默认没有webapps,阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除了,保证最小的可用的环境。

将/usr/local/tomcat/下webapps.dist目录里的文件cp到webapps下即可。

思考问题:我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?咱们要是可以在容器外部提供一个映射路径,webapps,我们在外部放置项目,就自动同步到内部就好了!

 docker的总结就到这里!如果可以的话给个赞吧!文章来源地址https://www.toymoban.com/news/detail-704393.html

到了这里,关于Linux部署docker(最详细docker,一看就会)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端开发中ui(antd)表格导出为excel。详细步骤一看就会

    我们在开发的时候往往有这样的需求,将页面上的表格导出为excel文件。以随手写的demo为例。   1、首先我们需要下载一个插件,用于将页面中的数据转为excel文件            可以通过我们的package.json文件去查看是否安装好 2、在我们需要用到的页面去引用  3、定义触发

    2024年02月15日
    浏览(31)
  • 史上最详细教程------使用git命令将代码上传到GitHub(一看就会)

    计算机专业的朋友们想必肯定听说过git和GitHub这两个名词吧. git是什么呢? 简单来说:git是一款最流行的版本控制工具.通过git可以用来进行代码的提交 更新 下载等. GitHub是什么呢? GitHub是全球最大的代码托管平台,全球的开发人员将自己的代码托管给这个平台.上面有很多开源的

    2024年02月09日
    浏览(65)
  • upload-labs详解1-19关通关全解(最全最详细一看就会)

    upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共19关,每一关都包含着不同上传方式。 1.png: 选择一个php文件,发现无法上传。 查看提示说是使用js对不合法文件进行检查,看到是

    2024年02月06日
    浏览(73)
  • Centos7下安装docker compose(零基础无脑直接安装,一看就会)

    安装docker composse必须先安装完docker,如果没有安装docker可以参照我 http://t.csdn.cn/GbupB 官方文档安装: curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 国外源下载速度很慢 更换为国内源安装: curl -SL https://get.daocloud.io/docker/c

    2024年02月08日
    浏览(35)
  • 传奇开服教程完整版GOM引擎超详细的单机架设图文教程(小白一看就会)

    服务端安装步骤: 1.把下载好的传奇版本解压在你电脑的D盘   2.补丁文件夹直接解压到你的传奇客户端根目录   3.解压好DBC2000开始安装,安装完成后关闭DBC程序       4.打开控制面板,点击类别,选择大图标或者小图标   5.找到齿轮状的图标BDE,点击BDE后鼠标放在Databases上

    2024年02月05日
    浏览(61)
  • git 仓库两种代码拉取方式及部分命令——大白话超详细一看就会

    git 项目拉取 方法一: 1,去官网安装git; 2,在文件夹右键点击打开菜单 选择Open Git Bash here 打开git命令框; 3, 第一次拉取需要设置,如果不是请忽略该步骤 使用git config --global user.name “名字”;git config --global user.email “邮箱”;设置你的个人信息; 4,输入git clone http:

    2024年04月16日
    浏览(38)
  • 一看就会的React入门

    目录 简介 入门案例 直接创建  函数式创建 类实例创建   组件实例三大核心属性 state 代码演示  props refs 1). Facebook开源的一个js库 2). 一个用来动态构建用户界面的js库 3). React的特点     Declarative(声明式编码)     Component-Based(组件化编码)     Learn Once, Write Anywhere(支持客户

    2024年02月05日
    浏览(40)
  • 超详解“二分法查找”,一看就会!

    目录 一、 二分法概念用途 二、 超详思维图解 三、  超详使用方法实现代码运行操作 四、   总结 五、   结语 一:二分法概念用途  什么是二分法?有什么作用?一般用在何处? 概念: 二分查找法算法,也叫折半查找算法(对半处理会提高寻找目标数字的效率); 作用

    2024年02月07日
    浏览(55)
  • Windows下Apache安装步骤(一看就会)

    Apache HTTP Server (简称 Apache ) 是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。 下面本

    2024年02月02日
    浏览(43)
  • Ubuntu安装MySQL服务器详细步骤(包括设置外网利用Navicat等工具远程连接MySQL服务器)!——一看就会,跟着做就对!

    在开始安装前,先更新一下系统。命令如下: sudo apt update sudo apt upgrade 使用APT方式安装MySQL8时,通常会安装MySQL的最新版本,且能够自动配置服务和环境变量。 sudo apt install mysql-server -y 安装完成后,MySQL会自动启动,可以使用以下命令测试MySQL安装情况 sudo service mysql status 或

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包