Docker

Docker安装

环境准备
1.需要会一点linux的基础。
2.Centos 7
3.Xshell远程连接工具

安装环境查看

#系统内核版本3.10+
[root@centos-1 /]# clear
[root@centos-1 /]# uname -r
3.10.0-1062.el7.x86_64
#系统版本
[root@centos-1 /]# 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 \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#更新yum软件包索引
$  yum makecache fast

4.安装docker

#-ce 社区版本 还有-ee 企业版 
$  yum install docker-ce docker-ce-cli containerd.io

5.启动docker

$  systemctl start docker 

查看是否安装成功。

[root@VM-0-7-centos ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.4
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        d3cb89e
 Built:             Thu Feb 25 07:06:20 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.4
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Thu Feb 25 07:04:45 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

运行hello-world镜像

$  docker run hello-world 

在这里插入图片描述
查看hello-world镜像

docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB

卸载docker
var/lib/docker是 docker的默认工作路径

#卸载依赖
$ yum remove docker-ce docker-ce-cli containerd.io
#删除资源
$ rm -rf /var/lib/docker

配置阿里云镜像加速器

(没有自己注册一下)
在这里插入图片描述
配置使用

#创建目录
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://*****k.mirror.aliyuncs.com"]
}
EOF
#服务重启
sudo systemctl daemon-reload
#docker重启
sudo systemctl restart docker

回顾hello-word流程

见下面的流程图。
在这里插入图片描述

Docker为什么比虚拟机快?

  • 首先docker有比虚拟机更少的抽象层。
  • docker是一个服务。
  • 新建一个docker的时候,不需要像虚拟机重新加载一个操作系统内核。
    我们的所有的容器都是装在这个服务里面,也可以在服务里面在去划分一个一个的centos。而虚拟机更多的是物理存在的,我们自己安装虚拟机都是需要去划分内存的。docker更像是一个大家庭,我们只需要在linux服务器上安装docker服务就可以了。它利用的是宿主机的内核,而vm需要在服务器上去手动搭建虚拟服务器。新建一个docker的时候,不需要像虚拟机重新加载一个操作系统内核。

Docker常用命令

帮助命令

# docker 版本
docker version
# docker中,比如镜像和容器的数量。
docker info
docker --help

镜像命令

# 查看所有镜像信息
docker images 
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB

REPOSITORY 镜像的仓库源
TAG :镜像的标签
IMAGE ID :镜像id
CREATED :镜像的创建时间
SIZE:镜像大小

#所有的镜像
docker images -a
#显示 镜像id
docker images -q
# 搜索镜像
docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10563     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   3947      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   774                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   527       [OK]       
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   87          
# 通过搜藏星数过滤stars
[root@VM-0-7-centos ~]docker search mysql --filter=STARS=5000 
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10563     [OK]   

#下载mysql镜像 
[root@VM-0-7-centos ~]#docker pull mysql
Using default tag: latest  #如果不写TAG 默认下载latest 
latest: Pulling from library/mysql
a076a628af6f: Pull complete  #分层下载
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
Status: Downloaded newer image for mysql:latest #真实地址
docker.io/library/mysql:latest
##下面2个命令其实是等价的
docker pull docker.io/library/mysql:latest
docker pull mysql

指定mysql5.7版本下载

