Docker部署和命令

作者: 极客与宽客 | 来源:发表于2019-04-04 09:47 被阅读3次

    Docker安装命令

    安装最新版本的Docker CE:

    $ sudo apt-get install -y docker-ce

    如果需要安装某个指定版本的Docker CE,而不是最新版本,可用下面命令列出可用的版本列表信息:

    $ sudo apt-cachemadison docker-ce

    第一列是包名,第二列是版本字符串,第三列是存储库名称,它标识出包来自哪个存储库,以及扩展它的稳定性级别。通一下命令安装指定版本的包:

    $ sudo apt-getinstall docker-ce=[版本字符串]

    docker安装验证:

    sudo docker -v

    启动Docker

    查看docker服务是否启动:

    $ sudo systemctl status docker

    如果Docker未启动,则启动Docker:

    $ sudo systemctl start docke

    运行Hello World,校验Docker是否安装成功:

    $ sudo docker run hello-world

    运行这个命令会下载一个hello-world的镜像, 并且运行在一个容器中。该容器运行时会有如下输出:

    Docker镜像常用命令

    sudo docker search java

    - NAME:镜像仓库名称。

    - DESCRIPTION:镜像仓库描述。

    - STARS:镜像收藏数,表示该镜像仓库的受欢迎程度,类似于GitHub的Stars。

    - OFFICAL:表示是否为官方仓库,该列标记为[OK]的镜像均由个软件的官方项目组创建和维护。由结果可知,java这个镜像仓库是官方仓库,而其他仓库都不是官方镜像仓库。

    - AUTOMATED:表示是否为自动构建镜像仓库。

    下载镜像

    使用docker pull命令即可从Docker Registry上下载镜像,例如:

    $ sudo docker pull java

    执行该命令后,Docker会从Docker Hub中的java仓库下载最新版本的java镜像。若镜像下载缓慢,可配置镜像加速器。

    该命令还可指定想要下载的镜像标签以及Docker Registry地址,例如:

    $ sudo docker pull reg.itmuch.com/java:8 这样就可以从指定的Docker Registry中下载标签为8的Java镜像。

    列出本地镜像,使用docker images命令即可列出一下载的本地镜像列表。

    该表格包含了5列,含义如下:

    - REPOSITORY:镜像所属仓库名称

    - TAG:镜像标签。默认是latest,表示最新。

    - IMAGE ID:镜像ID,表示镜像唯一标标识

    - CREATED:镜像创建时间

    - SIZE:镜像大小

    删除本地镜像:使用docker rmi命令即可删除指定镜像

    sudo docker rmi hello-world

    删除所有镜像

    $ sudo docker rmi -f $(docker images)

    -f 参数表示强制删除

    Docker容器常用命令

    新建并启动容器

    使用docker run命令即可新建并启动一个容器。

    该命令是最常用命令,它有很挫选项,下面将列举一些常用选项。

    - d 选项:表示后台运行

    - P 选项:随机端口映射

    - p 选项:指定端口映射,有一下四种格式

        - ip:hostPort:containerPort

        - ip::containerPort

        - hostPort:containerPort

        - containerPort

    - network 选项:指定网络模式,该选项有一下可选参数:

        - --network=bridge:默认选项,表示连接到默认的网桥。

        - --network=host:容器使用宿主机的网络。

        - --network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。

        - --network=none:不配置该容器的网络,用户可自定义网络配置。

    示例1:

    $ sudo docker run java /bin/echo 'Hello World'

    这样终端会打印Hello World的字样,跟在本地直接执行/bin/echo 'Hello World' 一样。

    示例2:

    $ sudo docker run -d -p 91:80 nginx

    这样就能启动一个Nginx容器。在本例中,为docker run添加了两个参数,含义如下:

    -d # 后台运行

    -p 宿主机端口:容器端口 # 开放容器端口到宿主机端口

    列出本地容器

    使用docker ps命令即可列出运行中的本地容器,执行该命令后,可以看到类似与如下的表格:

    如需要列所有容器(包括已停止的容器),可使用 -a 参数。

    该表格包含了7列,含义如下:

    - CONTAINER_ID:表示容器ID

    - IMAGE:表示镜像名称

    - COMMAND:表示启动容器时运行的命令

    - CREATED:表示容器创建时间

    - STATUS:表示容器运行状态。UP表示运行中,Exited表示已停止。

    - PORTS:表示容器对外的端口号

    - NAMES:表示容器名称,该名称默认由Docker自动生成,也可使用docker run命令的--name选项自定指定。

    停止容器

    使用docker stop命令,即可停止容器,例如:

    $ sudo docker stop 2730ed88f8e5

    其中 2730ed88f8e5 是容器ID,当然也可以使用 docker stop 容器名称 来停止指定容器。

    强制停止容器

    可以使用docker kill 命令发送SINGKILL信号来强制停止容器。例如:

    $ sudo docker kill 2730ed88f8e5

    启动已停止的容器

    使用docker run命令,即可新建并启动一个容器。对于已停止的容器,可以使用docker start命令来启动。例如:

    $ sudo docker start 2730ed88f8e5

    重启容器

    可使用docker restart命令来重启容器。该命令实际上是先执行了docker stop命令,然后再执行了docker start命令。

    进入容器

    某场景下,可能需要进入运行中的容器。

    使用docker attach命令进入容器。例如:

    $ sudo docker attach 2730ed88f8e5

    很多场景下,使用docker attach命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

    可以使用nsenter进入容器。

    nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,需要找到容器第一个进程的PID,可通过以下命令获取:

    $ sudo docker inspect --format "{{.State.Pid}}" $CONTAINER_ID

    获得PID后,就可使用nsenter命令进入容器了:

    $ sudo nsenter --target "$PID" --mount --uts --ipc --net --pid

    下面给出一个完整的例子:

    也可将以上两条命令封装成一个Shell,从而简化进入容器的过程。

    删除容器

    使用docker rm命令即可删除指定容器。

    例1:删除指定容器

    $ sudo docker rm 2730ed88f8e5

    该命令只能删除已停止的容器,如需要删除正在运行的容器,可使用-f参数。

    例2:删除所有容器

    $ sudo docker rm -f $(docker ps -a -q)

    参考资料:https://blog.csdn.net/yx_222/article/details/80936757

    https://www.cnblogs.com/aspirant/p/8808809.html

    相关文章

      网友评论

        本文标题:Docker部署和命令

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