docker容器简介 部署过程和基本操作教程


docker容器简介

  • Docker是什么
    是一种轻量级的“虚拟机”
    在Linux容器里运行应用的开源工具

  • 容器与虚拟机的区别

  1. 虚拟机需要安装操作系统 但是容器不需要 ,容器其中只包含了核心,
  2. 容器启动时间很短 虚拟机则需要几十秒甚至数分钟
  3. 虚拟机比容器更安全
  4. 容器可以灵活迁移 虚拟机不行
  5. 容器之间是互相独立的
  • Docker的使用场景
    打包应用程序简化部署
    可脱离底层硬件任意迁移
    例:服务器从腾讯云迁移到阿里云

Docker的核心概念及安装方式

  • 镜像
    一个面向Docker容器引擎的只读模板
  • 容器
    从镜像创建的运行实例
  • 仓库
    集中保存镜像的地方
  • CentOS安装Docker的两种方式
    ●使用CURL获得Docker的安装脚本进行安装
    ●使用YUM仓库来安装Docker
    在这里插入图片描述

部署Docker

首先安装配置yum阿里源的所需要的yum管理控制和内核框架
然后再安装docker-ce

yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y install docker-ce
(如果在这步出现报错多数是因为更改了yum仓库配置文件 需要还原centos系统默认的yum仓库配置文件 恢复后使用yum clean all清理缓存)
systemctl stop firewalld
setenforce 0

为了保证docker 公用库的镜像下载速度和可靠性
为docker配置阿里云的镜像加速

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://h7******.mirror.aliyuncs.com"] #这次的加速地址为个人地址 每个阿里云账户都有一个 可以自行查看自己的阿里云镜像加速地址是什么 再在此处添加
}
EOF
systemctl daemon-reload
systemctl restart docker #开启服务
service network restart #重启网络服务
ifconfig #查看docker0的端口是否正常起来了
显示:
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:cd:e3:16:8c  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker基础操作

查看docker版本号

[root@server1 docker] docker version 
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

搜索公有库的容器镜像

[root@server1 docker] docker search apache
NAME(名字)                               DESCRIPTION(备注)                      STARS(好评数)    OFFICIAL            AUTOMATED
httpd                              The Apache HTTP Server Project                  3263                [OK]                
tomcat                             Apache Tomcat is an open source implementati…   2883                [OK]                
cassandra                          Apache Cassandra is an open-source distribut…   1213                [OK]                
maven                              Apache Maven is a software project managemen…   1119                [OK]                
zookeeper                          Apache ZooKeeper is an open-source server wh…   960                 [OK]                
solr                               Solr is the popular, blazing-fast, open sour…   800                 [OK]                
apache/nifi                        Unofficial convenience binaries and Docker i…   192                                     [OK]

获取容器镜像

[root@server1 docker] docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
756975cb9c7e: Pull complete 
d77915b4e630: Pull complete 
5f37a0a41b6b: Pull complete 
96b2c1e36db5: Pull complete 
27a2d52b526e: Pull complete 
a867dba77389: Pull complete 
0939c055fb79: Pull complete 
0b0694ce0ae2: Pull complete 
81a5f8099e05: Pull complete 
c3d7917d545e: Pull complete 
Digest: sha256:a319b10d8729817c7ce0bcc2343a6f97711c7870395019340d96b6aafd6ccbea
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

查看docker本地容器镜像

[root@server1 docker] docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              e0bd8b34b4ea        6 days ago          649MB

删除本地容器镜像列表(id)

[root@server1 docker] docker rmi e0bd8b34b4ea
Untagged: tomcat:latest
Untagged: tomcat@sha256:a319b10d8729817c7ce0bcc2343a6f97711c7870395019340d96b6aafd6ccbea
Deleted: sha256:e0bd8b34b4ea904874e55eae50e8987815030d140f9773a4b61759f4f85bf38d
......

删除操作需要注意的是 如果 一个镜像拥有2个标签 呢么使用id删除的时候会报错 这个时候可以使用名字来删除单个 或者使用-f删除所有这个id的镜像

查看镜像详细信息

