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

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

docker searchsearch the docker hub for images
docker (image) pullpull an images or a repository from a registry
docker images/docker image lslist images
docker createcreate a new container
docker (container) startstart one or more stopped contrainers
docker (container) runrun a command in a new container
docker attachattach to a running container
docker ps/docker container lslist contrains
docker (container) logsfetch tho logs of a container
docker restartrestart a container
docker (container) stopstop one or more running containers
docker killkill one or more running containers
docker (image) rmremove one or more image
docker network ls查看docker使用的网卡
docker inspectReturn 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

12-13 18:52
查看更多