docker入门指南

作者: TZX_0710 | 来源:发表于2020-08-05 19:20 被阅读0次

    docker是什么?

    1. docker是一个可以创建、管理容器的仓库。docker里面可以存放很多容器
    2. 一个容器就是一个精简版本的linux系统
    3. 容器的创建依赖于镜像,镜像可以看作是一个模板,我们可以采用这个模板直接使用 或者基于这个模板干更多事情
    4. 容器方便移植,如果当前容器有mysql、等系统环境那么我们可以在环境迁移的时候快速进行迁移环境打包迁移。
    #下载yum-utils工具包
    yum install -y yum-utils
    #配置下载地址
    yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
    #查看docker镜像版本
    yum list docker-ce --showduplicates |sort -r
    #安装docker
    yum install 18.03.1.ce-1.el7.centos
    #启动docker
    systemctl start docker
    #docker加入自启动
    systemctl enable docker
    #查看docker版本
    docker version
    

    docker 安装nginx

    docker pull  nginx 默认最新版本 如果需要指定版本则nginx:version
    #查看镜像
    docker images
    
    docker images

    启动docker镜像

     docker run -d -p 82:80 --name mynginx nginx
    
    运行docker的nginx  -d 后台运行 -p 宿主机的82端口映射 nginx的80端口 --name 自定义容器名称 nginx 运行的镜像名称 容器名称
    >>Error response from daemon: driver failed programming external connectivity on endpoint mynginx (43986b3a322d708d63bef2e3f4e215351a8e2edd13bada4b44f123841e24a168):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 82 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
     (exit status 1)).
    
    原因是 重启了防火墙 所以出现该错误 重启docker容器
    systemctl restart docker
    
    >> Error response from daemon: Conflict. The container name "/mynginx" is already in use by container "fe89e6eb7e8e1e67dfc580781c3f62442799e0a51f108f3ecdbfc404c2bc78ab". You have to remove (or rename) that container to be able to reuse that name.
    解决方案 删除指定的id
    docker rm  fe89e6eb7e8e1e67dfc580781c3f62442799e0a51f108f3ecdbfc404c2bc78ab
    

    进入运行容器

    docker exec -it mynginx 
    配置nginx文件
    vim /etc/nginx/conf.d
    修改完成 
    exit退出容器 重启容器
    

    docker常用命令

    #查看所有镜像
    docker images 
    #查询镜像 
    docker search nginx
    #拉取镜像
    docker pull nginx 默认拉取的是版本最新的
    #启动容器
    docker run -d -p port:containerPort --name 自定义容器名称  nginx(容器名称)
    #关闭
    docker stop containerId (Name)
    #重启容器服务
    docker restart containerId
    #进入容器 (伪终端)
    docker exec -it mynginx bash
    #kill运行中的容器
    docker kill containerId
    #删除镜像 
    docker rmi containerId(Name也可以)
    #强制性删除在运行的
    docker rmi -i containerId(Name 也是可以的)
    #删除本地全部镜像
    docker rmi -f $(docker images -q)
    #删除多个镜像
    docker rmi -f  containerId_1 containerId_2
    #删除容器并且删除挂载点的数据卷
    docker rm -v nginx
    #查看运行中的docker
    docker ps 
    #查找之前运行过的容器 (有时候容易忘记之前的容器ID 你有可能会重新创建一个  没有这个必要 直接查找 重启一下就可以了)
    docker ps -a 
    #查看运行的容器大小
    docker ps -s 
    #docker 传输宿主机文件到容器
    docker cp /usr/local/index.html containerId:/usr/local/
    #docker传输容器文件到宿主机
    docker cp containerId:/usr/local  /usr/local
    

    docker容器外部挂载

    什么是docker容器外部挂载?

    把宿主机的文件跟容器当中的文件做映射,比如我在宿主机创建了一个nginx的conf文件,那么我希望容器采用这一份配置文件作为启动配置。

    docker run --name mynginx -d -p 80:80 \
    -v /nginx/html:/usr/share/nginx/html \
    -v /nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
    -v /nginx/logs:/var/log/nginx \
    nginx
    -d 守护进程的方式运行
    -p 端口映射
    -v  宿主机的文件目录:映射的文件地址
    nginx  镜像
    

    Docker问题集锦

    1.error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/
    拉取镜像的时候报错
    解决方案:
    vim /etc/resolv.conf #添加如下
    nameserver 8.8.8.8
    

    相关文章

      网友评论

        本文标题:docker入门指南

        本文链接:https://www.haomeiwen.com/subject/vktorktx.html