[root@server1 docker] docker inspect bc9a0695f571
[
    {
        "Id": "sha256:bc9a0695f5712dcaaa09a5adc415a3936ccba13fc2587dfd76b1b8aeea3f221c",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3"
.....

为镜像添加标签

[root@server1 docker] docker tag nginx:latest nginx:web_service
[root@server1 docker] docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              bc9a0695f571        8 hours ago         133MB
nginx               web_service         bc9a0695f571        8 hours ago         133MB

导出镜像到当前目录下

[root@server1 docker] docker save -o nginx nginx:web_service 
[root@server1 docker] ll
总用量 133892
-rw-r--r--. 1 root root        67 11月 25 14:57 daemon.json
-rw-------. 1 root root       244 11月 25 14:41 key.json
-rw-------. 1 root root 137097216 11月 25 16:11 nginx

载入镜像

[root@server1 docker] docker load < nginx 
f5600c6330da: Loading layer  72.52MB/72.52MB
7ccabd267c9f: Loading layer  64.54MB/64.54MB
850c2400ea4d: Loading layer  3.072kB/3.072kB
f790aed835ee: Loading layer  4.096kB/4.096kB
7e914612e366: Loading layer  3.584kB/3.584kB
Loaded image: nginx:web_service

Docker容器操作
创建容器
docker create [选项]镜像运行的程序
●-i让容器的标准输入保持打开
●-t让Docker分配一个伪终端查看容器运行状态
docker ps [选项]
●-a列出所有的容器,包括未运行的容器

创建容器

[root@server1 docker] docker create -it nginx:web_service /bin/bash
7f0baa17731e87893fcc054b373d02527571740acd09fa3dda7edc5812b19258

查看已创建的容器

[root@server1 docker] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
7f0baa17731e        nginx:web_service   "/docker-entrypoint.…"   2 minutes ago       Created                                 laughing_mccarthy

启动容器

[root@server1 docker] docker start 7f0baa17731e
7f0baa17731e
[root@server1 docker] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
7f0baa17731e        nginx:web_service   "/docker-entrypoint.…"   7 minutes ago       Up 12 seconds       80/tcp              laughing_mccarthy
e92123bdf6de        nginx:web_service   "/docker-entrypoint.…"   11 minutes ago      Created                                 nervous_clarke

使用run直接下载镜像》创建容器》启动容器

[root@server1 docker] docker run -itd nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
Status: Downloaded newer image for nginx:latest
1872c2a473f795749067d2e35b6115772b794d6e157c9cdf508ca5c51d90683e
[root@server1 docker] docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             ZE
nginx               latest              bc9a0695f571        8 hours ago         3MB
nginx               web_service         bc9a0695f571        8 hours ago         3MB
[root@server1 docker] docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
1872c2a473f7        nginx               "/docker-entrypoint.…"   46 seconds ago      Up 45 seconds       80/tcp              vigorous_wilbur
7f0baa17731e        nginx:web_service   "/docker-entrypoint.…"   10 minutes ago      Up 3 minutes        80/tcp              laughing_mccarthy
e92123bdf6de        nginx:web_service   "/docker-entrypoint.…"   15 minutes ago      Created                                 nervous_clarke

启动执行命令后关闭容器

先创建并开启一个容器

docker pull paigeeworld/centos7
docker create -it paigeeworld/centos7 /bin/bash
docker start b835619285ae

然后再执行下面的命令

[root@server1 docker] docker run paigeeworld/centos7 /usr/bin/bash -c ls /
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

终止容器运行

[root@server1 docker] docker stop 1872c2a473f7
1872c2a473f7
[root@server1 docker] docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                     PORTS               NAMES
9d86ca9d8fb9        paigeeworld/centos7   "/usr/bin/bash -c ls…"   4 minutes ago       Exited (0) 4 minutes ago                       compassionate_kepler
b835619285ae        paigeeworld/centos7   "/bin/bash"              6 minutes ago       Up 4 minutes                                   naughty_beaver
1872c2a473f7        nginx                 "/docker-entrypoint.…"   22 minutes ago      Exited (0) 7 seconds ago                       vigorous_wilbur
7f0baa17731e        nginx:web_service     "/docker-entrypoint.…"   32 minutes ago      Up 25 minutes              80/tcp              laughing_mccarthy
e92123bdf6de        nginx:web_service     "/docker-entrypoint.…"   37 minutes ago      Created                                        nervous_clarke

注:正常关闭容器时 返回的值是0 非0的返回值 都是异常关闭

进入容器

[root@server1 docker] docker exec -it b835619285ae /bin/bash
bash-4.2 ll
bash: ll: command not found
bash-4.2 cd
bash-4.2 ls -Th
ls: invalid tab size: h
bash-4.2 ls    
bin   dev  home  lib64	     media  opt   root	sbin  sys  usr
boot  etc  lib	 lost+found  mnt    proc  run	srv   tmp  var
退出 exit

容器导出到当前目录下

[root@server1 docker] docker export 9d86ca9d8fb9 > centos_7
[root@server1 docker] ll
总用量 486932
-rw-r--r--. 1 root root 361509376 11月 25 17:10 centos_7
-rw-r--r--. 1 root root        67 11月 25 14:57 daemon.json
-rw-------. 1 root root       244 11月 25 14:41 key.json
-rw-------. 1 root root 137097216 11月 25 16:11 nginx

导入容器

[root@server1 docker] cat centos_7 | docker import - centos7-1
sha256:5f47bc6ebb6ff1f85f3e80db491083511b4925cf2c5821e61521a6a88c49f47d
[root@server1 docker] docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
centos7-1             latest              5f47bc6ebb6f        9 seconds ago       355MB
nginx                 latest              bc9a0695f571        9 hours ago         133MB
nginx                 web_service         bc9a0695f571        9 hours ago         133MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago         382MB

删除容器

[root@server1 docker] docker rm e92123bdf6de
e92123bdf6de

批量删除容器

[root@server1 docker] docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
9d86ca9d8fb9
Error response from daemon: You cannot remove a running container  b835619285ae3d30113937d443e9a0fc75f707ba46e5442716ff94bc379cd5bf. Stop the container before attempting removal or force remove #如果其中有up状态的容器 呢么会报这条错误 并且只删除处于关闭状态的容器 up状态的不会关闭
1872c2a473f7
7f0baa17731e
[root@server1 docker] docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS               NAMES
b835619285ae        paigeeworld/centos7   "/bin/bash"         27 minutes ago      Up 25 minutes                           naughty_beaver

dorker容器中的ip分配

一般docker服务启动后新建的docker网卡的ip是172.17.0.1 这个虚拟网卡是所有容器的网关
后续启动的容器 ip会从172.17.0.2开始递增
创建并启动一个centos系统的容器后 使用ifconfig命令查看 容器的centos7并没有net-tools 要安装才能使用命令

bash-4.2 yum -y install net-tools 安装net工具
bash-4.2 ifconfig 查看容器分配的ip
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.4  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:04  txqueuelen 0  (Ethernet)
        RX packets 3713  bytes 19394794 (18.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3624  bytes 203690 (198.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值