centOS7 关于Docker的命令(初级篇)

用户权限切换

当前普通用户登录,想要切换为root用户,需要输入命令

su

在这里插入图片描述
想从root用户切换到普通用户,只需要输入

su jinjing523

在这里插入图片描述

安装docker

1.卸载旧的版本docker或docker-engine

[root@localhost ~]# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.使用存储库安装, 由于官方存储库下载的比较慢,就使用清华大学镜像的存储库或者使用阿里云镜像的存储库

2-1.安装存储库所需要的依赖包

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

2-2.使用清华大学镜像存储库或者阿里云镜像存储库

[root@localhost ~]#  yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo 
或者用阿里云镜像存储库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3安装docker

[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io

4.启动docker,并查看docker的版本

[root@localhost ~]# systemctl start docker       #启动docker
 
[root@localhost ~]# docker -v                    #查看docker版本
Docker version 18.09.7, build 2d0083d

[root@localhost ~]# docker info                  #查看docker详细信息
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.7
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.685GiB
Name: localhost
ID: IVDD:BQR4:ASMV:YC4O:HSAI:35B4:DC7J:66H4:WPIV:OA27:GJE7:QS2Y
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

5 新版的docker使用镜像加速器

[root@localhost ~]# vim /etc/docker/daemon.json               #编辑镜像加速器
{
    
    
   "registry-mirrors": ["https://yrxhlwl.mirror.aliyuncs.com"] # 个人阿里容器镜像服务地址
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker                #配置后重启服务

docker镜像命令

docker search : 从Docker Hub查找镜像

docker search [OPTIONS] TERM

OPTIONS说明:

  • automated :只列出 automated build类型的镜像;
  • no-trunc :显示完整的镜像描述;
  • -f <过滤条件>:列出收藏数不小于指定值的镜像。

从 Docker Hub 查找所有tomcat镜像,并且收藏数大于 30 的镜像

[root@localhost jinjia523]# docker search -f stars=30 tomcat
NAME             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat           Apache Tomcat is an open source implementati…   2927      [OK]       
tomee            Apache TomEE is an all-Apache Java EE certif…   86        [OK]       
dordoka/tomcat   Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   55                   [OK]
bitnami/tomcat   Bitnami Tomcat Docker Image 

参数说明:

  • NAME: 镜像仓库源的名称
  • DESCRIPTION: 镜像的描述
  • OFFICIAL: 是否 docker 官方发布
  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
  • AUTOMATED: 自动构建。

docker pull : 从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

  • -a :拉取所有 tagged 镜像
  • –disable-content-trust :忽略镜像的校验,默认开启

从Docker Hub下载tomcat 镜像

[root@localhost jinjia523]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
b9a857cbf04d: Pull complete 
d557ee20540b: Pull complete 
3b9ca4f00c2e: Pull complete 
667fd949ed93: Pull complete 
661d3b55f657: Pull complete 
511ef4338a0b: Pull complete 
a56db448fefe: Pull complete 
00612a99c7dc: Pull complete 
326f9601c512: Pull complete 
c547db74f1e1: Pull complete 
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

docker images : 列出本地镜像。

docker images [OPTIONS] [REPOSITORY[:TAG]]

OPTIONS说明:

扫描二维码关注公众号,回复: 13120879 查看本文章
  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

  • –digests :显示镜像的摘要信息;

  • -f :显示满足条件的镜像;

  • –format :指定返回值的模板文件;

  • –no-trunc :显示完整的镜像信息;

  • -q :只显示镜像ID。

查看本地镜像列表。

[root@localhost jinjia523]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
redis        latest    621ceef7494a   13 days ago   104MB
tomcat       latest    040bdb29ab37   13 days ago   649MB
  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

docker rmi : 删除本地一个或多少镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f :强制删除;
  • –no-prune :不移除该镜像的过程镜像,默认移除;

强制删除本地所有镜像

docker rmi -f $(docker images -qa)

docker history:查看指定镜像的创建历史。

docker history [OPTIONS] IMAGE

OPTIONS说明:

  • -H :以可读的格式打印镜像大小和日期,默认为true;
  • –no-trunc :显示完整的提交记录;
  • -q :仅列出提交记录ID。
    查看自己构造的mycentos历史记录
[root@localhost mydocker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mycentos     1.3       0e7c8512a14f   8 minutes ago   291MB
redis        latest    621ceef7494a   2 weeks ago     104MB
tomcat       latest    040bdb29ab37   2 weeks ago     649MB
centos       latest    300e315adb2f   7 weeks ago     209MB
[root@localhost mydocker]# docker history 0e7c8512a14f
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
0e7c8512a14f   9 minutes ago    /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B        
0315bf73ff81   9 minutes ago    /bin/sh -c #(nop)  EXPOSE 80                    0B        
18060388f695   9 minutes ago    /bin/sh -c yum -y install net-tools             23.3MB    
fb7821d7fb3c   11 minutes ago   /bin/sh -c yum -y install vim                   58.1MB    
ac2a3994dc91   11 minutes ago   /bin/sh -c #(nop) WORKDIR /tmp                  0B        
a7e1648d9197   11 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/tmp              0B        
32947a1c04ee   11 minutes ago   /bin/sh -c #(nop)  MAINTAINER jinxin<jingxin…   0B        
300e315adb2f   7 weeks ago      /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      7 weeks ago      /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      7 weeks ago      /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7…   209MB  

docker容器命令

docker run :创建一个新的容器并运行一个命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • –name=“nginx-lb”: 为容器指定一个名称;
  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars”: 指定容器的hostname;
  • -e username=“ritchie”: 设置环境变量;
  • –env-file=[]: 从指定文件读入环境变量;
  • –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
  • -m :设置容器使用内存最大值;
  • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • –link=[]: 添加链接到另一个容器;
  • –expose=[]: 开放一个端口或一组端口;
  • –volume , -v: 绑定一个卷

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

docker run -P -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /hoatData映射到容器的 /containerData(加上:rod代表容器containerData目录只有读权限,没有写权限)。

docker run -p 80:80 -v /hoatData:/containerData:ro -d nginx:latest

doc2容器共享doc1容器的的数据卷(yctc/tomcat是VOLUME自我封装的镜像)

docker run -it --name doc2 --volumes-from doc1 yctc/tomcat

退出容器交互

  • exit 容器停止退出
  • ctrl + P + Q 容器不停止退出(通过docker attach和docker exec再次进入)

docker ps : 列出容器

docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。
  • -f :根据条件过滤显示的内容。
  • –format :指定返回值的模板文件。
  • -l :显示最近创建的容器。
  • -n :列出最近创建的n个容器。
  • –no-trunc :不截断输出。
  • -q :静默模式,只显示容器编号。
  • -s :显示总的文件大小。

列出所有在运行的容器信息。

runoob@runoob:~$ docker ps
CONTAINER ID   IMAGE          COMMAND                ...  PORTS                    NAMES
09b93464c2f7   nginx:latest   "nginx -g 'daemon off" ...  80/tcp, 443/tcp          myrunoob
96f7f14e99ab   mysql:5.6      "docker-entrypoint.sh" ...  0.0.0.0:3306->3306/tcp   mymysql

列出最近创建的5个容器信息。

runoob@runoob:~$ docker ps -n 5
CONTAINER ID        IMAGE               COMMAND                   CREATED           
09b93464c2f7        nginx:latest        "nginx -g 'daemon off"    2 days ago   ...     
b8573233d675        nginx:latest        "/bin/bash"               2 days ago   ...     
b1a0703e41e7        nginx:latest        "nginx -g 'daemon off"    2 days ago   ...    
f46fb1dec520        5c6e1090e771        "/bin/sh -c 'set -x \t"   2 days ago   ...   
a63b4a5597de        860c279d2fec        "bash"                    2 days ago   ...

docker start :启动一个或多个已经被停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

启动已被停止的容器mycentOS

docker start mycentOS

docker restart :重启容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]

重启容器mycentOS

docker restart mycentOS

docker stop :停止一个运行中的容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]

停止运行中的容器mycentOS

docker stop mycentOS

docker kill :杀掉一个运行中的容器(强制关闭容器)。

docker kill [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -s :向容器发送一个信号

杀掉运行中的容器mycentOS

runoob@runoob:~$ docker kill -s KILL mycentOS
mycentOS

docker rm :删除一个或多个容器。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -f :通过 SIGKILL 信号强制删除一个运行中的容器。
  • -l :移除容器间的网络连接,而非容器本身。
  • -v :删除与容器关联的卷。

删除所有已经停止的容器:

docker rm $(docker ps -a -q)

docker attach :连接到正在运行中的容器。

建议使用docker exec ,docker attach命令会出现卡死现象

docker attach [OPTIONS] CONTAINER

docker exec :在运行的容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

docker cp :用于容器与主机之间的数据拷贝。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • -L :保持源目标中的链接

docker inspect : 获取容器/镜像的元数据。

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

  • -f :指定返回值的模板文件。
  • -s :显示总的文件大小。
  • –type :为指定类型返回JSON。

获取镜像tomcat的元信息。

[root@localhost jinjia523]# docker inspect f7ddfece26dd
[
    {
    
    
        "Id": "f7ddfece26dd46e62b97839ac71925d83ba4beb1ba519bd81b45977909dced8a",
        "Created": "2021-01-26T15:19:10.478625626Z",
        "Path": "catalina.sh",
        "Args": [
            "run"
        ],
        "State": {
    
    
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 5174,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-01-26T15:19:11.191383847Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        }
......
docker commit

DockerFile解析

DockerFile关键字解释

FROM:基础镜像,定制的镜像都是基于 FROM 的镜像(scratch所有镜像的父镜像,类似于java中的Object)

在这里插入代码片

MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外暴露的接口
WORKDIR:指定在创建容器后,终端默认登录进来工作目录,一个落脚点
ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量
ADD:从上下文目录中复制文件或者目录到容器里指定路径且ADD命令会自动处理url和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件、目录复制到新的一层的镜像内的<目标路径>位置
VOLUME :容器数据卷,用于数据保存和持久化工作(docker run -v /hoatData:/containerData:ro -d nginx作用相同)
CMD:指定一个容器启动时要运行的命令。Dockerfile 中可以存在多个 CMD 指令,仅最后一个生效且CMD会被docker run之后的参数替换
ENTRYPOINT :类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发

DockerFile 举例

VOLUME建立容器数据卷

[root@localhost jinjia523]# mkdir mydocker
[root@localhost jinjia523]# cd mydocker
[root@localhost mydocker]# pwd
/home/jinjia523/mydocker
[root@localhost mydocker]# vim Dockerfile
#volume test
from tomcat
volume ["/dataVolumeContainer1","/dataVolumeContainer2"]

[root@localhost mydocker]# docker build -f Dockerfile -t yctc/tomcat .
Sending build context to Docker daemon  2.048kB
Step 1/3 : from tomcat
 ---> 040bdb29ab37
Step 2/3 : volume ["/dataVolumeContainer1","/dataVolumeContainer2"]
 ---> [Warning] IPv4 forwarding is disabled. Networking will not work.
 ---> Running in 11bc537c8347
Removing intermediate container 11bc537c8347
 ---> 4d02f38439c1
Removing intermediate container baeeb5db3b1f
 ---> 647d4e9684c4
Successfully built 647d4e9684c4
Successfully tagged yctc/tomcat:latest
[root@localhost mydocker]# 

相关关键字的运用

FROM centos  #来源本地latest的centos
MAINTAINER jinxin<[email protected]> #设置作者信息
ENV MYPATH /tmp  #设置环境变量 MYPATH=/tmp
WORKDIR $MYPATH  #设置运行时工作目录WORKDIR
RUN yum -y install vim #安装vim命令
RUN yum -y install net-tools #安装网络工具
EXPOSE 80 #设置对外端口80
CMD /bin/cash #设置启动时运行的命令

猜你喜欢

转载自blog.csdn.net/u011581852/article/details/113062652