首页 > 其他 > 详细

docker 常用操作

时间:2019-11-30 17:35:08      阅读:69      评论:0      收藏:0      [点我收藏+]

下面的命令加上括号的是新版本的命令,去掉括号是老版本的命令。

在任何命令后加:--help,就会提示处这些命令的具体用法与参数。

docker命令 命令解释说明
docker search search the docker hub for images
docker (image) pull pull an images or a repository from a registry
docker images/docker image ls list images
docker create create a new container
docker (container) start start one or more stopped contrainers
docker (container) run run a command in a new container
docker attach attach to a running container
docker ps/docker container ls list contrains
docker (container) logs fetch tho logs of a container
docker restart restart a container
docker (container) stop stop one or more running containers
docker kill kill one or more running containers
docker (image) rm remove one or more image
docker network ls 查看docker使用的网卡
docker inspect Return low-level information on Docker objects。查看某个运行中的contain的详细信息(里面有IP地址),参数是contain的名字(启动container时用--name选项指定的名字),注意不是ID。

container里面运行的进程一定不能设置成是后台运行,如果是后台运行的话,container会立即自动终止。所以nginx container的话,里面启动nginx的命令一定有【-g】选项。

  • docker search:查找docker,比如查找nginx

    在dockerhub网站上搜索nginx,在【TAG】标签里发现有很多版本。官方nigix docker里面装的操作系统好像是ubuntu,所以你下载的nginx的docker image里就有一个ubuntu系统,这个系统里好像除了nginx必要的依赖工具外,什么都没有装,但是也的40多M。

    在众多版本里有一种的size最小是xxx-alpine,Alpine也是一个Linux的发行版,特定是体积小,nginx的alpine版本的size是8M左右。

    由于docker hub里的镜像都没有安装调试工具,所以,在真正的项目上,一般都是安装好调试工具,自己打包,做出一个image,然后上传的自己的私有docker hub上。

  • docker (image) pull:从docker hub上拉一个alpine系统下的稳定版本的nginx到本地

    # docker image pull nginx:stable-alpine
  • docker images/docker image ls:查看本地安装了哪些的docker镜像

    [root@localhost yum.repos.d]# docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               stable-alpine       aaad4724567b        5 weeks ago         21.2MB
  • docker image rm:删除一个镜像文件。

  • docker (container) run:如果本地没有镜像文件,则会自动到仓库里下载。

    $ docker container run --help
    Usage:  docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

    OPTIONS

    需求1:如果要想和docker container交互,必须指定-t-i

    • -t:指定终端。
    • -i:标识可以和docker container交互

    需求2:给要启动的docker contain一个名字。

    • --name:起名字。

    需求3:让启动的container在后台运行(不占用当前shell进程)。

    • -d: Run container in background and print container ID

      例子:启动nginx

      docker container run --name n12 -d nginx:stable-alpine

      sudo docker container ls查看的结果如下,

      CONTAINER ID     IMAGE                 COMMAND                  PORTS    NAMES
      6e63af9a4300     nginx:stable-alpine   "nginx -g 'daemon of…"   80/tcp   n12
      • PORTS:nginx使用的端口和网络层协议的种类(这里是使用TCP协议)。
  • docker network ls:查看docker使用的网卡。有下面3个就OK。

    [root@localhost yum.repos.d]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    d410575399eb        bridge              bridge              local
    a36f938bc6c6        host                host                local
    55ee9a442ee8        none                null                local

    安装完docker后,使用ifconfig,可以发现多出个docker0网卡,IP是172.17.0.1。这个网卡的连接方式是【NAT bridge】,既不是【NAT】,也不是【bridge】。container里的进程要想和外网通信的话,要通过别的网卡(enp0s3)才可以。

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:5b:c3:2c:80  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.65.81  netmask 255.255.255.0  broadcast 192.168.65.255
    

    container启动后,里面操作系统的网段就是172.17的

    例子:启动busybox

    # docker container run --name b1111 -it busybox

    然后在busybox里面运行ifconfig命令,发现ip地址是172.17.0.2,和网卡docker0在同一个网段。

    然后再运行:docker container ls,就可以看到在names的地方是b1111。

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    f0f38cba6c5b        busybox             "sh"                5 minutes ago       Up 5 minutes                            b1111
    • CONTAINER ID:一个ID
    • IMAGE:哪个image
    • COMMAN:当前镜像里运行的是什么进程
  • docker container start:启动container

    Usage:  docker container start [OPTIONS] CONTAINER [CONTAINER...]
    
    Start one or more stopped containers
    
    Options:
      -a, --attach                  Attach STDOUT/STDERR and forward signals
          --checkpoint string       Restore from this checkpoint
          --checkpoint-dir string   Use a custom checkpoint storage directory
          --detach-keys string      Override the key sequence for detaching a container
      -i, --interactive             Attach container's STDIN
  • docker container stop:停止container

  • docker container rm :删除container,参数是container的名字。删除后用docker container ls -a也看不到这个container。如果是stop一个container,那么用docker container ls -a还是可以看到这个container的。

  • docker (container) logs:查看container中进程产生的日志内容。比如查看nginx的日志。然后把日志直接输出到控制台。

    # docker container logs n12
    172.17.0.1 - - [30/Nov/2019:08:52:19 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
    

docker container状态转换图:

技术分享图片

c/c++ 学习互助QQ群:877684253

技术分享图片

本人微信:xiaoshitou5854

docker 常用操作

原文:https://www.cnblogs.com/xiaoshiwang/p/11963281.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!