Docker容器引擎基础

docker nextcloud 外部存储 smb_docker

Linux很早就有一个容器的技术叫MXC,Docker实际上就是在LXC的基础之上做的二次封装。所以docker就是一个开源容器的管理工具,实现容器管理,而不是容器。可以把它理解为轻量级的虚拟机。

docker nextcloud 外部存储 smb_运维_02

寄居架构: 底层硬件>Windows7/10–>VMware- > Linux个人用的

裸金属架构: 底层硬件-> VMware ESXI→Linux 大多数企业都是这种

docker nextcloud 外部存储 smb_linux_03

docker的核心思想和虚拟化相似,都是给每一个软件一个独立的运行环境,互不干扰。

docker的目的是“一次封装,到处运行”。比如某一个集装箱中跑的是MySQL,安装MySQL并且再对MySQL主配置文件进行各种配置本来就特别慢,如果别的机器也需要相同的MySQL环境,还得从头到尾重新布一遍,这样就特别麻烦耗时。所以说可以把MySQL封装到一个“集装箱”内,如果有别的“蓝鲸”想要这个MySQL环境,那就直接把这个集装箱迁过去即可。甚至可以把MySQL的环境做成一个镜像(镜像可以理解为创建容器的一个模板),谁想要这个容器谁就直接拿这个镜像直接跑起来就行。

docker nextcloud 外部存储 smb_MySQL_04

docker nextcloud 外部存储 smb_docker_05

docker nextcloud 外部存储 smb_MySQL_06

docker nextcloud 外部存储 smb_nginx_07

docker nextcloud 外部存储 smb_nginx_08

docker nextcloud 外部存储 smb_linux_09

docker nextcloud 外部存储 smb_linux_10

docker nextcloud 外部存储 smb_运维_11

docker nextcloud 外部存储 smb_运维_12

镜像是用来创建容器的。

镜像是只读的,本身不能直接修改,但是可以往上面叠加很多东西。

比如可以在centos镜像上加一个nginx镜像,他两可组成一个全新的nginx镜像。

docker nextcloud 外部存储 smb_MySQL_13

容器类似于一个正在运行的简化版的虚拟机,里面有root权限、进程空间、用户空间等,以及一个或一组应用程序。

docker nextcloud 外部存储 smb_linux_14

docker nextcloud 外部存储 smb_docker_15

一台服务器可以有多个仓库,每个仓库可以放多个镜像。每个镜像都得有标签。比如nginx镜像可以有很多标签,第一个nginx可以叫XXX,第二个nginx可以叫YYY…。所以说你的镜像名和标签名合起来才可以是一个完整的名字。

docker nextcloud 外部存储 smb_nginx_16

docker nextcloud 外部存储 smb_docker_17

仓库是用来放镜像的,镜像是用来启动容器的

docker nextcloud 外部存储 smb_MySQL_18

docker nextcloud 外部存储 smb_MySQL_19

docker nextcloud 外部存储 smb_linux_20

docker nextcloud 外部存储 smb_nginx_21

docker nextcloud 外部存储 smb_运维_22

docker nextcloud 外部存储 smb_nginx_23

docker nextcloud 外部存储 smb_nginx_24

我的是18.06版本

docker nextcloud 外部存储 smb_nginx_25

阿里云下载镜像加速:

docker nextcloud 外部存储 smb_运维_26

docker nextcloud 外部存储 smb_运维_27

docker nextcloud 外部存储 smb_nginx_28

或者在此网站上搜索也行;

docker nextcloud 外部存储 smb_MySQL_29

docker nextcloud 外部存储 smb_运维_30

docker nextcloud 外部存储 smb_linux_31

[root@docker ~]# docker pull nginx 获取nginx镜像

docker nextcloud 外部存储 smb_MySQL_32

docker nextcloud 外部存储 smb_运维_33

docker nextcloud 外部存储 smb_nginx_34

docker nextcloud 外部存储 smb_MySQL_35

docker tag 也可以改名

docker nextcloud 外部存储 smb_运维_36

docker nextcloud 外部存储 smb_MySQL_37

![在这里插入图片描述](

docker nextcloud 外部存储 smb_linux_38

docker save -o 指定你要导出的镜像的名字 后面写镜像名

例如:

docker nextcloud 外部存储 smb_docker_39

即导出名字为nginx-test的nginx镜像到本地目录

docker nextcloud 外部存储 smb_MySQL_40

docker nextcloud 外部存储 smb_nginx_41

docker load < nginx-images 或者 docker load --input nginx-images

docker nextcloud 外部存储 smb_运维_42

docker nextcloud 外部存储 smb_MySQL_43

docker nextcloud 外部存储 smb_linux_44

docker nextcloud 外部存储 smb_nginx_45

docker create -it centos /bin/bash 创建centos容器,未来要打开的程序是/bin/bash,因为容器必须得有一个程序正在运行

docker ps -a 查看所有容器状态

docker ps -l 查看最近一次创建的容器状态

docker ps -q 查看正在运行的容器的id号

docker ps 查看正在运行的容器

docker nextcloud 外部存储 smb_linux_46

进入容器内:(相当于进入一个虚拟机内)

docker nextcloud 外部存储 smb_MySQL_47

退出容器:

如果敲exit,,那么f3a就是停止的状态

docker nextcloud 外部存储 smb_docker_48

基于一个镜像可以创建n个容器

docker nextcloud 外部存储 smb_MySQL_49

如果想退出一个镜像,但不想让进程停止

那么键盘输入ctrl加pq

docker nextcloud 外部存储 smb_docker_50

进入有两种方式:docker exec 或 docker attach

docker nextcloud 外部存储 smb_docker_51

docker nextcloud 外部存储 smb_docker_52

例:导入一个名字为centos:apache的http镜像

docker nextcloud 外部存储 smb_linux_53

然后就可以进入这个容器中

docker nextcloud 外部存储 smb_MySQL_54

docker nextcloud 外部存储 smb_nginx_55

docker nextcloud 外部存储 smb_docker_56

之后会讲企业级的仓库

docker nextcloud 外部存储 smb_运维_57

docker nextcloud 外部存储 smb_nginx_58

docker nextcloud 外部存储 smb_docker_59