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
  • 注意:在镜像有多标签时,使用ID号删除是删不了的,只有剩下一个标签你才能删

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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340