docker基本操作和命令介绍

阿里云下载

# yum install -y yum-utils device-mapper-persistent-data lvm2 git
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum install docker-ce -y
  1. Docker对服务器端开发/部署带来的变化:

    方便快速部署
    对于部署来说可以极大的减少部署的时间成本和人力成本
    Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念
    是 Build once, Run anywhere
    1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
    2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
    3)方便构建基于微服务架构的系统,通过服务编排,更好的松耦合;
    4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
    

Docker 优势:

1、交付物标准化
Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。

2、应用隔离
Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本. 

3、一次构建,多次交付
类似于集装箱的"一次装箱,多次运输",Docker镜像可以做到"一次构建,多次交付"。

Docker的度量:

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的

可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性

 通过内核的命名空间来实现的,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2)可度量性

 Docker主要通过cgroups控制组来控制资源的度量和分配。

3)移植性

 Docker利用AUFS来实现对容器的快速更新。

 AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层

 的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性

 安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。

 容器内部之间的安全性主要是通过命名空间和cgroups来保证的。

 容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。


Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间

 多个容器可以共享同一个基础镜像存储。

2)快速部署

3)升级方便

 升级一个基础镜像即可影响到所有基于它的容器。需要注意已经在运行的docker容器不受影响

容器和 VM 的主要区别:

表面区别:
容器占用体积小,虚拟机占用体积大
隔离性:容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。
启动速度:虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
容器使用宿主操作系统的内核,而虚拟机使用独立的内核。Docker 的局限性之一是,它只能用在64位的操作系统上。
本质区别:
容器是被隔离的进程

配置阿里云下载docker

# yum install -y yum-utils device-mapper-persistent-data lvm2 git
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum install -y docker-ce
# systemctl enable docker
# systemctl start docker
# docker -v
启动
#systemctl enable docker
#systemctl start docker
查看状态
[root@docker-server ~]# docker -v
Docker version 19.03.2, build 6a30dfc
查看详情
[root@docker-server ~]# docker version
查看docker运行状态
# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
...
报错解决方法
报错1:

docker info的时候报如下错误

bridge-nf-call-iptables is disabled

 

解决1:

追加如下配置,然后重启系统

# vim /etc/sysctl.conf   

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-arptables = 1

 

问题2:

虚拟机ping百度也能ping通,但是需要等好几秒才出结果,关键是下载镜像一直报错如下

 # docker pull daocloud.io/library/nginx

 Using default tag: latest

 Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp   192.168.1.189:41335->192.168.1.2:53: i/o timeout

 

解决2:

我的虚拟机用的网关和dns都是虚拟机自己的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果

 # vim /etc/resolv.conf

 nameserver 8.8.8.8
简单测试
运行一个容器
[root@192 ~]# docker run -it daocloud.io/library/ubuntu /bin/bash #运行容器
Unable to find image 'daocloud.io/library/ubuntu:latest' locally
latest: Pulling from library/ubuntu
5c939e3a4d10: Pull complete 
c63719cdbe7a: Pull complete 
19a861ea6baf: Pull complete 
651c9d2d6c4f: Pull complete 
Digest: sha256:bc025862c3e8ec4a8754ea4756e33da6c41cba38330d7e324abd25c8e0b93300
Status: Downloaded newer image for daocloud.io/library/ubuntu:latest

如果自动进入下面的容器环境,说明ubuntu镜像运行成功,Docker的安装也没有问题:可以操作容器了
root@db8e84e2ea96:/# 
国内镜像源
去查看如何使用aliyun的docker镜像库
去查看如何使用网易蜂巢的docker镜像库
-docker  pull  镜像仓库与镜像名字
daocloud.io

**Docker 加速器 **
使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。因此 DaoCloud 推出了加速器工具解决这个难题,通过智能路由和缓存机制,极大提升了国内网络访问 Docker Hub 的速度。

Docker 加速器对 Docker 的版本有要求吗?    
需要 Docker 1.8 或更高版本才能使用。

Docker 加速器支持什么系统?    
Linux, MacOS 以及 Windows 平台。

Docker 加速器是否收费?    
提供永久免费的加速器服务,请放心使用。

国内比较好的镜像源:网易蜂巢、aliyun和daocloud

daocloud.io--官网

===========以下为亲测================

使用国内镜像:

进入网站:https://daocloud.io/

下载镜像

[root@docker-server ~]# docker pull daocloud.io/library/nginx   #下载镜像
Using default tag: latest
latest: Pulling from library/nginx
0a4690c5d889: Pull complete 
9719afee3eb7: Pull complete 
44446b456159: Pull complete 
Digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76
Status: Downloaded newer image for daocloud.io/library/nginx:latest
daocloud.io/library/nginx:latest
基本命令
[root@docker-server ~]# docker images  #查看镜像
[root@docker-server ~]# docker run -it daocloud.io/library/nginx /bin/bash   #运行容器
[root@docker-server ~]# docker ps  #查看运行中的镜像
[root@docker-server ~]# docker ps -a  #查看隐藏镜像有时候报错就是因为这个
[root@docker-server ~]# docker rm 镜像名或者镜像id  #删除镜像
        #删除前先停止镜像
[root@docker-server ~]# docker stop 镜像名(docker stop tomcat1)
        #先停止再删除

删除容器

docker rmi 容器id
在这里插入图片描述

[root@localhost ~]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/library/tomcat              8.5.15-jre8         b8dfe9ade316        3 years ago         334MB
daocloud.io/daocloud/daocloud-toolset   latest              bbdc71e950ea        3 years ago         147MB

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

运行tomcat(例子)
[root@localhost ~]# docker run -itd --name tomcat1 -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/youngfit/tomcat:v1.1
3e4d5ac27aec8747a11423794d9d652149b0d6ded8f884e139e220e5bd876dce
[root@localhost ~]# docker run -itd --name tomcat2 -p 8081:8080 registry.cn-hangzhou.aliyuncs.com/youngfit/tomcat:v1.1
128b16681fed4faa7a64a99948aa8b61c747e6f2b6b2db835a84e0c6bffffb72
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                    COMMAND                  CREATED              STATUS              PORTS                    NAMES
128b16681fed        registry.cn-hangzhou.aliyuncs.com/youngfit/tomcat:v1.1   "catalina.sh run"        9 seconds ago        Up 7 seconds        0.0.0.0:8081->8080/tcp   tomcat2
3e4d5ac27aec        registry.cn-hangzhou.aliyuncs.com/youngfit/tomcat:v1.1   "catalina.sh run"        22 seconds ago       Up 21 seconds       0.0.0.0:8080->8080

d  #后台运行
-p 8080:8080  #前一个是容器的端口(可改)后一个是tomcat的默认端口(不能改)
进入容器
docker exec -it tomcat1 /bin/bash  
#tomcat1容器名字也可以换成容器id
# 语法 docker exec -it 容器名 /bin/bash
docker运行mysql
创建
[root@localhost ~]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.7.4
42b5f27dfbcf1c85fcbb77983036876a8b62843a07b76c972dbfb3d60c239425

查看
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
42b5f27dfbcf        daocloud.io/library/mysql:5.7.4                          "/entrypoint.sh mysq…"   55 seconds ago      Up 54 seconds       0.0.0.0:3306->3306/tcp   mysql
[root@localhost ~]# docker exec -it mysql /bin/bash
#进容器

[root@localhost ~]# docker exec -it mysql /bin/bash
root@42b5f27dfbcf:/usr/local/mysql# mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.4-m14 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql>

更多命令参考docker命令详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值