简单介绍操作Docker的常用命令

Docker实验环境部署

简单介绍Docker的常用命令。

软件:
VMware:CentOS 7 3.10.0-957.el7.x86_64的版本

Docker 安装

环境部署

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0  

'永久关闭核心功能'
[root@localhost ~]# sed -i  "7s/enforcing/disabled/" /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config
....
SELINUX=disabled

安装Docker引擎依赖包

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里云镜像源

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

'在阿里云的yum源点中下载repo配置文件'
'生成的为置在本机的/etc/yum.d/目录下'
'只有在下载完docker-ce.repo配置文件后,才可以正常安装Docker-CE(社区版Docker引擎)'

安装Docker-CE引擎

[root@localhost ~]# yum install -y docker-ce

注:这里安装可能会报错误软件包Error: Package: 3:docker-ce-20.10.5-3.el7.x86_64 (docker-ce-stable)
安装contain-SElinux包,就可以了

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

开启Docker,并设置为开启自启

[root@localhost ~]# systemctl start docker.service 
[root@localhost ~]# systemctl enable docker.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

网络优化

[root@localhost docker]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost ~]# service network restart 
Restarting network (via systemctl):                        [  确定  ]
[root@localhost ~]# systemctl restart docker    

在这里插入图片描述

镜像加速
这里我使用的镜像加速地址是在阿里云官方申请的

注意:镜像加速加载完成后需要重启进程和docker

[root@controller ~]# sudo mkdir -p /etc/docker
[root@controller ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
    
    
>   "registry-mirrors": ["https://vaxh0chj.mirror.aliyuncs.com"]
> }
> EOF
{
    
    
  "registry-mirrors": ["https://vaxh0chj.mirror.aliyuncs.com"]
}
[root@controller ~]# sudo systemctl daemon-reload 
[root@controller ~]# systemctl restrat docker
Unknown operation 'restrat'.
[root@controller ~]# systemctl restart docker

Docker 基础命令

查询Docker版本

语句:docker version, docker info