[root@VM-0-7-centos ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
a076a628af6f: Already exists  #存在的就不用下载了,这样是比较好的
f6c208f3f991: Already exists 
88a9455a9165: Already exists 
406c9b8427c6: Already exists 
7c88599c0b25: Already exists 
25b5c6debdaf: Already exists 
43a5816f1617: Already exists 
1831ac1245f4: Pull complete 
37677b8c1f79: Pull complete 
27e4ac3b0f6e: Pull complete 
7227baa8c445: Pull complete 
Digest: sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

镜像删除
删除指定镜像
docker rmi -f [镜像id]

[root@VM-0-7-centos ~]# docker rmi -f  c8562eaf9d81
Untagged: mysql:latest
Untagged: mysql@sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
Deleted: sha256:c8562eaf9d81c779cbfc318d6e01b8e6f86907f1d41233268a2ed83b2f34e748
Deleted: sha256:1b649b85960473808c6b812fc30c3f6a3ff1c0ffdcba5c9435daf01cf7d5373a
Deleted: sha256:19cc889447050c16c797fd209fa114ee219de23facb37c00d4137a4ed4aad922
Deleted: sha256:3c793c06a026d276cf56a6a6a75527026ed9eafa7a7d21a438f7d5ed2314148e
Deleted: sha256:1e1cd89a2bc183a7fea3dab0b543e9924278321ad0921c22cc088adbf3c2e77b

批量删除多个镜像
docker rmi -f $(docker images -q)

[root@VM-0-7-centos ~]# docker rmi -f  $(docker images -q)
Untagged: mysql:5.7
Untagged: mysql@sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
Deleted: sha256:a70d36bc331a13d297f882d3d63137d24b804f29fa67158c40ad91d5050c39c5
Deleted: sha256:50c77bf7bcddd1f1d97789d80ac2404eec22c860c104e858620d2a2e321f0ef7
Deleted: sha256:14244329b83dfc8982398ee4104a548385652d2bffb957798ff86a419013efd6
Deleted: sha256:6d990477f90af28473eb601a9bca22253f6381e053c5a8edda0a4f027e124a3c
Deleted: sha256:ee0449796df204071589162fc16f8d65586312a40c68d1ba156c93c56f5e5ce8
Deleted: sha256:d08533f1e2acc40ad561a46fc6a76b54c739e6b24f077c183c5709e0a6885312
Deleted: sha256:4f9d91a4728e833d1062fb65a792f06e22e425f63824f260c8b5a64b776ddc38
Deleted: sha256:20bf4c759d1b0d0e6286d2145453af4e0e1b7ba3d4efa3b8bce46817ad4109de
Deleted: sha256:a9371bbdf16ac95cc72555c6ad42f79b9f03a82d964fe89d52bdc5f335a5f42a
Deleted: sha256:5b02130e449d94f51e8ff6e5f7d24802246198749ed9eb064631e63833cd8f1d
Deleted: sha256:ab74465b38bc1acb16c23091df32c5b7033ed55783386cb57acae8efff9f4b37
Deleted: sha256:cb42413394c4059335228c137fe884ff3ab8946a014014309676c25e3ac86864
Untagged: hello-world:latest
Untagged: hello-world@sha256:7e02330c713f93b1d3e4c5003350d0dbe215ca269dd1d84a4abc577908344b30
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b

容器命令(有了镜像才可以创建容器)

1.下载一个centos镜像

[root@VM-0-7-centos ~]#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

2.启动容器 docker run [可选参数] image

-- name ="name" 容器名字
-d           后台运行
-it   使用交互方式运行,进入容器查看内容
-P    指定容器的端口 -P 8080:8080
    -p ip: 主机端口:容器端口
    -p 主机端口:容器端口
    -p 容器端口
    容器端口
-P    随机指定端口

启动并进入容器

[root@VM-0-7-centos ~]# docker run -it  centos /bin/bash
[root@169c05c7372c /]# ls  #centos 容器内部的centos 和外面的centos没有半毛钱关系
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

从容器中退出来

[root@169c05c7372c /]# exit
exit
[root@VM-0-7-centos ~]# 

列出所有的运行的容器
docker ps : 运行中的容器
docker ps -a:所有运行过的容器
docker ps -a -n=1:最近创建的一个容器
docker ps -aq:显示所有容器的编号

[root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@VM-0-7-centos ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
169c05c7372c   centos         "/bin/bash"   5 minutes ago   Exited (0) 2 minutes ago             relaxed_carver
baf536bd8e15   bf756fb1ae65   "/hello"      3 hours ago     Exited (0) 3 hours ago               lucid_benz
a404aca878bf   bf756fb1ae65   "/hello"      3 hours ago     Exited (0) 3 hours ago               kind_shaw

[root@VM-0-7-centos ~]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
169c05c7372c   centos    "/bin/bash"   9 minutes ago   Exited (0) 6 minutes ago             relaxed_carver

[root@VM-0-7-centos ~]# docker ps -aq
169c05c7372c
baf536bd8e15
a404aca878bf

退出容器,但是不停止,快捷键ctrl+p+q

[root@VM-0-7-centos ~]# docker run -it centos /bin/bash
[root@13d050773f99 /]# [root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
13d050773f99   centos    "/bin/bash"   31 seconds ago   Up 30 seconds             infallible_pare

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

强制删除所有容器(正在运行中的容器)docker rm -f(docker ps -aq) 或者 docker ps -a -q |xargs docker rm

[root@VM-0-7-centos ~]# docker rm $(docker ps -aq)
baf536bd8e15
a404aca878bf
Error response from daemon: You cannot remove a running container 13d050773f99af87a4d9da1b89886513c035240086b4261a0962f351f323ba8e. Stop the container before attempting removal or force remove
[root@VM-0-7-centos ~]# docker rm -f $(docker ps -aq)
13d050773f99
[root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

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

常用其他命令

后台启动 docker run -d 镜像名称

[root@VM-0-7-centos ~]# docker run -d centos 
aad4829d30a7a21c1e1d53ecbcd3e1d1e8395c8a5a595e33c97f5df540080b2e
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

坑:发现centos 停止了
因为docker后台运行,必须要有个前台进程。docker发现没有应用,就会自动停止。
比如nginx容器启动后,发现没有程序调用它,就会自己去停掉。

**查看日志命令 **
docker logs -f -t -- tail 10 容器id
写个脚本

"while true; do echo gaoyuzhuan;sleep 1;done"
[root@VM-0-7-centos ~]# docker run -d centos /bin/sh -c "while true;do echo gaoyuzhuan;sleep 1;done"
5de082324cb7c2cf98fc4d0d8306812a5b13f15a59ede7565fff345e373e4f1c
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
5de082324cb7   centos    "/bin/sh -c 'while t…"   3 seconds ago   Up 2 seconds             wonderful_jemison
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# docker logs -f -t --tail 10 5de082324cb7
2021-03-01T13:14:16.693375228Z gaoyuzhuan
2021-03-01T13:14:17.695121147Z gaoyuzhuan
2021-03-01T13:14:18.696859397Z gaoyuzhuan
2021-03-01T13:14:19.698626865Z gaoyuzhuan
2021-03-01T13:14:20.700335674Z gaoyuzhuan
2021-03-01T13:14:21.702034864Z gaoyuzhuan
2021-03-01T13:14:22.703827823Z gaoyuzhuan
2021-03-01T13:14:23.705511543Z gaoyuzhuan
2021-03-01T13:14:24.707365081Z gaoyuzhuan
2021-03-01T13:14:25.709214709Z gaoyuzhuan
2021-03-01T13:14:26.711023631Z gaoyuzhuan
2021-03-01T13:14:27.712798351Z gaoyuzhuan
2021-03-01T13:14:28.714570026Z gaoyuzhuan
2021-03-01T13:14:29.716307256Z gaoyuzhuan
2021-03-01T13:14:30.718082647Z gaoyuzhuan
2021-03-01T13:14:31.719854054Z gaoyuzhuan
2021-03-01T13:14:32.721545635Z gaoyuzhuan
2021-03-01T13:14:33.723303635Z gaoyuzhuan
2021-03-01T13:14:34.725383100Z gaoyuzhuan
2021-03-01T13:14:35.727013982Z gaoyuzhuan
2021-03-01T13:14:36.728837741Z gaoyuzhuan
2021-03-01T13:14:37.730568702Z gaoyuzhuan
2021-03-01T13:14:38.732369611Z gaoyuzhuan
2021-03-01T13:14:39.734132501Z gaoyuzhuan
2021-03-01T13:14:40.735849813Z gaoyuzhuan
2021-03-01T13:14:41.737580297Z gaoyuzhuan
2021-03-01T13:14:42.739316213Z gaoyuzhuan
2021-03-01T13:14:43.741190783Z gaoyuzhuan

查看容器进程命令docker top '容器id'


[root@VM-0-7-centos ~]# docker top a0ba8b297726
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                15724               15704               0                   21:17               ?                   00:00:00            /bin/sh -c while true;do echo gaoyuzhuan;sleep 1;done
root                15963               15724               0                   21:18               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

#测试
查看镜像的元数据docker inspect

[root@VM-0-7-centos ~]# docker inspect a0ba8b297726
[
    {
        "Id": "a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77",
        "Created": "2021-03-01T13:17:47.676565988Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo gaoyuzhuan;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 15724,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-03-01T13:17:48.017292473Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77/hostname",
        "HostsPath": "/var/lib/docker/containers/a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77/hosts",
        "LogPath": "/var/lib/docker/containers/a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77/a0ba8b2977265d2f76392be0292e8d738771f151dbabe875a8775acb22b24c77-json.log",
        "Name": "/beautiful_euclid",
        "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/ab452be1e0f0dcced0542a97d13e3a8073e112bfa3590e30e043ee17a84fad01-init/diff:/var/lib/docker/overlay2/eb08bfdbd8eac3212a17a630dc2152cfc14e09dd68417ecc7a1e14979e31e654/diff",
                "MergedDir": "/var/lib/docker/overlay2/ab452be1e0f0dcced0542a97d13e3a8073e112bfa3590e30e043ee17a84fad01/merged",
                "UpperDir": "/var/lib/docker/overlay2/ab452be1e0f0dcced0542a97d13e3a8073e112bfa3590e30e043ee17a84fad01/diff",
                "WorkDir": "/var/lib/docker/overlay2/ab452be1e0f0dcced0542a97d13e3a8073e112bfa3590e30e043ee17a84fad01/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "a0ba8b297726",
            "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 gaoyuzhuan;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": "8a86a69aca787e9e53f290f9ad7bd4c0cf93cada4cd186d802a01b6459913c76",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/8a86a69aca78",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "07a092a59fb0465320f69b0daea8d4843c63bf6b8b7f610fcdae104b71b4e81a",
            "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": "feed2c9c0ebb8dbecaf249beb44b252a381ffaea152315f39c66792a7951f3f3",
                    "EndpointID": "07a092a59fb0465320f69b0daea8d4843c63bf6b8b7f610fcdae104b71b4e81a",
                    "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
                }
            }
        }
    }
]

