Docker

Posted oyoui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker相关的知识,希望对你有一定的参考价值。

 

Docker

##################### ubuntu安装docker  #####################

1. 安装前检查

    - 内核版本
        unamae -a
    - 检查Device Mapper是否存在
        ls -l /sys/class/misc/device-mapper

2. Docker推荐安装

    - whereis curl                        #查看curl命令是否存在
    - sudo apt-get install curl
    - curl -sSL https://get.docker.com/ubuntu/ | sudo sh
    - sudo docker version

3. 运行一个容器

    - sudo decker run ubuntu echo "Hello world"

4. 普通用户不用加sudo

    - sudo groupadd docker                    #增加一个用户组
    - sudo gpasswd -a ${USER} docker        #将当前用户增加到用户组中
    - sudo service docker restart             #重启服务
    - 重新进入shell

5. 创建容器两种方式:

    - docker run IMAGE [COMMAND] [ARG...]    #创建容器的格式
    - docker run --name=自定义名 -i -t IMAGE /bin/bash

    1. 执行一次就结束
        - sudo decker run ubuntu echo "Hello world"
    2. 交互式容器        
        - docker run -i -t IMAGE /bin/bash
            -i --interactive=true|false        #默认是false,接收输入
            -t --tty=true|false              #默认是false,分配一个伪终端
        - docker run -i -t ubuntu /bin/bash 

6. 查看容器
    
    1. docker ps -a                  #查看所有的容器
    2. docker inspect 容器id            #查看某个容器的详细信息


7. 重启容器

    - docker start -i 容器id

8. 守护式容器

    - control + Q                                 #退出,容器还在运行
    - docker run -d 镜像名 [COMMAND] [ARG...]    #启动守护式进程

9. 查看日志

    docker logs [-f] [-t] [--tail] 容器名
        -f  --follow=true|false           #默认为false,一直跟踪日志
        -t  --timestamps=true|false     #默认为false,为日志加上时间
        --tail                             #显示多少行日志,默认显示所有日志

10. 在已经运行的容器中启动新进程

    - docker exec [-d] [-i] [-t] 容器名[COMMAND] [ARG...]

11. 查看容器中的进程

    - docker top 进程id

12. 停止容器

    - docker stop 容器id                    #发送一个信号,等待容器的停止
    - docker kill 容器id                    #直接停止容器

13. 在容器中部署静态网站 - 设置容器的端口映射

    - run [-P] [-p]

        -P --publish-all=True|false                  #默认为false,为容器暴露所有的端口映射
            docker run -P -i -t ubuntu /bin/bash

        -p --publish=[]
            docker run -p 80 -i -t ubuntu /bin/bash                    #只指定容器的端口,宿主机的端口是随机映射的
            docker run -p 8080:80 -i -t ubuntu /bin/bash            #指定宿主机的端口和容器的端口
            docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash            #指定ip和容器的端口
            docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash    #指定ip宿主机端口和容器端口

14. 在容器中部署静态网站 - nginx部署流程

    - 创建映射80端口的交互式容器
        docker run -p 80 --name web -i -t ubuntu /bin/bash

    - 安装Nginx
        apt-get install -y nginx

    - 安装文本编辑器vim
        apt-get install vim

    - 创建静态页面
        mkdir -p /var/www/html
        cd /var/www/html
        vim index.html
            <h3>我是一只小小鸟</h3>

    - 修改Nginx配置文件
        whereis nginx
        ls /etc/nginx/sites-enabled
        vim /etc/nginx/sites-enabled/default
            root /var/www/html;    
                                #将网站的根目录切换
    - 运行Nginx
        nginx
        ps -ef
        control + q

    - 验证网站访问
        docker ps                             #查看正在运行的进程
        docker port web                        #查看端口映射
        docker top web                        #查看容器中的进程
        curl http://127.0.0.1:宿主机端口

    - 停止容器
        docker stop web

    - 启动容器
        docker start -i web
        ps -ef                             #发现重启后并没有nginx
        control + q
        docker exec web nginx              #在宿主机上启动容器的nginx
        docker top nginx                 #但是ip和端口都发生改变

 

以上是关于Docker的主要内容,如果未能解决你的问题,请参考以下文章

markdown docker-compose片段

sh Docker片段

《Docker 源码分析》全球首发啦!

docker 部署 coredns(内部域名解析)

docker 部署 coredns(内部域名解析)

将 Docker 容器限制为单个 cpu 核心