Docker学习

1.Docker的安装

在Linux(CentOS)系统中输入,
国外源:
curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun

国内源:
curl -sSL https://get.daocloud.io/docker | sh

卸载Docker
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

删除安装包:
yum remove docker-ce

删除镜像、容器、配置文件
rm -rf /var/lib/docker

检测Docker是否安装成功
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

则安装成功

2.Docker的使用

启动Docker的服务:
第一次使用Docker要启动docker的服务

[root@admin ~]# service docker start

关闭环境以后重新使用

[root@admin ~]# service docker restart

Docker允许在容器内运行应用程序
使用docker run命令在容器中运行一个程序

docker run ubuntu:15.10 /bin/echo "Hello world"
  • docker:Docker的二进制执行文件
  • run:与docker组合来运行一个容器
  • ubuntu:15.10:指定要运行的镜像,Docker会先在本地找镜像是否存在;不存在则会到Docker Hub上下载公共镜像

2.1 进入到Docker的容器里(交互模式)

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

-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

2.2 启动Docker容器

命令:

[root@admin ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
eff4eff9cc18b009463c60d56bddd5505530767e4fa1c6c1e123894acd5f89b4

设置一个无限循环的每隔1s输出hello world
因为是后台运行所以无法看见hello world
eff4eff9cc18b009463c60d56bddd5505530767e4fa1c6c1e123894acd5f89b4
这一大串数字为容器ID

docker ps:查看当前创建的容器

参数:
-a:查看所有容器,包括停止的
-l:展示最后创建的容器

[root@admin ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
eff4eff9cc18   ubuntu:15.10   "/bin/sh -c 'while t…"   57 seconds ago   Up 56 seconds             romantic_elbakyan

查看容器内的标准输出
命令:docker logs 容器ID

docker logs eff4ef

只用输入部分ID

停止正在运行的容器
命令:docker stop 容器ID

[root@admin ~]# docker stop eff4
eff4
[root@admin ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

3. Docker的常用命令

3.1 帮助命令

docker version:查看docker的版本信息

root@admin ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:49 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

docker info:显示docker系统信息,包括镜像和容器数量

 GitCommit:        de40ad0
[root@admin ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  scan: Docker Scan (Docker Inc., v0.8.0)

Server:
 Containers: 5
 Running: 0
 Paused: 0
 Stopped: 5
 Images: 2

Containers:5 (代表当前由5个容器)
Images:2(代表当前由2个镜像)

docker --helpDocker的帮助命令

3.2 镜像命令

  1. docker images列出本地主机上的镜像
    参数:
    -a:列出本地所有的镜像
    -q:只显示镜像的ID
    –digests:显示镜像的摘要信息
    –no-trunc:显示完整的镜像信息

示例:
相关参数
REPOSITORY:表示仓库源
TAG:镜像的版本标签
IMAGE ID:镜像的ID
CREATED:创建时间
VIRTUAL SIZE:大小

[root@admin ~]# docker images -a
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB
ubuntu        15.10     9b9cb95443b5   5 years ago    137MB
[root@admin ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB
ubuntu        15.10     9b9cb95443b5   5 years ago    137MB
  1. docker search 镜像名从仓库中搜索指定镜像
    参数说明:
    -s n(n是数字):列出收藏不少于n的镜像
    –no-trunc:显示完整镜像
    –automate:只列出automate build的镜像

示例:
STARS:收藏数量

[root@admin ~]# docker search tomcat
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   3089      [OK]       
tomee                         Apache TomEE is an all-Apache Java EE certif…   91        [OK]       
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   57                   [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      30                   
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              18                   [OK]
cloudesire/tomcat             Tomcat server, 6/7/8                            15                   [OK]
aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                   [OK]
arm32v7/tomcat                Apache Tomcat is an open source implementati…   11                   
andreptb/tomcat               Debian Jessie based image with Apache Tomcat…   10                   [OK]
rightctrl/tomcat              CentOS , Oracle Java, tomcat application ssl…   6                    [OK]
unidata/tomcat-docker         Security-hardened Tomcat Docker container.      5                    [OK]
arm64v8/tomcat                Apache Tomcat is an open source implementati…   4                    
amd64/tomcat                  Apache Tomcat is an open source implementati…   3                    
jelastic/tomcat               An image of the Tomcat Java application serv…   2                    
cfje/tomcat-resource          Tomcat Concourse Resource                       2                    
oobsri/tomcat8                Testing CI Jobs with different names.           2                    
fabric8/tomcat-8              Fabric8 Tomcat 8 Image                          2                    [OK]
camptocamp/tomcat-logback     Docker image for tomcat with logback integra…   1                    [OK]
chenyufeng/tomcat-centos      tomcat基于centos6的镜像                              1                    [OK]
99taxis/tomcat7               Tomcat7                                         1                    [OK]
ppc64le/tomcat                Apache Tomcat is an open source implementati…   1                    
picoded/tomcat7               tomcat7 with jre8 and MANAGER_USER / MANAGER…   1                    [OK]
s390x/tomcat                  Apache Tomcat is an open source implementati…   0                    
softwareplant/tomcat          Tomcat images for jira-cloud testing            0                    [OK]
secoresearch/tomcat-varnish   Tomcat and Varnish 5.0                          0                    [OK]
  1. docker rmi -f 镜像ID删除镜像

  2. docker pull下载镜像
    示例:下载tomcat

3.3 容器命令

:有镜像才能创建容器

1.docker run [option] image [command]新建并启动容器

主要语法:docker run
option:可以使用的参数
image:使用的镜像名
command:在容器内执行的命令

参数说明:
举例:
docker run -it centos /bin/bash

使用镜像centos创建并以交互模式启动一个容器,在容器内执行/bin/bash指令

option相关参数:
–name=“容器新名字”,为容器指定一个名称
-d:后台运行容器,并返回容器ID,也为启动容器
-i:以交互模式运行容器,与-t使用
-t:为容器重新分配一个伪输入终端,通常与-i使用

2.docker ps 列出当前所有正在运行的容器
-a:列出所有运行的容器,包括历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:只显示容器编号
-no-trunc:不截断输出

3.退出当前使用的容器
前提:使用docker run -it以交互模式启动一个容器

[root@admin ~]# docker run -it centos /bin/bash
进入到容器内:
[root@29970373d52f /]# 

退出方法一: exit 直接退出并且暂停容器
退出方法二ctrl+p+q保存后退出容器

4.容器的启动暂停命令

  • 启动容器docker start 容器ID或者容器名
  • 重启容器docker restart 容器ID或者容器名
  • 停止容器docker stop 容器ID或者容器名
  • 强制停止容器docker kill 容器ID或者容器名

举例:
现在29970的容器处于暂停状态

[root@admin ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                        PORTS     NAMES
29970373d52f   centos         "/bin/bash"              27 minutes ago   Exited (0) 6 seconds ago           

启动29970的容器:

[root@admin ~]# docker start 29970
29970
[root@admin ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
29970373d52f   centos    "/bin/bash"   29 minutes ago   Up 8 seconds             angry_morse

5.删除已经暂停的容器

  • 删除单个容器:docker rm 容器ID
  • 删除多个容器:docker rm -f $(docker ps -a -q)
[root@admin ~]# docker rm 29970
29970

3.4进入容器:

使用了 docker run -d 参数时,容器会自动进入后台,可以通过以下命令进入:

  • docker attach:使用命令会直接进入容器,并显示容器执行过程
    退出后,会暂停容器

举例:

[root@admin ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
fe3866b023d1b716b5bf51a2ff7e5f5c259f7ad81acfa23d027ce1af5f69b366
[root@admin ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
fe3866b023d1   ubuntu:15.10   "/bin/sh -c 'while t…"   55 seconds ago   Up 54 seconds             zealous_sammet
[root@admin ~]# docker attach fe3866
hello world
hello world
hello world
^C[root@admin ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • docker exec:使用命令会以交互模式进入容器,并且退出时不会暂停容器
    docker exec -it 容器ID /bin/bash

4.导出和导入容器

导出容器
创建容器的快照,保存当前容器的运行状态

[root@admin hellos]# docker export fe3866 > /hello/hellos/ubuntu.tar
[root@admin hellos]# ll
总用量 121672
drwxr-xr-x. 2 root haoming         6 813 09:08 helloworld
-rwxr-xr-x. 1 root root           43 813 10:01 test.sh
-rw-r--r--. 1 root root    124584448 813 15:25 ubuntu.tar

导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

cat docker/ubuntu.tar | docker import - test/ubuntu:v1

5.运行一个Web应用

载入一个Web镜像:
docker pull training/webapp
在docker容器中运行一个 Python Flask 应用来运行一个web应用。
docker run -d -P training/webapp python app.py

使用 docker ps 来查看我们正在运行的容器:

runoob@runoob:~#  docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp

多了端口信息
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。
可以在浏览器中输入本机地址+端口查看
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值