docker -学习笔记(docker基本容器操作指令)

参考:Learn X in Y minutes

docker指令参考:https://www.runoob.com/docker/docker-command-manual.html

下载安装
省略

一、容器的管理

1.docker version
# 拉取hello-world镜像
docker pull hello-world

# 使用hello-world创建并运行一个容器
docker run hello-world
3. 在新的虚拟bash环境,运行ubuntu 容器(container)
 docker run -it ubuntu
lxg@lxg-opt:~/00$  docker run -it ubuntu   

root@8e4715eb71a3:/#     

4. 查看当前正在运行的image,(container化的image)

docker ps

或 docker container ls

5. 查看当前所有的image 

 docker ps  -a

lxg@lxg-opt:/$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
8e4715eb71a3        ubuntu              "/bin/bash"         2 minutes ago       Up 2 minutes                                       affectionate_fermi
e2d00352b256        ubuntu              "/bin/bash"         4 minutes ago       Exited (130) 4 minutes ago                         nostalgic_pascal
4243d653b7a6        ubuntu              "/bin/bash"         About an hour ago   Exited (0) About an hour ago                       nervous_franklin
6cb28f6e4c68        ubuntu              "-network host"     About an hour ago   Created                                            naughty_bhabha
104c2d24f695        ubuntu              "--network host"    About an hour ago   Created                                            pensive_villani

   up:正在运行

   exited:以前运行的容器已经退出了

   created:创建

5. 删除以前生成的image(用CONTAINER id或name)

docker rm pensive_villani 或
docker rm 104c2d24f695 
# 删除所有容器
docker rm $(docker ps -a -q)
# 删除所有退出的容器
docker container prune

6. 运行image, 为相应的container 定制名称:

运行hello-world镜像,容器名称是test_container,查看结果:
docker run --name test_container hello-world
lxg@lxg-opt:/$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
4639fda59506        hello-world         "/hello"            6 seconds ago       Exited (0) 4 seconds ago                          test_container

7.容器和host之间复制文件

(1)确认容器
$ docker ps
CONTAINER ID  IMAGE    COMMAND  CREATED      STATUS      PORTS  NAMES
72ca2488b353  my_image          X hours ago  Up X hours         my_container
(2)从host拷贝到容器:
$ docker cp foo.txt 72ca2488b353:/foo.txt

   (3)容器拷贝到host:

$ docker cp 72ca2488b353:/foo.txt foo.txt

8. 进入容器。

(1)进入正在运行的容器
$ sudo docker exec -it 775c7c9ee1e1 /bin/bash

 或者

 $ sudo docker attach 容器ID
(2)另外一种启动容器的方式就是启动一个已经停止运行的容器:
docker start container_id

  (3)要停止正在运行的容器可以使用docker container stop或docker stop命令,如下:

   docker stop container_id

(4)创建守护状态的新容器
  
$ sudo docker run -itd ubuntu:14.04 /bin/bash  
二、镜像image的管理

1 # 列出所有镜像

   docker image ls   

  简写:docker images

2#拉取镜像 

 (1)docker pull centos

(2)docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

   拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。

   (3)上面使用CentOS,因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:

 docker pull library/centos:latest

 (4)如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:

  docker pull mysql/mysql-server:latest

(5) 通过镜像创建一个容器

docker run -it centos /bin/bash

(6)删除镜像, 注意如果镜像的容器未删除,则镜像不可删除
dockere image rm image_name/image_id

 三、小总结

没有运行着的容器
lxg@lxg-opt:/$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

查看所有容器,不论是否运行
lxg@lxg-opt:/$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
e7b5b96a7149        ubuntu              "/bin/bash"         16 hours ago        Exited (0) 2 minutes ago                        hopeful_davinci

 运行容器的2中模式

lxg@lxg-opt:/$ docker start  hopeful_davinci   #运行这个容器,但不进入终端交互模式
lxg@lxg-opt:/$ docker start -i hopeful_davinci  #运行这个容器,并进入终端交互模式
 注意,通过docker start启动多个终端,是无效的,会重复一个command,需要用docker exec启动多个终端。

运行了

lxg@lxg-opt:/$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7b5b96a7149 ubuntu "/bin/bash" 16 hours ago Up 2 seconds hopeful_davinci

 上述,虽然运行了,但没进入容器,不是交互模式,可以用docker exec进入交互模式

lxg@lxg-opt:/$ docker exec -it hopeful_davinci bash
root@e7b5b96a7149:/# 

用法: docker exec -it containerName bash

 docker exec只能进入运行着的容器,如果容器未运行,则不可进入。


四、docker组织和架构

lxg@lxg-opt:/$ docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:19:38 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       2d0083d
  Built:            Thu Aug 15 15:12:41 2019
  OS/Arch:          linux/amd64
  Experimental:     false
lxg@lxg-opt:/$ 

可以看到,安装了docker后,宿主机器会有client和server ,而registry在远程的 docker hub (类似于github)






原文地址:https://www.cnblogs.com/lxgbky/p/12974157.html