docker基本操作

docker基本

1.换源

vi /etc/docker/daemon.json

"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]

2.拉取并启动容器

docker以ubuntu15.10镜像创建一个新容器,然后在容器里执行/bin/echo 'test',输出结果

docker run ubuntu:15.10 /bin/echo 'test'

docker进入终端模式 -i输入流 -t打开终端

docker run -i -t ubuntu:15.10 /bin/bash

exit退出终端,退出容器

后台模式启动容器

docker run -d ubuntu:15.10 /bin/sh -c "sleep test"

查看后台运行容器

docker ps

  • container id:容器id

  • image:使用的镜像

  • command:启动容器时运行的命令

  • created:容器的创建时间

  • status:容器状态

    • created(已创建)
    • restarting(重启中)
    • running或up(运行中)
    • removing(迁移中)
    • paused(暂停)
    • exited(停止)
    • dead(死亡)
  • ports:容器的端口信息和使用的连接类型(tcp/udp)

  • names:自动分配的容器名称

docker logs (commonid/name)查看容器内的标准输出

docker logs 1231313

docker stop (commonid/name)停止容器

3.容器使用

获取镜像

docker pull ubuntu

使用ubuntu镜像启动一个容器

docker run -it ubuntu /bin/bash

参数说明:

 -i:交互式操作
 -t:终端
 ubuntu:ubuntu镜像
 /bin/bash:放在镜像后的命令,进入终端bash命令
 退出终端 exit

启动已停止运行的容器

查看所有的容器命令

docker ps -a

使用docker start (commonid/name)启动一个已停止的容器

docker start b750bbbcfd88

进入一个已启动的容器

docker attach b750bbbcfd88

后台运行-d,加了-d参数默认不会进入容器,想要进入容器需要使用docker exec

docker run -itd --name ubuntu-test ubuntu /bin/bash

docker exec -it 123133 /bin/bash

停止一个容器

docker stop commonid

重启容器

docker restart commonid

进入容器

加-d参数,容器进入后台,可以使用下面的命令进入容器

docker attach commonid

docker exec commonid 退出容器终端,不会导致容器停止

4.导出和导入容器

导出容器

docker export commonid > ubuntu.tar

导入容器快照为镜像

docker import ubuntu.tar ubuntu:1510

docker import http://example.com/exampleimage.tgz example/imagerepo

查看镜像

docker images

删除镜像

docker image rm name:tag

删除容器

docker rm -f commonid

清理掉所有处于终止状态的容器

docker container prune

5.运行一个web应用

docker pull training/webapp 载入镜像

-d让容器后台运行

-P将容器内部使用的网络端口随机映射到我们使用的主机上

docker run -d -P training/webapp python app.py

docker run -d -p 5000:5000 training/webapp python app.py

查看后台运行状态

docker ps

查看容器端口

docker port commonid

查看web应用日志

docker logs -f commonid

查看web应用容器的进程

docker top commonid

使用docker inspect查看docker底层信息

docker inspect name

docker ps -l查询最后一次创建的容器

docker镜像使用

列出镜像列表

docker images

使用镜像运行容器

docker run -tid ubuntu:15.10 /bin/bash

获取一个新的镜像

docker pull ubuntu:13.10

使用镜像运行容器

docker run -tid ubuntu:13.10 /bin/bash

查找镜像

docker search httpd

运行镜像

docker run httpd

删除镜像

docker rmi httpd

创建镜像

1. 从已经创建的容器中更新镜像,并且提交这个镜像
2. 使用dockerfile指令来创建一个新的镜像
更新镜像
    1.  使用镜像来创建一个容器,在容器中使用apt-get update更新,exit退出容器

    2.  换源更新下载vim 
 
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
    echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
    echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
    echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list 
    
    docker run -it ubuntu:15.10 /bin/bash

    -m:提交的描述信息 -a:指定镜像作者 1231123:容器id runoob/ubuntu:v1:指定要创建的目标镜像名
    
    docker commit -m="update" -a="runoob" 131313 runoob/ubuntu:v1
    
    docker tag ivan/gcc:v1 843741683/gcc:v1
    
    docker push 843741683/gcc:v1
    
    docker images 
    
    查看更新的镜像
构建镜像
    docker build 创建一个Dockerfile告诉docker如何构建我们的镜像

    
    FROM centos:6.7
    RUN /bin/echo 'root:123456'|chpasswd
    RUN useradd runoob
    RUN /bin/echo 'runoob:123456'|chpasswd
    RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
    EXPOSE 22
    EXPOSE 80
    CMD /usr/sbin/sshd -D 
    

    -t:指定要创建的目标镜像名 
    .:dockerfile文件所在的目录
    docker build -t runoob/centos:6.7 .
    docker images
    docker run -it runoob/centos:6.7 /bin/bash
设置镜像标签
    docker tag commonid runoob/centos:dev

6.docker容器链接

1.网络端口映射

-P:是容器内部端口随机映射到主机的高端口

-p:是容器内部端口绑定到指定的主机端口

指定ip端口udp

docker run -d -P training/webapp python app.py

docker ps

docker run -d -p 5000:5000 training/webapp python app.py

docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py

docker port name 5000

2.docker 容器互联

docker连接会创建一个父子关系,其中 父容器可以看到子容器的信息

容器命名 --name

docker run -d -P --name runoob training/webapp python app.py

docker ps -l

3.新建网络

-d:参数指定docker网络类型,有bridge.overlay

docker network create -d bridge test-net

docker network ls

docker run -itd --name test1 --network test-net ubuntu /bin/bash

docker run -itd --name test2 --network test-net ubuntu /bin/bash

apt-get update 

apt install iputils-ping

docker exec -it test1 /bin/bash

ping test2

配置dns

查看容器dns信息

docker run -it --rm  ubuntu cat etc/resolv.conf

-rm:容器退出时自动清理容器内部的文件系统

-h hostname或者--hostname=HOSTNAME:设定容器的主机名,它会被写到容器内的/etc/hostname和/etc/hosts

--dns=ip_address:添加dns服务器到容器的/etc/resolv.conf,让容器用这个服务器来解析所有不在/etc/hosts中的主机名

--dns-search=DOMAIN:设定容器的搜索域,当设定搜索域为.com

docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu

7.docker仓库管理

docker hub

docker login

docker logout 

docker search ubuntu

docker pull ubuntu

docker image ls

docker push ubuntu:18.10

docker search ubuntu:18.10

8.使用Dockerfile定制镜像

FROM centos
RUN yum install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz

你可能感兴趣的:(docker基本操作)