Docker的基本管理命令!!!学会docker的第一步

Docker的安装

##这里我用的是阿里线网源,所以需要先搭建yum线网源仓库##
[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# ls
backup  local.repo
[root@docker yum.repos.d]# ls
backup  local.repo
[root@docker yum.repos.d]# rm -rf local.repo
[root@docker yum.repos.d]# mv backup/* /etc/yum.repos.d/
[root@docker yum.repos.d]# ll
total 28
drwxr-xr-x. 2 root root    6 Nov 10 06:38 backup
-rw-r--r--. 1 root root 1664 Aug 30  2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30  2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 30  2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 30  2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 30  2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30  2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30  2017 CentOS-Vault.repo

[root@docker yum.repos.d]# yum clean all
[root@docker yum.repos.d]# yum makecache
##添加阿里docker线网源##

[root@docker yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

##添加完成后会有一个docker-ce.repo##
[root@docker yum.repos.d]# ls
docker-ce.repo

[root@docker yum.repos.d]# yum install -y docker-ce
[root@docker yum.repos.d]# systemctl start docker.service 
[root@docker yum.repos.d]# systemctl enable docker.service 
  • 镜像加速
    为什么做镜像加速,不加速的话很卡很卡很卡!!!
##在阿里官网中,每个人都有自己的加速网址,可以去阿里云控制台查看##
[root@docker yum.repos.d]# cd ~
[root@docker ~]# mkdir -p /etc/docker
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://ga12ck6j.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://ga1ock6j.mirror.aliyuncs.com"]
}
[root@docker ~]# cd /etc/docker/
[root@docker docker]# ls
daemon.json  key.json
[root@docker docker]# systemctl daemon-reload
[root@docker docker]# systemctl restart docker
  • 网络优化
[root@docker docker]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1


[root@docker docker]# sysctl -p
net.ipv4.ip_forward = 1


[root@docker docker]# systemctl restart network
[root@docker docker]# systemctl restart docker
  • 安装完docker后,会自动分配一块网卡
[root@docker docker]# ifconfig
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:f0:05:36:99  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

  • 它的功能就像安装VM时自动给你分配的VM1与VM8,用于宿主机的物理网卡(比如ens33),与docker内部容器的网络连通

Docker镜像的基础命令

1.查看镜像与版本信息

##因为我没有镜像所以无任何显示##
[root@docker docker]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
镜像名称            镜像标签               镜像ID            什么时候创建的        镜像大小
##查看docker的版本信息##
[root@docker 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                     ##go语言写的,go语言会大火吧
  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

2.查找指定镜像

##全球的Nginx镜像,按照热度排行###
[root@docker docker]# docker search Nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
Nginx                              Official build of Nginx.                        13981               [OK]                
jwilder/Nginx-proxy                Automated Nginx reverse proxy for docker con…   1906                                    [OK]
richarvey/Nginx-PHP-fpm            Container running Nginx + PHP-FPM capable of…   791                                     [OK]
linuxserver/Nginx                  An Nginx container, brought to you by LinuxS…   128                                     
jc21/Nginx-proxy-manager           Docker container for managing Nginx proxy ho…   109                                     
tianGolo/Nginx-rtmp                Docker image with Nginx using the Nginx-rtmp…   103                                     [OK]
bitnami/Nginx                      Bitnami Nginx Docker Image                      90                                      [OK]
alfg/Nginx-rtmp                    Nginx, Nginx-rtmp-module and FFmpeg from sou…   80                                      [OK]
jlesage/Nginx-proxy-manager        Docker container for Nginx Proxy Manager        66                                      [OK]
Nginxdemos/hello                   Nginx webserver that serves a simple page co…   63                                      [OK]

3.下载镜像 pull

##AUFS 若干层下载##
[root@docker docker]# docker pull Nginx

Using default tag: latest
latest: Pulling from library/Nginx
bb79b6b2107f: Pull complete 
5a9f1c0027a7: Pull complete 
b5c20b2b484f: Pull complete 
166a2418f7e8: Pull complete 
1966ea362d23: Pull complete 
Digest: sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Status: Downloaded newer image for Nginx:latest
docker.io/library/Nginx:latest

##查看镜像##
[root@docker docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               latest              c39a868aad02        4 days ago          133MB
##你的下载文件存放信息位置##
[root@docker overlay2]# vim /var/lib/docker/image/overlay2/repositories.json 

{"Repositories":{"Nginx":
{"Nginx:latest":"sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1"
,"Nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b":"sha256:
c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1"}}}

4.获取镜像信息 inspect

##获取镜像信息##
[root@docker overlay2]# docker inspect c39a868aad02
[
    {
        "Id": "sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1",
        "RepoTags": [
            "Nginx:latest"
        ],
        "RepoDigests": [
        //.......
            "AttachStdin": false,
            "AttachStdout": false,

            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        //.......
  • 这里插个小知识点,容器资源的格式几乎都是 json , yaml 两种

5.给镜像设置多标签 tag

[root@docker overlay2]# docker tag Nginx:latest Nginx:111
[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               111                 c39a868aad02        4 days ago          133MB
Nginx               latest              c39a868aad02        4 days ago          133MB
  • 这个相当于起别名
##删除标签##
[root@docker overlay2]# docker rmi c39a868aad02
Error response from daemon: conflict: unable to delete c39a868aad02 (must be forced) - 
image is referenced in multiple repositories

[root@docker overlay2]# docker rmi Nginx:111
Untagged: Nginx:111

6.导出与导入镜像

##导出镜像,-o表示导出+导出位置与名字+导出哪个镜像##
[root@docker opt]# docker save -o /opt/Nginx Nginx:latest 
[root@docker opt]# ll -h
-rw-------  1 root root 131M Nov 10 07:42 Nginx
##这个时候我们删除原本镜像,并导回##

##查看镜像
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               latest              c39a868aad02        4 days ago          133MB

##删除镜像
[root@docker opt]# docker rmi Nginx:latest 
Untagged: Nginx:latest
Untagged: Nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Deleted: sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1
Deleted: sha256:1af47386c12cb24b362bd785e71058ab675fbdcbda8e7a7ba0dd10c3cff75a2a
Deleted: sha256:25ee02f9e42f8cdca7ca8bc522cb69ac4a86a55401818a13c7a01e52a81894fe
Deleted: sha256:b1d2bc3292aa3d64794f99d2885d35b454993b4af24ad350a969d27925db7ebb
Deleted: sha256:4216e20d59f9fc90bccdd14493452532806d4803a25514366de2a9c5560624d0
Deleted: sha256:d0fe97fa8b8cefdffcef1d62b65aba51a6c87b6679628a2b50fc6a7a579f764c

##再次查看镜像
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
##用load 导入镜像
[root@docker opt]# docker load < /opt/Nginx 

d0fe97fa8b8c: Loading layer  72.49MB/72.49MB
2baf69a23d7a: Loading layer  64.54MB/64.54MB
2f57e21e4365: Loading layer  3.072kB/3.072kB
aee208b6ccfb: Loading layer  4.096kB/4.096kB
7b5417cae114: Loading layer  3.584kB/3.584kB
Loaded image: Nginx:latest


##查看镜像##
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               latest              c39a868aad02        4 days ago          133MB

Docker容器的基础命令

1.查看容器

[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS       NAMES
容器的ID         使用的哪一个镜像创建的       环境              创建的时间           容器的状态           协议与端口     
  • -a :查看所有容器状态,不加的话查看的是已经运行的容器

2.创建容器

  • 容器基于镜像创建,所以你需要先看有没有镜像
##可以看到这个时候的状态只是创建,你还需要去启动##
[root@docker opt]# docker create -it Nginx:latest /bin/bash
bb38787230cf40cb8c833f751667e129b97d6aeaf04983f8535fbb78d205f207

[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
bb38787230cf        Nginx:latest        "/docker-entrypoint.…"   9 seconds ago       Created                                 hopeful_maxwell
  • -i : 让容器的标准输入保持打开
  • -t : 让docker分配一个伪终端
  • /bin/bash : 需要的环境

3.容器的启动

[root@docker opt]# docker start bb38787230cf
bb38787230cf
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
bb38787230cf        Nginx:latest        "/docker-entrypoint.…"   2 minutes ago       Up 6 seconds        80/tcp              hopeful_maxwell
  • 注意:这里并不意味着你就可以对外提供服务了,你还需要做NAT映射,为了保护容器的安全性

在这里插入图片描述

4.docker run

  • docker run : 一条命令执行下载镜像,创建容器,开启容器
  • docker run后面跟镜像,有直接使用,没有会直接去下载镜像,-c 后面跟要在容器种操作的指令
[root@docker opt]# docker run centos:7 /bin/bash -c ls /

Unable to find image 'centos:7' locally
7: Pulling from library/centos
75f829a71a1c: Pull complete 
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
etc
home
//......省略

[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
955ec5648d68        centos:7            "/bin/bash -c ls /"      2 minutes ago       Exited (0) 2 minutes ago                       awesome_hodgkin
bb38787230cf        Nginx:latest        "/docker-entrypoint.…"   16 minutes ago      Up 14 minutes              80/tcp              hopeful_maxwell

[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               latest              c39a868aad02        4 days ago          133MB
centos              7                   7e6257c9f8d8        3 months ago        203MB

5.容器的删除

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
955ec5648d68        centos:7            "/bin/bash -c ls /"      11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin
bb38787230cf        Nginx:latest        "/docker-entrypoint.…"   11 hours ago        Up 3 seconds              80/tcp              hopeful_maxwell
##先关闭,再删除##
[root@docker ~]# docker stop bb38787230cf
bb38787230cf

[root@docker ~]# docker rm bb38787230cf
bb38787230cf

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS                    PORTS               NAMES
955ec5648d68        centos:7            "/bin/bash -c ls /"   11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin

6.进入与退出容器

  • 注意点:你进入的容器一定要是开启状态,否则无法进入
##首先开启一个容器##
[root@docker ~]# docker create -it Nginx:latest /bin/bash
546b2311fcff7ec4c6fa46c70bcd1c8bb4007577a99ebade3559fd3396bc47a6

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
546b2311fcff        Nginx:latest        "/docker-entrypoint.…"   6 seconds ago       Created                                       suspicIoUs_edison
955ec5648d68        centos:7            "/bin/bash -c ls /"      11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin

[root@docker ~]# docker start 546b2311fcff
546b2311fcff

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
546b2311fcff        Nginx:latest        "/docker-entrypoint.…"   18 seconds ago      Up 1 second               80/tcp              suspicIoUs_edison
955ec5648d68        centos:7            "/bin/bash -c ls /"      11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin
##进入Nginx容器##
[root@docker ~]# docker exec -it 546b2311fcff /bin/bash
root@546b2311fcff:/#


##退出容器
root@546b2311fcff:/# exit
exit

7.容器的导入导出

  • 容器的导出(存储到指定目录+备注名)
[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
546b2311fcff        Nginx:latest        "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes              80/tcp              suspicIoUs_edison
955ec5648d68        centos:7            "/bin/bash -c ls /"      11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin

[root@docker ~]# docker export 546b2311fcff > /opt/Nginx
[root@docker ~]# cd /opt/
[root@docker opt]# ll
total 134112
drwx--x--x  4 root root        28 Nov 10 06:43 containerd
-rw-------  1 root root 135339008 Nov 10 19:12 Nginx

这个时候我们去删除这个容器

##可以看到,正在运行的容器是不能删除的##
[root@docker opt]# docker rm 546b2311fcff
Error response from daemon: You cannot remove a running container 546b2311fcff7ec4c6fa46c70bcd1c8bb4007577a99ebade3559fd3396bc47a6. Stop the container before attempting removal or force remove

##只有停止状态或运行结束状态的容器才可以删除##
[root@docker opt]# docker stop 546b2311fcff
546b2311fcff


[root@docker opt]# docker rm 546b2311fcff
546b2311fcff
  • 容器的导入
  • 注意点:容器导入并不会创建容器,只会生成镜像
##这里用到cat与管道符号“|”将看到的内容递给dicker引入,并给个名字叫Nginx:web#

[root@docker opt]# cat /opt/Nginx | docker import - Nginx:web
sha256:d79ea958e6d3fa2d687bce6cd68bfed285600c6a52d31bb5f2c45400bc1cf06e

##可以看到并没有生成容器##
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS                    PORTS               NAMES
955ec5648d68        centos:7            "/bin/bash -c ls /"   11 hours ago        Exited (0) 11 hours ago                       awesome_hodgkin

##查看生成了镜像##
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Nginx               web                 d79ea958e6d3        3 minutes ago       131MB
Nginx               latest              c39a868aad02        4 days ago          133MB
centos              7                   7e6257c9f8d8        3 months ago        203MB

一些常识性问题

  • (1)正在运行的或者停止的容器,是不可以直接删除它的镜像的,只要你docker ps -a 能查到,它的镜像就删不了

  • (2)正在运行的容器不可以直接删除

  • (3)有多标签的相同ID的镜像,你不能通过删除ID的方式删除这个镜像,除非你 rmi -f 强制删除

docker日志的查看

查看实时日志,不看历史:

docker -f --tail 1 container_id

查看后100行的日志:

docker logs --tail 100 container_id

查看30分钟之内日志

docker logs  --since 30m container_id

查看指定日期之后的日志 (2019-03-25T13:00:00 到现在的日志)

docker logs -t --since="2019-03-25T13:00:00"  container_id

查看指定时间后的日志,只显示最后100行:

docker logs -f -t --since="2019-03-25" --tail=100 container_id

查看指定时间段之内的日志, (–until 需要docker API 1.35 之上才支持)

docker logs -t --since="2019-03-25T13:00:00" --until="2019-03-25T14:00:00" container_id

查询到的日志内容进行过滤

docker logs -f --tail=100 container_id | grep 'xxx'

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...