zoukankan      html  css  js  c++  java
  • Docker 安装卸载及常用命令

    Docker安装卸载及常用命令

    官方手册请点击 > 官方安装手册

    学习请点击 > 理论知识 

    CentOS 7.6.1810 安装步骤如下:

     1   $ sudo yum install -y yum-utils      # 安装依赖
     2   device-mapper-persistent-data 
     3   lvm2
     4   
     5    $ sudo yum-config-manager          # 安装配置管理
     6   --add-repo 
     7   https://download.docker.com/linux/centos/docker-ce.repo
     8 
     9   $ sudo yum-config-manager --enable docker-ce-nightly
    10   $ sudo yum-config-manager --enable docker-ce-test
    11 
    12   $ sudo yum install docker-ce docker-ce-cli containerd.io
    13 
    14   $ sudo systemctl start docker       # 启动docker
    15   $ sudo systemctl status docker       # 查看docker状态
    16   $ sudo docker run hello-world        # 运行hello-world
    17   $ sudo docker images hello-world
    18 
    19   $ sudo docker run hello-world       # 使用hello-world测试安装是否成功
    20 
    21   $ sudo systemctl enable docker        # 开机启动

     卸载docker

    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine 
               docker-ce
    $ sudo rm -rf /var/lib/docker

    docker常用指令

    最常用的docker客户端:docker,也可通过REST API与服务器通信;

    安装compose(Docker-Compose是一个可以自动化的脚本工具。)

    sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose --version

    vim docker-compose.yml
    wordpress:
        image: wordpress
        ports:
            - "8022:80"
        environment:
            WORDPRESS_DB_PASSWORD: <passwd>
        links:
            - wordpress_mysql:mysql
        container_name: wordpress_wordpress
     
    wordpress_mysql:
        image: mysql
        environment:
            MYSQL_ROOT_PASSWORD: <passwd>
        container_name: wordpress_mysql
     
    docker-compose -f docker-compose.yml up -d
     systemctl status docker.service                       # 查看docker状态
    systemctl daemon-reload                          # 重启docker daemon
    systemctl restart docker.service                 # 重启docker服务
    docker -H 192.168.1.2 info                       # -H参数可与远程服务器通信 vim /etc/systemd/system/multi-user.target.wants/docker.service   # 默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求;允许远程客户端请求,需要在配置文件中打开 TCP 监听

    ExecStart/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0
    docker run -d -p 80:80 httpd        # 启动 httpd 容器,并将容器的80端口映射到 host 的80端口
    docker run -d -p 8080:80 httpd       # 8080是host端口,80是images端口
    docker images                   # 查看下载到本地的镜像
    docker images httpd              # 查看httpd镜像信息
    docker ps 或者 docker container ls       # 显示当前运行容器

    CLI或API启动、停止、移动或删除容器

    docker pull                         # 从Registry下载镜像
    docker pull hello-world                # 用来验证docker是否安装成功
    docker pull centos                   # 下载centos base镜像
    docker images centos                  # 查看镜像信息
    docker run                             # 下载镜像并启动容器
    docker run hello-world                           # 运行hello-world
    docker run centos pwd                     # 直接运行命令
    docker run -it centos                    # 启动并进入 CentOS 容器(互动模式)
    docker run haproxy                       # 可研究负载均衡软件HAProxy
    docker run django                        # 学习使用django开发python web应用
    docker run -it centos                    # 运行容器。(-it以交互模式进入容器)
    docker run -it 22d31cc52b3e                 # 对镜像进行调试
    docker run centos-nmap:v1.0 yum install -y nmap  # 为镜像安装nmap
    docker start ContainerID                  # 启动容器
    docker ps                           # 查看运行的容器,并获得names
    docker commit names mycentos              # 创建为新镜像(官方不建议)
    docker run -tdi --privileged centos init       # 其中centos为镜像,不是名称
    docker build -t centos-vi.                 # 创建新镜像,官方推荐,-t命名,命令末尾的.指明build context为当前目录。
    docker build --no-cache -t mycentos          # 构建镜像时不使用缓存
    docker history mycentos                  # 显示镜像的构建历史
    docker rmi debian:tag                    # 删除host中的镜像,只有最后一个tag被删除才真被删除
    docker rm containerID                    # 删除container
    docker search httpd                      # 搜索hub中的镜像
    docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q )  # 查询依赖
    docker ps -a                          # 查看所有Container
    docker tag mycentos mycentos:0.0.1            # 给镜像打tag
    docker login -u 13366969672                # 登录docker hub
    docker tag httpd 13366969672/httpd            # 修改镜像的registry
    docker push 13366969672/httpd               # 上传镜像至docker hub

    搭建本地registry说明,请点击我

    docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2  # 运行自己的registry
    docker tag 133/httpd:v0.1 hostname:5000/133/httpd:v0.1            # 重命名镜像使之与registry匹配
    docker push hostname:5000/133/httpd:v0.1                     # 上传镜像至本地registry
    docker pull hostname:5000/133/httpd:v0.1                      # 从本地registry下载镜像
    docker images hostname:5000/133/httpd:v0.1                   # 查看镜像

    registry安全传输https特性:请点击我 

    docker run -d centos /bin/bash -c "while true; do sleep 1;done"      # 后台长期运行容器
    docker stop fe39cc2ccc8b                                # 停止一个容器
    docker run --name "my_http_server" -d httpd                   # 启动容器并命名为my_http_server,-d为后台运行
    docker run -d centos /bin/bash -c "while true; do sleep 1; echo I_am_in_container;done" # 获取长ID
    docker attach 长ID                                            # 进入容器命令终端,ctrl +p or +q退出
    docker exec -it ID bash                                         # 进入容器命令终端
    docker exec -it <container> bash|sh                                  # 常用格式,exit退出
    docker logs -f ID                                               # 查看启动命令的输出
    docker (start stop kill restart pause) ContainerID                        # 启动、停止、杀死、重启、暂停容器
    docker stop $(docker ps -a -q)                                       # 停止所有container
    docker rm $(docker ps -a -q)                                           # 删除所有container
    docker rm -v $(docker ps -aq -f status=exited)                            # 删除所有退出的container
    docker rmi $(docker images -q)                                       # 删除所有images
    docker run -d --restart=always httpd                                    # 重启容器,stop或kill的不重启
    docker run -d --restart=failure:3 httpd                                  # 重启容器最多3次
    docker pause names                                              # 暂停容器
    docker unpause names                                             # 恢复运行
    docker create                                  # container处于created状态
    docker start                                  # 后台启动容器
    docker run                                    # 是create和start的组合
    docker run -m 200M --memory-swap=300M centos                        # 设置内存+swap进行限额,默认没有限制;只有内存,没有内存+swap时,默认后者是两倍
    docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M  # images对容器进行压力测试
    docker run --name "container_A" -c 1024 centos                 # 设置CPU share
    docker run --name container_A -it -c 1024 progrium/stress --cpu 1
    docker run --name container_B -it -c 512 progrium/stress --cpu 1      # 进行压力测试,使用top查看
    docker run -it --name container_A --blkio-weight 600 centos
    docker run -it --name container_B --blkio-weight 300 centos         # 设置blkio-weight,默认500,磁盘的读写带宽

    bps 是 byte per second,每秒读写的数据量。iops 是 io per second,每秒 IO 的次数
    docker run -it --device-write-bps /dev/sda:30M centos            # 限制容器/dev/sda的速率为30M/s
    time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct        # 测试硬盘读写

    cgroup 实现资源限额, namespace 实现资源隔离( 六种资源:Mount、UTS、IPC、PID、Network 和 User )

    docker run -it --cpu-shares 512 progrium/stress -c 1
    docker ps                              # 查看短ID
    ls /sys/fs/cgroup/cpu/docker/短ID Tab             # 查看cpu.shares设置
    /sys/fs/cgroup/memory/docker/短ID Tab
    /sys/fs/cgroup/blkio/docker/短ID Tab
    docker run -h myhost -it centos                # 设置容器的主机名
    docker network ls                   # 查看docker网络
    docker run -it --network=none centos      # 容器指定使用none网络(什么都没有的网络)
    docker run -it --network=host centos      # 指定host网络,配置与主机完全一致,使用ip l
    yum install bridge-utils             # 安装brctl
    brctl show                      # 查看网桥
    docker network inspect bridge          # 查看网桥配置信息
    user-defined 网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan 
    docker network create --driver bridge my_net                              # 创建默认的bridge网络
    docker network inspect my_net                                        # 查看刚创建网桥
    docker network create --driver bridge --subnet 10.113.0.0/24 --gateway 10.113.0.1 my_net   # 为自己创建的网桥指定网段,只有使用 --subnet 创建的网络才能指定静态 IP
    docker run -it --network=my_net centos                                 # 使用新的网络
    docker run -it --network=my_net --ip 10.113.0.2 centos                       # 配置静态ip地址
    ip r                                                       # 查看路由信息
    sysctl net.ipv4.ip_forward                                         # 查看转发是否启用,1为启用
    iptables-save                                                 # 查看防火墙
    docker network connect my_net centos短ID                                # 为centos添加一块my_net网卡
    docker run -it --network=my_net2 --name=bbox1 busybox
    docker run -it --network=my_net2 --name=bbox2 busybox                        # 为容器命名,并实现网络通
    docker DNS 有个限制:只能在 user-defined 网络中使用

    docker run -it --network=container:web1 centos                   # 通过--network=container:web1 指定 jointed 容器为 web1
    dcoker exec -it web1 bash
    ip a                                               # 查看web1的网络    35章
    joined容器可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信
    docker run -it --network=container:web1 mycentos                   # 指定用joined容器
    iptables -t nat -S                                      # 查看防火墙NAT配置
    tcpdump -i docker0 -n icmp                                 # 监控网卡数据包
    docker port 8a6d08d05557                                  # 查看端口映射
    docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd       # 将$HOME/htdocs mount到容器上
    docker inspect containerID                                 # 查看容器信息
    docker volume ls                                        # 查询volume name
    docker volume inspect 'volume name'                            # 查看volume
    docker cp /home/index.html containerID:/usr/local/apache2/htdocs         # 容器与host之间拷贝数据
    volume container 是专门为其他容器提供 volume 的容器
    docker create --name vc-data /home/jinbian/var/vc-data:/usr/local/httpddata -v /var/useful/vc-data mycentos # 创建volume container
    docker inspect vc-data                                                      # 查看volume container
    docker run --name web1 -d -p 80 --volumes-from vc-data httpd                              # 容器启动并使用vc-data
    docker volume ls                                                          # 查看数据
    docker volume rm id                                                        # 删除数据

    指令导图

    Docker 导图学习

     

    运动可以增加体力;读书可以增加知识; 自古只有天才的学生,没有天才的老师; 猴子不上树是看不见红屁股的, 人不做事情是看不出能力的。 时间花在那儿,擅长就在那儿。 钱花完了可以再赚,时间花了便一去不复返。
  • 相关阅读:
    692. Top K Frequent Words
    659. Split Array into Consecutive Subsequences
    hdu5015矩阵快速幂
    codefroces 450B矩阵快速幂
    ural Ambitious Experiment 树状数组
    poj3254 状态压缩dp
    poj2686 状压dp入门
    hdu4763 kmp
    hdu4847 kmp
    hdu3294 manacher
  • 原文地址:https://www.cnblogs.com/shuter/p/11281196.html
Copyright © 2011-2022 走看看