[root@controller ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:33:55 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:32:17 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

镜像基本操作命令

镜像搜索
语句:docker search 关键字

[root@controller ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14535     [OK]       
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1980                 [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of809                  [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   158                  
.....

下载镜像
语句:docker pull 关键字

[root@controller ~]# docker pull nginx

Using default tag: latest
latest: Pulling from library/nginx
45b42c59be33: Pull complete 
8acc495f1d91: Pull complete 
ec3bd7de90d7: Pull complete 
19e2441aeeab: Pull complete 
f5a38c5f8d4e: Pull complete 
83500d851118: Pull complete 
Digest: sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

查看镜像
格式:docker images

[root@controller ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    35c43ace9216   2 weeks ago   133MB

查看镜像信息
格式: docker inspect 镜像ID

注:借助IMAGE ID标签 详细查看镜像信息

[root@controller ~]# docker inspect 35c43ace9216
[
    {
    
    
        "Id": "sha256:35c43ace9216212c0f0e546a65eec93fa9fc8e96b25880ee222b7ed2ca1d2151",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-02-17T19:20:26.056161789Z",
        "Container": "51caab8ab3beefe704d8b6fbe7653b2c7df216cd44787aca26bc5c6a2e2e9414",
        "ContainerConfig": {
    
    
            "Hostname": "51caab8ab3be",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
    
    
                "80/tcp": {
    
    }
.......

添加镜像标签
格式:docker tag 镜像标签 新标签

[root@controller ~]# docker tag nginx:latest nginx:web1
[root@controller ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    35c43ace9216   2 weeks ago   133MB
nginx        web1      35c43ace9216   2 weeks ago   133MB

删除镜像
格式:docker rmi 镜像标签

注:因为此处有两个相同的镜像,所以删除的只是别名,如果把最后一个也删除,那镜像也会被删除

[root@controller ~]# docker rmi nginx:web1 
Untagged: nginx:web1
[root@controller ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    35c43ace9216   2 weeks ago   133MB

镜像输出
格式:docker save -o 导出的文件名 镜像标签

[root@controller ~]# docker save -o nginx11 nginx:latest 
[root@controller ~]# ls
anaconda-ks.cfg  nginx11  vi

镜像导入
格式:docker load < 镜像文件

'先删除nignx镜像'
[root@controller ~]# docker rmi 35c43ace9216
Untagged: nginx:latest
Untagged: nginx@sha256:f3693fe50d5b1df1ecd315d54813a77afd56b0245a404055a946574deb6b34fc
Deleted: sha256:35c43ace9216212c0f0e546a65eec93fa9fc8e96b25880ee222b7ed2ca1d2151
Deleted: sha256:61f2666cb67e4572a31412367fa44567e6ac238226385762ea65670ed39034a8
Deleted: sha256:622fb7fb6a35078e3a2d446bb0e74c6a0cd500e3a211fd17ecbbcea5377ded38
Deleted: sha256:69a8591f1aaa7d694fa79a187886f6690e6e51e8c2bc91727be01a9e87daacd2
Deleted: sha256:8a451c701633832102e10093db7545eada8e5639a1b35bb14afaf48601948802
Deleted: sha256:2edbde38832e9e0e07d113df74817dc736fd49ea2f9c0d7ce8e40e3446b49b82
Deleted: sha256:9eb82f04c782ef3f5ca25911e60d75e441ce0fe82e49f0dbf02c81a3161d1300

[root@controller ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
'再导入'
[root@controller ~]# docker load  < nginx11 
9eb82f04c782: Loading layer  72.49MB/72.49MB
ffd3d6313c9b: Loading layer  64.73MB/64.73MB
9b23c8e1e6f9: Loading layer  3.072kB/3.072kB
0f804d36244d: Loading layer  4.096kB/4.096kB
9f65d1d4c869: Loading layer  3.584kB/3.584kB
2acf82036f38: Loading layer  7.168kB/7.168kB
Loaded image: nginx:latest

[root@controller ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    35c43ace9216   2 weeks ago   133MB

容器操作基本命令

容器列表查询
格式:docker ps -a (-a 列出最近一次启动的容器)

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

创建容器
格式:docker create -it 选项 /bin/bash

-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端

[root@controller ~]# docker create nginx:latest  /bin/bash
a446668bf34030eb9ec378646fe3149e152f627b4703132944eab5adc6ca098d
[root@controller ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS    PORTS     NAMES
a446668bf340   nginx:latest   "/docker-entrypoint.…"   8 seconds ago   Created             inspiring_dubinsky


'/bin/bash 指定终端'
'statys :created 创建状态,暂时还未开启'
'container id  容器ID'

启动容器
格式:docker start 容器ID

[root@controller ~]# docker start a446668bf340
a446668bf340
[root@controller ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                     PORTS     NAMES
a446668bf340   nginx:latest   "/docker-entrypoint.…"   About a minute ago   Exited (0) 6 seconds ago             inspiring_dubinsky

一次性执行容器操作
格式:docker run 镜像名称 操作指令

[root@controller ~]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

注:如果不希望执行完命令后结束进程,可以给一条循环语句命令

docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

进入容器
格式:
① docker run -it 容器名 容器环境

② 在容器为运行状态下:docker exec -it 容器ID 容器环境

[root@controller ~]# docker run -it nginx:latest  /bin/bash
root@4a78ef8cd814:/# 
root@4a78ef8cd814:/# 
root@4a78ef8cd814:/# exit
exit

容器导出、导入
格式:

① docker export 容器ID > 导出的容器名 (容器导出)

②cat 容器名 | docker import - 镜像名 (生成镜像,不会生成容器)

root@controller ~]# docker export a446668bf340 > centos_nginx
[root@controller ~]# ls
anaconda-ks.cfg  centos_nginx  nginx  vi

容器删除
格式:docker rm 容器ID (必须先停止再删除)

[root@controller ~]# docker rm 4a78ef8cd814
4a78ef8cd814

如果想批量删除容器,可借助正则表达式(不会删除没有关闭的容器哦)

docker ps -a | awk '{print "docker rm " $1}' | bash

'注:遍历容器ID,依次删除,但如果有UP状态的容器则会报错'

猜你喜欢

转载自blog.csdn.net/weixin_50344807/article/details/114556102