CentOS7安装Docker

CentOS7安装Docker

🔗解决启动失败

Docker安装

Docker的基本组成

基本组成

镜像(image)

docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像-->run-->容器(提

供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container)

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.

启动,停止,删除,基本命令

目前就可以把这个容器理解为就是一个简易的 Linux系统。

仓库(repository):

仓库就是存放镜像的地方!

仓库分为公有仓库和私有仓库。(很类似git)

Docker Hub是国外的。

阿里云…都有容器服务器(配置镜像加速!)

安装Docker

环境准备

Linux要求内核3.0以上

#查看内核版本
[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

#查看系统版本
[root@localhost ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装

🔗帮助文档

#1、先确保是否已安装,卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

                                    
# 2、需要的安装包
yum install -y yum-utils

#3、设置镜像的仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#默认是从国外的,不推荐。推荐使用国内的
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast

#4、安装docker相关的 docker-ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io

#5、启动docker
systemctl start docker

#6、使用docker version查看是否按装成功
docker version

#7、测试
docker run hello-world

#8、查看已经下载的镜像(从这里可以查看已有镜像的id)(必须先启动decker)
docker images

了解

  • 卸载docker
# 1、依赖卸载
yum remove docker-ce docker-ce-cli containerd.io

# 2、删除资源
rm -rf /var/lib/docker

# /var/lib/docker docker的默认工作路径

启动流程

image-20210224143330245

docker常用命令

🔗命令大全博客教程

帮助命令

docker version			#显示docker的版本信息。
docker info				#显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help	   #帮助命令

🔗帮助文档的地址

镜像命令

docker images 	#查看所有本地主机上的镜像 可以使用docker image ls代替

docker search	#搜索镜像

docker pull		#下载镜像 docker image pull

docker rmi		#删除镜像 docker image rm

images命令详解

docker images查看所有本地的主机上的镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB

# 解释
#REPOSITORY			# 镜像的仓库源
#TAG				# 镜像的标签(版本)		---lastest 表示最新版本
#IMAGE ID			# 镜像的id
#CREATED			# 镜像的创建时间
#SIZE				# 镜像的大小

  • 参数可选项
# 参数可选项
Options:
  -a, --all         Show all images (default hides intermediate images) #列出所有镜像
  -q, --quiet       Only show numeric IDs # 只显示镜像的id
[root@localhost ~]# docker images -a			#列出所有镜像详细信息
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB

#============================================================================
[root@localhost ~]# docker images -aq			#列出所有镜像的id
5f47254ca581
bf756fb1ae65

search命令详解

docker search 搜索镜像

  • 语法
docker serach xxxx			#搜索xxx镜像
  • 以搜索mysql为例

image-20210305093838252

  • 参数可选项
[root@localhost ~]# docker search mysql --filter=STARS=3000

#解释
--filter=STARS=3000 #过滤,搜索出来的镜像收藏STARS数量大于3000的

image-20210305094105923

pull命令详解

docker pull 下载镜像

  • 语法
docker pull 镜像名[:tag]
  • 以下载tomcat为例
[root@localhost ~]# docker pull tomcat:8
8: Pulling from library/tomcat				#如果不写tag,默认就是latest
b9a857cbf04d: Pull complete 
d557ee20540b: Pull complete 
3b9ca4f00c2e: Pull complete 
667fd949ed93: Pull complete 
661d3b55f657: Pull complete 
60cfec2a948e: Pull complete 
79ee4b4b7121: Pull complete 
f4d903639a13: Pull complete 
ba1813d1dbb8: Pull complete 
57b2c7ea51b0: Pull complete 
Digest: sha256:39635c3854a1d60937b9c36e32ffcdab21b74dca5b853414acc73e2ec2a08d08# 签名防伪
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8					#真实地址

rmi命令详解

docker rmi 删除镜像

  • 语法
docker rmi -f 镜像id					#删除指定id的镜像
docker rmi -f $(docker images -aq) 		#删除全部的镜像,递归删除所有
  • 以删除tomcat为例
[root@localhost ~]# docker images			#查看已下载的镜像
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
tomcat        8         37bdd9cb0d0e   7 weeks ago     533MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB
#============================================================================
[root@localhost ~]# docker rmi -f 37bdd9cb0d0e			#根据id删除
Untagged: tomcat:8
Untagged: tomcat@sha256:39635c3854a1d60937b9c36e32ffcdab21b74dca5b853414acc73e2ec2a08d08
Deleted: sha256:37bdd9cb0d0eee94f36ee1e99f63ce10de150c0ef6905c5b3c5e6b9efdfa9a6d
Deleted: sha256:5164a33a83ffb1301ebd64124d7524fda21cd389954867ac351ed98894421622
Deleted: sha256:ea829202a4fabae90072832d9d65f4eedbb39cfe2304605f845a9c1917a85e74
Deleted: sha256:cec4fe02acb17b649eef705cd7e48b69d363462b092313c201e979debead9b4f
Deleted: sha256:dc6f9dcf137d232a0ed114c0f143067fe449c5ec8e3105b477d947270e4020ac
Deleted: sha256:ffa5b44f841d7624ccaefa3f84987f923b620c264f2929281c5b3ab213c917f4
Deleted: sha256:cd253bbc5a1ce457359958f4905b53a3f6f0ac167ba5065f68385600fdbae99e
Deleted: sha256:03b0292dbc6978fe1077f948ac07472a8cac23fb4c3cf92c76f5eb62891e3d5a
Deleted: sha256:19f2a825ed46bbf16a06d9d5185a0ac68196217f302e760abb4cbc3178b14cc1
Deleted: sha256:b4f0436e967b6b9b021d3ed900a5422da6d8fe8c17c51c7d7e4f9c105812f868
Deleted: sha256:4762552ad7d851a9901571428078281985074e5ddb806979dd7ad24748db4ca0
#============================================================================
[root@localhost ~]# docker images				#再次查看,删除成功
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB

容器命令

说明:有了镜像才可以创建容器

以下载centos镜像来测试学习为例

简述

docker run 镜像id #新建容器并启动

docker ps 列出所有运行的容器 docker container list

docker rm 容器id #删除指定容器

docker start 容器id #启动容器

docker restart 容器id #重启容器

docker stop 容器id #停止当前正在运行的容器

docker kill 容器id #强制停止当前容器

下载centos镜像

[root@localhost ~]# docker pull centos			#下载容器
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

新建容器并启动

  • 语法
docker run [可选参数] image
#或者
docker container run [可选参数] image 
  • 参数可选项
#参书说明
--name="Name"		#容器名字 tomcat01 tomcat02 用来区分容器
-d					#后台方式运行
-it 				#使用交互方式运行,进入容器查看内容
-p					#指定容器的端口 -p 8080(宿主机):8080(容器),以下四种形式
		-p ip:主机端口:容器端口
		-p 主机端口:容器端口(常用)
		-p 容器端口
		容器端口
-P(大写) 				随机指定端口
  • 启动并进入
[root@localhost ~]# docker run -it centos /bin/bash		#以交互形式进入
#============================================================================
[root@8fa6057dfe72 /]# ls								#查看容器内容
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#============================================================================
[root@8fa6057dfe72 /]# exit								#退出容器
exit
#============================================================================
[root@localhost ~]# ls									#查看本机内容,与容器内容做对比
anaconda-ks.cfg  geci.txt  initial-setup-ks.cfg  nginx-1.18.0  test  workspace  公共  模板  视频  图片  文档  下载  音乐  桌面

列出所有运行的容器

  • 语法
docker ps 命令  		#列出当前正在运行的容器
  • 参数可选项
-a, --all     	   #列出当前正在运行的容器 + 带出历史运行过的容器
-n=?, --last int   #列出最近创建的?个容器 ?为1则只列出最近创建的一个容器,为2则列出2个
-q, --quiet        #只列出容器的编号
  • 测试
[root@localhost ~]# docker ps				#列出正在运行的
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
dd8b67a4410a   centos    "/bin/bash"   9 seconds ago   Up 8 seconds             stupefied_newton

#============================================================================
[root@localhost ~]# docker ps -a			#列出正在运行的+历史的
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
507cb9fd09b4   centos    "/bin/bash"   5 seconds ago    Exited (0) 1 second ago               nostalgic_greider
9609d66be08f   centos    "/bin/bash"   13 seconds ago   Exited (0) 10 seconds ago             objective_hofstadter

#============================================================================
[root@localhost ~]# docker ps -q			#只列出容器的编号
d89350af1151
#============================================================================
[root@localhost ~]# docker ps -aq
d89350af1151
8fa6057dfe72
754e1ad9d8f1
a95abcef976d

退出容器

exit 			#容器直接退出
ctrl +P +Q  	#容器不停止退出 	---注意:这个很有用的操作

删除容器

docker rm 容器id   				#删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
docker rm -f $(docker ps -aq)  	 #删除所有的容器
docker ps -a -q|xargs docker rm  #删除所有的容器

启动和停止容器的操作

docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止当前正在运行的容器
docker kill 容器id	#强制停止当前容器

其他常用命令

后台启动命令

  • 语法
docker run -d 镜像名
  • 测试
#后台运行centos
[root@localhost ~]# docker run -d centos
a16679098519d3466d4f83c28350c6778b8326e26a1e4b267fe3cb9b37655405

#查看当前运行中的容器
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
发现为空

#解释
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

日志查看

  • 语法
docker logs --help

#选项参数
Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

  • 测试
#模拟日志
docker run -d centos /bin/sh -c "while true;do echo 我正在运;sleep 1;done"
[root@localhost ~]# docker logs -tf --tail 10 0c82299bc0e0
2021-03-05T06:41:39.727748305Z 我正在运
2021-03-05T06:41:40.761769401Z 我正在运
2021-03-05T06:41:41.781987260Z 我正在运
2021-03-05T06:41:42.805327797Z 我正在运
.....

#语法解释
#显示日志
-tf								#显示日志信息(一直更新)
--tail number					#需要显示日志条数
docker logs -t --tail n 容器id   #查看n行日志
docker logs -ft 容器id 		   #跟着日志

查看容器中进程信息

  • 语法
docker top 容器id
  • 测试

首先确保有容器在运行,获取容器的id后,进行查看

image-20210305144953495

查看镜像的元数据

  • 语法
docker inspect 容器id
  • 测试
[root@localhost ~]# docker inspect 0c82299bc0e0
[
    {
        "Id": "0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290",
        "Created": "2021-03-05T06:40:58.201691106Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo 我正在运;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 31995,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-03-05T06:40:59.063589773Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290/hostname",
        "HostsPath": "/var/lib/docker/containers/0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290/hosts",
        "LogPath": "/var/lib/docker/containers/0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290/0c82299bc0e0c0c4cce259fb61adb8dbd4ea066678f949f8e57a7dfa2bdd9290-json.log",
        "Name": "/nice_germain",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/70345ffe96b2ee2f9c6bba3731a54ad5a253e1350eab3eb7bc71d100dbb084b5-init/diff:/var/lib/docker/overlay2/9c6fd81bb86b0fbdce0edf46cdddd15eed458a527b52cc4df1785318abef1323/diff",
                "MergedDir": "/var/lib/docker/overlay2/70345ffe96b2ee2f9c6bba3731a54ad5a253e1350eab3eb7bc71d100dbb084b5/merged",
                "UpperDir": "/var/lib/docker/overlay2/70345ffe96b2ee2f9c6bba3731a54ad5a253e1350eab3eb7bc71d100dbb084b5/diff",
                "WorkDir": "/var/lib/docker/overlay2/70345ffe96b2ee2f9c6bba3731a54ad5a253e1350eab3eb7bc71d100dbb084b5/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "0c82299bc0e0",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo 我正在运;sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "12f8e4bdd578bf54c5b26996ace23bcd7b311a8c47eb7df07170287139f10c73",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/12f8e4bdd578",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "8059122e9f58447b1410180bcc49e374871109f4572917105498e79cf153f5bb",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "ed855fe635664085562b95dabcef7ad1143bf4c8e9e65dcde68096680e0918c0",
                    "EndpointID": "8059122e9f58447b1410180bcc49e374871109f4572917105498e79cf153f5bb",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@localhost ~]# 

进入正在运行的容器

我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

方式一
  • 语法
docker exec -it 容器id /bin/bash
  • 测试
[root@localhost ~]# docker exec -it e84b29591a4d /bin/bash
[root@e84b29591a4d /]# 
方式二
  • 语法
docker attach 容器id
  • 测试
[root@localhost ~]# dockerattach e84b29591a4d
我正在运
我正在运
我正在运
...

区别

docker exec 进入当前容器后开启一个新的终端,可以在里面操作。(常用)

docker attach 进入容器正在执行的终端

从容器内拷贝内容到主机

  • 语法
docker cp 容器id:容器内路径  主机目的路径
  • 测试
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
e84b29591a4d   centos    "/bin/sh -c 'while t…"   13 minutes ago   Up 13 minutes             fervent_gagarin
#==========================================================================
[root@localhost ~]# ls /home
hwx
#========================================================================== 进入内部
[root@localhost ~]# docker exec -it e84b29591a4d /bin/bash
#========================================================================== 创建文件
[root@e84b29591a4d /]# echo "hello java" > hello.java
[root@e84b29591a4d /]# exit
exit
#========================================================================== 复制到主机
[root@localhost ~]# docker cp e84b29591a4d:/hello.java /home
[root@localhost ~]# ls /home
hello.java  hwx

小结

  • 命令参考图01

官方图

  • 命令参考图02

ml02

  • 解释
attach	#当前shell下 attach连接指定运行的镜像
build	#通过Dockerfile定制镜像
commit	#提交当前容器为新的镜像
cp		#从容器中拷贝指定文件或目录到宿主机中
create	#创建一个新的容器,同run,但不启动容器
diff	#查看docker容器的变化
events	#从docker服务获取容器实时时间
exec	#在运行中的容器上运行命令
export	#导出容器文件系统作为一个tar归档文件[对应import]
history	#展示一个镜像形成历史
images	#列出系统当前的镜像
import	#从tar包中导入内容创建一个文件系统镜像
info	#显示系统信息
inspect	#查看容器详细信息
kill	#kill指定docker容器
load	#从一个tar包或标准输入中加载一个镜像[对应save]
login	#注册或者登陆一个docker源服务器
logout	#从当前的docker registry 退出
logs	#输出当前容器的日志信息
pause	#暂停容器
port	#查看映射端口对应容器的源端口
ps		#列出容器列表
pull	#拉取指定镜像或者库镜像
push	#推送指定镜像或者库镜像 
rename	#重命名容器
restart	#重启动容器
rm		#移除一个活多个容器
rmi		#移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或-f强制册除]
run		#创建一个新的容器并运行一个命令
save	#保存一个镜像为一个 tar 包[对应load]
search	#在docker hub中搜索镜像
start	#启动容器
stop	#停止容器
tag		#给源中镜像打标签
top		#查看容器中运行的进程信息
unpause	#取消暂停容器
version	#查看docker版本号
wait	#截取容器停止时的退出状态值


软件安装

安装Nginx

#1、搜索镜像
[root@localhost ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14523     [OK]       
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1975                 [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   809                  [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   157                  
....

#2、拉取下载镜像
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Pull complete 
0732ab25fa22: Pull complete 
d7f36f6fe38f: Pull complete 
f72584a26f32: Pull complete 
7125e4df9063: Pull complete 
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

#3、查看是否下载成功
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
nginx         latest    f6d0b4767a6c   7 weeks ago     133MB
centos        latest    300e315adb2f   2 months ago    209MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB


#4、运行测试
[root@localhost ~]# docker run -d --name nginx01 -p 3344:80 nginx
0125ad5249e9c56c30e81579c2ae654620db947c4a374f6212a16d2c2dd22bbe
#4.1、参数解释:
	# -d 后台运行
    # --name 给容器命名
	# -p 宿主机端口:容器内部端口
	#浏览器访问:ip:3344 ,即可访问到容器中的nginx


#5、查看正在运行的镜像
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
0125ad5249e9   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 4 seconds   0.0.0.0:3344->80/tcp   nginx01


#6、进入容器
[root@localhost ~]# docker exec -it 0125ad5249e9 /bin/bash
root@0125ad5249e9:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx


#7、退出容器
root@0125ad5249e9:/# exit
exit

#8、停止容器
[root@localhost ~]# docker stop 0125ad5249e9
0125ad5249e9
	#8.1、再次访问则会访问失败

宿主机端和容器内部端口以及端口暴露 释义图

端口暴露

安装Tomcat

#1、搜索镜像
[root@localhost ~]# docker search tomcat
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2959      [OK]       
tomee                         Apache TomEE is an all-Apache Java EE certif…   86        [OK]       
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   55     ....

#2、拉取下载镜像
[root@localhost ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
b9a857cbf04d: Pull complete 
d557ee20540b: Pull complete 
3b9ca4f00c2e: Pull complete 
667fd949ed93: Pull complete 
661d3b55f657: Pull complete 
511ef4338a0b: Pull complete 
a56db448fefe: Pull complete 
00612a99c7dc: Pull complete 
326f9601c512: Pull complete 
c547db74f1e1: Pull complete 
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest


#3、查看是否下载成功
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       5f47254ca581   3 weeks ago     449MB
tomcat        latest    040bdb29ab37   7 weeks ago     649MB
nginx         latest    f6d0b4767a6c   7 weeks ago     133MB
centos        latest    300e315adb2f   2 months ago    209MB
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB


#4、运行测试
[root@localhost ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
3dcbb2e07a4e9aecdff817235f387a676f182e44945e8f73d6997234588f9e7b
#4.1、参数解释:
	# -d 后台运行
    # --name 给容器命名
	# -p 宿主机端口:容器内部端口
	#浏览器访问:ip:3355 ,即可访问到容器中的tomcat,发现404


#5、查看正在运行的镜像
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                    NAMES
3dcbb2e07a4e   tomcat    "catalina.sh run"   8 seconds ago   Up 7 seconds   0.0.0.0:3355->8080/tcp   tomcat01


#6、进入容器
[root@localhost ~]# docker exec -it 3dcbb2e07a4e /bin/bash
root@3dcbb2e07a4e:/usr/local/tomcat# 
#6.1、查看内部信息
root@3dcbb2e07a4e:/usr/local/tomcat# ls -ll
total 128
-rw-r--r-- 1 root root 18982 Dec  3 11:48 BUILDING.txt
-rw-r--r-- 1 root root  5409 Dec  3 11:48 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec  3 11:48 LICENSE
-rw-r--r-- 1 root root  2333 Dec  3 11:48 NOTICE
-rw-r--r-- 1 root root  3257 Dec  3 11:48 README.md
-rw-r--r-- 1 root root  6898 Dec  3 11:48 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec  3 11:48 RUNNING.txt
drwxr-xr-x 2 root root  4096 Jan 13 08:25 bin
drwxr-xr-x 1 root root    22 Mar  5 08:45 conf
drwxr-xr-x 2 root root  4096 Jan 13 08:25 lib
drwxrwxrwx 1 root root   177 Mar  5 08:45 logs
drwxr-xr-x 2 root root   134 Jan 13 08:25 native-jni-lib
drwxrwxrwx 2 root root    30 Jan 13 08:25 temp
drwxr-xr-x 2 root root     6 Jan 13 08:25 webapps
drwxr-xr-x 7 root root    81 Dec  3 11:45 webapps.dist
drwxrwxrwx 2 root root     6 Dec  3 11:43 work
#6.2、进入webapps目录
root@3dcbb2e07a4e:/usr/local/tomcat/webapps# ls -ll
total 0
# 发现问题:1、有些linux命令不可用。 2.webapps目录为空 
# 原因:阿里云镜像的原因,阿里云默认是最小的镜像,所以不必要的都剔除掉
# 保证最小可运行的环境!
# 解决方案:
# 将webapps.dist下的文件都拷贝到webapps下即可


#7、拷贝文件至webapps
root@3dcbb2e07a4e:/usr/local/tomcat# cp -r webapps.dist/* webapps


#8、再次访问
即可正常看到tomcat首页

posted @ 2021-07-20 09:08  爱码士很优秀  阅读(72)  评论(0编辑  收藏  举报