zoukankan      html  css  js  c++  java
  • docker基础命令

    1 docker镜像相关操作
    1.1 搜索官方仓库镜像
    [root@docker01 ~]#  docker search centos
    NAME                      DESCRIPTION                    STARS    OFFICIAL               AUTOMATED
    centos                    The official build of CentOS.  3992     [OK]      
    ansible/centos7-ansible   Ansible on Centos7             2                              [OK]
    列表说明
    参数 说明
    NAME 镜像名称
    DESCRIPTION 镜像说明
    STARS 点赞数量
    OFFICIAL 是否是官方的
    AUTOMATED 是否是自动构建的
    1.2 获取镜像
    根据镜像名称拉取镜像
    [root@docker01 ~]# docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    af4b0a2388c6: Downloading  34.65MB/73.67MB
    查看当前主机镜像列表
    [root@docker01 ~]# docker image list 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              ff426288ea90        3 weeks ago         207MB
    nginx               latest              3f8a4339aadd        5 weeks ago         108MB
    拉第三方镜像方法
    docker pull index.tenxcloud.com/tenxcloud/httpd
    1.3 导出镜像
    [root@docker01 ~]# docker image list 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              ff426288ea90        3 weeks ago         207MB
    nginx               latest              3f8a4339aadd        5 weeks ago         108MB
    # 导出
    [root@docker01 ~]# docker image save centos > docker-centos.tar.gz
    1.4 删除镜像
    [root@docker01 ~]# docker image rm centos:latest
    [root@docker01 ~]# docker image list 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              3f8a4339aadd        5 weeks ago         108MB
    2 导入镜像
    [root@docker01 ~]# docker image load -i docker-centos.tar.gz  
    e15afa4858b6: Loading layer  215.8MB/215.8MB
    Loaded image: centos:latest
    [root@docker01 ~]# docker image list 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              ff426288ea90        3 weeks ago         207MB
    nginx               latest              3f8a4339aadd        5 weeks ago         108MB
    3 查看镜像的详细信息
    [root@docker01 ~]# docker image inspect centos
    --inspect命令
    用于查看镜像和容器的详细信息,默认会列出全部信息
    2 容器的日常管理
    2.1 容器的起/停
    最简单的运行一个容器
    [root@docker01 ~]# docker run nginx
       容器内的第一个进程必须一直处于运行的状态,否则这个容器,就会处于退出状态!
    查看正在运行的容器
    [root@docker01 ~]# docker ps 
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    8708e93fd767        nginx               "nginx -g 'daemon of…"   6 seconds ago       Up 4 seconds        80/tcp              keen_lewin
    查看你容器详细信息/ip
    [root@docker01 ~]# docker container  inspect  容器名称/id
    查看你所有容器(包括未运行的)
    [root@docker01 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
    8708e93fd767        nginx               "nginx -g 'daemon of…"   4 minutes ago       Exited (0) 59 seconds ago                       keen_lewin
    f9f3e6af7508        nginx               "nginx -g 'daemon of…"   5 minutes ago       Exited (0) 5 minutes ago                        optimistic_haibt
    8d8f81da12b5        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 3 hours ago                          lucid_bohr
    停止容器
    [root@docker01 ~]# docker stop 容器名称/id 
    [root@docker01 ~]# docker container  kill  容器名称/id
    2.2 进入容器方法
    启动时进去方法
    [root@docker01 ~]# docker run -it #参数:-it 可交互终端
    [root@docker01 ~]# docker run -it nginx:latest  /bin/bash
    root@79241093859e:/#
    退出/离开容器
    1 ctrl+p & ctrl+q
    启动后进入容器的方法
    启动一个docker
    [root@docker01 ~]# docker run -it centos:latest 
    [root@1bf0f43c4d2f /]# ps -ef 
    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 15:47 pts/0    00:00:00 /bin/bash
    root         13      1  0 15:47 pts/0    00:00:00 ps -ef
    --attach命令
    docker attach命令进入容器,对应开发者很有用,可以连接到正在运行的容器,观察容器的运行状况,或与容器的主进程进行交互。
    [root@docker01 ~]# docker attach 1bf0f43c4d2f
    自命名启动一个容器 --name
    [root@docker01 ~]# docker attach 1bf0f43c4d2f
    exrc 进入容器方法(推荐使用)
    [root@docker01 ~]# docker exec -it 容器id或者名称  /bin/bash 
    [root@b20fa75b4b40 /]# 重新分配一个终端
    [root@b20fa75b4b40 /]# ps -ef 
    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 16:11 pts/0    00:00:00 /bin/bash
    root         13      0  0 16:14 pts/1    00:00:00 /bin/bash
    root         26     13  0 16:14 pts/1    00:00:00 ps -ef
    2.3 删除所有容器
    [root@docker01 ~]# docker rm -f  `docker ps -a -q`
    # -f 强制删除
    2.4 启动时进行端口映射
    -p参数端口映射
    [root@docker01 ~]# docker run -d -p 8888:80  nginx:latest 
    287bec5c602633c03e1fc5b0b8262fe76507be3dfae4ce5cd2ee2d1e8a89a9
    不同指定映射方法
    参数 说明
    -p hostPort:containerPort     端口映射  -p 8080:80
    -p ip:hostPort:containerPort  配置监听地址 -p 10.0.0.100:8080:80
    -p ip::containerPort          随机分配端口 -p 10.0.0.100::80
    -p hostPort:containerPort:udp 指定协议 -p 8080:80:tcp
    -p 81:80 –p 443:443           指定多个
    随机映射
    docker run -P (大P)# 需要镜像支持
    3 Docker 数据卷的管理
    把目录挂到docker中持久化 数据卷(文件或目录)
     -v  卷名:/data
     -v src(宿主机的目录):dst(容器的目录)
    3.1 挂载宿主机目录到docker中
    挂载卷
    [root@docker01 ~]# docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest
    079786c1e297b5c5031e7a8430c74e91ad065205043c60dbb78a259d09
    容器内站点目录: /usr/share/nginx/html
    在宿主机写入数据,查看
    [root@docker01 ~]# echo "http://www.nmtui.com" >/data/index.html
    [root@docker01 ~]# curl 10.0.0.100
    http://www.nmtui.com
    设置共享卷,使用同一个卷启动一个新的容器
    [root@docker01 ~]# docker run -d -p 8080:80 -v /data:/usr/share/nginx/html nginx:latest 
    351f0bd78d273604bd0971b3979aa0f3cbf45247274493d2490527babb4e42
    [root@docker01 ~]# curl 10.0.0.100:8080
    http://www.nmtui.com
    查看卷列表
    [root@docker01 ~]# docker volume ls
    DRIVER              VOLUME NAME
    3.2 创建卷后挂载
    创建一个卷
    [root@docker01 ~]# docker volume create 
    f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
    [root@docker01 ~]# docker volume ls 
    DRIVER              VOLUME NAME
    local               f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
    指定卷名
    [root@docker01 ~]# docker volume create smile
    [root@docker01 ~]# docker volume ls 
    DRIVER              VOLUME NAME
    local               smile
    local               f3b95f7bd17da220e63d4e70850b8d7fb3e20f8ad02043423a39fdd072b83521
    查看卷详细路径
    [root@docker01 ~]# docker volume inspect smile 
    [
        {
            "CreatedAt": "2018-02-01T00:39:25+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/smile/_data",
            "Name": "smile",
            "Options": {},
            "Scope": "local"
        }
    ]
    使用卷创建
    [root@docker01 ~]# docker run -d -p 9000:80 -v smile:/usr/share/nginx/html nginx:latest 
    1434559cff996162da7ce71820ed8f5937fb7c02113bbc84e965845c219d3503
    # 宿主机测试
    [root@docker01 ~]# echo 'blog.nmtui.com' >/var/lib/docker/volumes/smile/_data/index.html 
    [root@docker01 ~]# curl 10.0.0.100:9000
    blog.nmtui.com
    设置卷
    [root@docker01 ~]# docker run  -d  -P  --volumes-from 079786c1e297 nginx:latest 
    b54b9c9930b417ab3257c6e4a8280b54fae57043c0b76b9dc60b4788e92369fb
    查看使用的端口
    [root@docker01 ~]# netstat -lntup 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1400/sshd           
    tcp        0      0 10.0.0.100:2375         0.0.0.0:*               LISTEN      26218/dockerd       
    tcp6       0      0 :::9000                 :::*                    LISTEN      32015/docker-proxy  
    tcp6       0      0 :::8080                 :::*                    LISTEN      323/docker-proxy  
    tcp6       0      0 :::80                   :::*                    LISTEN      322/docker-proxy  
    tcp6       0      0 :::22                   :::*                    LISTEN      1400/sshd           
    tcp6       0      0 :::32769                :::*                    LISTEN      32300/docker-proxy  
    [root@docker01 ~]# curl 10.0.0.100:32769
    http://www.nmtui.com
    3.3 手动将容器保存为镜像
    本次是基于docker官方centos 6.8 镜像创建
       官方镜像列表:https://hub.docker.com/explore/
    启动一个centos6.8的镜像
    [root@docker01 ~]# docker pull  centos:6.8
    [root@docker01 ~]# docker run -it -p 1022:22 centos:6.8  /bin/bash
    # 在容器种安装sshd服务,并修改系统密码
    [root@582051b2b92b ~]# yum install  openssh-server -y 
    [root@582051b2b92b ~]# echo "root:123456" |chpasswd
    [root@582051b2b92b ~]#  /etc/init.d/sshd start
       启动完成后镜像ssh连接测试
    将容器提交为镜像
    [root@docker01 ~]# docker commit brave_mcclintock  centos6-ssh
    使用新的镜像启动容器
    [root@docker01 ~]# docker run -d  -p 1122:22  centos6-ssh:latest  /usr/sbin/sshd -D 
    5b8161fda2a9f2c39c3c67e2eb9274977e7723fe51f08a0190217ae93094
    在容器安装httpd服务
    [root@5b8161fda2a9 /]#  yum install httpd -y
    编写启动脚本脚本
    [root@5b8161fda2a9 /]# cat  init.sh 
    #!/bin/bash 
    /etc/init.d/httpd start 
    /usr/sbin/sshd -D
    [root@5b8161fda2a9 /]# chmod +x init.sh 
    # 注意执行权限
    再次提交为新的镜像
    [root@docker01 ~]# docker commit  5b8161fda2a9 centos6-httpd 
    sha256:705d67a786cac040800b8485cf046fd57b1828b805c515377fc3e9cea3a481c1
    启动镜像,做好端口映射。并在浏览器中测试访问
    [root@docker01 ~]# docker run -d -p 1222:22 -p 80:80  centos6-httpd /init.sh 
    46fa6a06644e31701dc019fb3a8c3b6ef008d4c2c10d46662a97664f838d8c2c
  • 相关阅读:
    Bone Collector II(背包 求第k优解)
    How Many Answers Are Wrong (彻底理解带权并查集)
    System Testing(Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round))D
    Rikka with Minimum Spanning Trees徐州区域赛a题
    cin加速语句
    牛客练习赛41 b 666RPG (01背包)
    js字符串拼接优化
    nodejs中使用递归案例
    thunk的主要用法
    $in的方法总结
  • 原文地址:https://www.cnblogs.com/--smile/p/11692866.html
Copyright © 2011-2022 走看看