进入当前正在运行的容器
我么通常使用容器都是后台方式运行。需要进入容器修改一些配置
1.docker exec -it 容器id /bin/bash

[root@VM-0-7-centos ~]# docker exec -it a0ba8b297726  /bin/bash
[root@a0ba8b297726 /]# 
[root@a0ba8b297726 /]# 
[root@a0ba8b297726 /]# 
[root@a0ba8b297726 /]# ls -la
total 56
drwxr-xr-x   1 root root 4096 Mar  1 13:17 .
drwxr-xr-x   1 root root 4096 Mar  1 13:17 ..
-rwxr-xr-x   1 root root    0 Mar  1 13:17 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3 15:22 bin -> usr/bin
drwxr-xr-x   5 root root  340 Mar  1 13:17 dev
drwxr-xr-x   1 root root 4096 Mar  1 13:17 etc
drwxr-xr-x   2 root root 4096 Nov  3 15:22 home
lrwxrwxrwx   1 root root    7 Nov  3 15:22 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Nov  3 15:22 lib64 -> usr/lib64
drwx------   2 root root 4096 Dec  4 17:37 lost+found
drwxr-xr-x   2 root root 4096 Nov  3 15:22 media
drwxr-xr-x   2 root root 4096 Nov  3 15:22 mnt
drwxr-xr-x   2 root root 4096 Nov  3 15:22 opt
dr-xr-xr-x 104 root root    0 Mar  1 13:17 proc
dr-xr-x---   2 root root 4096 Dec  4 17:37 root
drwxr-xr-x  11 root root 4096 Dec  4 17:37 run
lrwxrwxrwx   1 root root    8 Nov  3 15:22 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3 15:22 srv
dr-xr-xr-x  13 root root    0 Mar  1 13:17 sys
drwxrwxrwt   7 root root 4096 Dec  4 17:37 tmp
drwxr-xr-x  12 root root 4096 Dec  4 17:37 usr
drwxr-xr-x  20 root root 4096 Dec  4 17:37 var
[root@a0ba8b297726 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:17 ?        00:00:00 /bin/sh -c while true;do echo gaoyuzhuan;sleep 1;done
root       841     0  0 13:31 pts/0    00:00:00 /bin/bash
root       872     1  0 13:31 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root       873   841  0 13:31 pts/0    00:00:00 ps -ef

2.docker attach 容器id

[root@VM-0-7-centos ~]# docker attach a0ba8b297726
gaoyuzhuan
gaoyuzhuan
gaoyuzhuan
gaoyuzhuan
gaoyuzhuan
gaoyuzhuan

docker exec #开启一个新的终端,可以在里面操作(常用)
docker attach #进入容器正在执行的终端(不会启动新的进程)

docker 容器内烤文件到主机上docker cp 容器id:容器文件存储路径 /宿主机目标存放位置

 docker cp 54c2059f1061:/home/test.java /home

安装nginx

首先下载镜像

[root@VM-0-7-centos ~]# 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

运行镜像 docker run -d --name nginx01 -p 3344:80 nginx
3344:宿主机的端口 80:docker服务nginx容器的端口 nginx01:指定容器名称

[root@VM-0-7-centos ~]# docker run -d --name nginx01 -p 3344:80 nginx
a05e2199c8bbcf5b09a10e40e2fde49e8f6592c9c714c0f2a8703a6aa627ee56
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# 
[root@VM-0-7-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
a05e2199c8bb   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   0.0.0.0:3344->80/tcp   nginx01

本机自测可以访问:

[root@VM-0-7-centos ~]#  curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>	
</html>

在这里插入图片描述

这样通过3344端口就可以访问 nginx80端口了。
在这里插入图片描述
进入nginx容器内部,查看nginx.conf配置文件

[root@VM-0-7-centos ~]# docker exec -it nginx01  /bin/bash
root@a05e2199c8bb:/#  whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@a05e2199c8bb:/# 
root@a05e2199c8bb:/# 
root@a05e2199c8bb:/# 
root@a05e2199c8bb:/# cd /etc/nginx/
root@a05e2199c8bb:/etc/nginx# 
root@a05e2199c8bb:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf
root@a05e2199c8bb:/etc/nginx# cat nginx.conf 

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

停止nginx容器,访问不了。

[root@VM-0-7-centos ~]# docker stop a05e2199c8bb
a05e2199c8bb

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值