docker基础操作

一、docker安装======
1.1、官网
https://docs.docker.com/engine/install/

1.2、如果有旧版本(卸载docker)

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

1.3 、安装基本的环境

sudo yum install -y yum-utils

1.4、设置镜像仓库
默认是国外的

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

使用阿里国内源安装docker

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.5、安装docker
更新索引

yum makecache fast

docker-ce 社区版 docker-ee 企业版 推荐社区版

sudo yum install docker-ce docker-ce-cli containerd.io

1.6、启动docker

sudo systemctl start docker

1.7、使用docker version 是否安装成功
在这里插入图片描述

1.8、运行示例

sudo docker run hello-world

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

1.10、卸载docker
//删除依赖
$ sudo yum remove docker-ce docker-ce-cli containerd.io
//删除资源
$ sudo rm -rf /var/lib/docker //docker的默认工作路径
$ sudo rm -rf /var/lib/containerd

二、阿里云加速======
2.1、找到容器服务
在这里插入图片描述

2.2、找到镜像加速器
在这里插入图片描述
在这里插入图片描述

2.3、配置使用

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tx12d179.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、研究HelloWorld怎么执行======
3.1、执行过程如下
在这里插入图片描述

docker run
-> docker在本机寻找镜像(有:使用本机,没有:去docker hub 下载->(判读是否找到镜像)->有就下载,没有下载失败)
在这里插入图片描述

3.2、底层原理
docker 是一个client-server 结构系统,docker的守护进程运行在主机上,通过socket从客户端访问
dockerServer 接受客户端docker-client的指令,就是运行命令

四、docker常用命令操作======
4.1、帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 万能命令

4.2、帮助文档
官方网址:https://docs.docker.com/reference/
在这里插入图片描述

4.3、镜像命令

4.3.1、docker images (查看本机的所有镜像)
查看本机的所有镜像

[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

REPOSITORY    //仓库的仓库源 下载和运行皆可用
TAG                  //镜像的标签,版本
 IMAGE ID        //镜像的ID
CREATED         //镜像的创建时间
SIZE                 //镜像的大小
[root@localhost /]# docker images --help

可选项

  -a, --all        # 列出所有镜像
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet          # 只显示镜像的ID

4.3.2、docker search (搜索镜像)
官方网址:https://hub.docker.com/

[root@localhost /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11185     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4246      [OK]  

[root@localhost /]# docker search --help

可选项

  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output
docker search --filter=STARS=3000

搜索的是STARS 3000以上的结果

[root@localhost /]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11185     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4246      [OK]   

4.3.3、docker pull (下载镜像)
下载镜像 docker pull 镜像名[:tag(版本)]
默认版本下载

[root@localhost /]# docker pull mysql
Using default tag: latest          ##如果不写tag 默认是latest
latest: Pulling from library/mysql 
33847f680f63: Pull complete  # 分层下载,docker image 的核心,联合文件系统
5cb67864e624: Pull complete 
1a2b594783f5: Pull complete 
b30e406dd925: Pull complete 
48901e306e4c: Pull complete 
603d2b7147fd: Pull complete 
802aa684c1c4: Pull complete 
715d3c143a06: Pull complete 
6978e1b7a511: Pull complete 
f0d78b0ac1be: Pull complete 
35a94d251ed1: Pull complete 
36f75719b1a9: Pull complete 
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址

指定版本下载

[root@localhost /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
33847f680f63: Already exists  #已经下载过的不会再下载,联合文件系统的作用
5cb67864e624: Already exists 
1a2b594783f5: Already exists 
b30e406dd925: Already exists 
48901e306e4c: Already exists 
603d2b7147fd: Already exists 
802aa684c1c4: Already exists 
5b5a19178915: Pull complete 
f9ce7411c6e4: Pull complete 
f51f6977d9b2: Pull complete 
aeb6b16ce012: Pull complete 
Digest: sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

4.3.4、docker rmi -f 一般是放(ID)(删除镜像)
4.3.4.1、单个删除 docker rmi -f ****
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 8cf625070931 6 days ago 448MB
mysql latest c60d96bd2b77 6 days ago 514MB
hello-world latest d1165f221234 4 months ago 13.3kB

[root@localhost /]# docker rmi if 8cf625070931

Untagged: mysql:5.7
Untagged: mysql@sha256:be70d18aedc37927293e7947c8de41ae6490ecd4c79df1db40d1b5b5af7d9596
Deleted: sha256:8cf6250709314f2fcd2669e8643f5d3bdebfe715bddb63990c8c96e5d261d6fc
Deleted: sha256:452fe6896278c26338d547f8d1092011d923785247c46629b374d3477fe28c84
Deleted: sha256:bd40bf60af5d06e6b93eaf5a648393d97f70998faa3bfa1b85af55b5a270cb35
Deleted: sha256:c43e9e7d1e833650e0ed54be969d6410efa4e7fa6e27a236a44a2b97e412ee93
Deleted: sha256:70f18560bbf492ddb2eadbc511c58c4d01e51e8f5af237e3dbb319632f16335b
Error: No such image: if

4.3.4.2、删除全部 docker rmi if $(docker images -aq)

                               传入所有参数
[root@localhost /]# docker rmi if $(docker images -aq)

Untagged: mysql:latest
Untagged: mysql@sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Deleted: sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707
Deleted: sha256:5c8c91273faab368a6d659156f2569fa9f40b0e0139222fdf9eef073df4b3797
Deleted: sha256:33d8196a776f42a16f10395b66f10f91443b1fb194bca2a9b8dfb0deff5babb8
Deleted: sha256:3ec63323025213e3cabf17ac7933506dc5520ec49226a9764418f77ea60d35c8
Deleted: sha256:1f129b005b51b049ac84ed0775b82096d480b7d9308a9a137697f37346562266
Deleted: sha256:80ed209bd0434faa1ce31fbaab8508124dddf8f6502c5736ee4b8e46697a8477
Deleted: sha256:e53f0d35c77064014a5c1c1332d84d5f421a58418ca9c208bc470691c0e483e3
Deleted: sha256:75209fb28131d5537e73406ff0f6f508f3eb1f4d86c43d1d16df76fd28b9cc35
Deleted: sha256:34a01bee1a62a01034ffc3da48a3cb45716a0cf2e264c26663e02288e81c7ec2
Deleted: sha256:9f8bca37a56017fd3462d4fc329b0b20f97c2dd4c15e55a8e6ad1c023ab5552b
Deleted: sha256:c8a6e3f9a2412c28cd8c48e2c7bed5e7fbaa0ab6649add2dbe8641cb29b967f6
Deleted: sha256:0a26eacdbd862e75d064d817e8a5bcf5e060c2680c10f77ffa52757c0b8c3328
Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
Error: No such image: if
Error response from daemon: conflict: unable to delete d1165f221234 (must be forced) - image is being used by stopped container a94dc46269f9
[root@localhost /]# docker images 

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

4.3.4.3、运行中的无法删除,需要停止

4、删除命令整合

[root@localhost /]# docker rmi if 镜像id 指定镜像ID
[root@localhost /]# docker rmi if 镜像id 镜像id 镜像id 镜像id 删除多个镜像
[root@localhost /]# docker rmi if $(docker images -aq) 删除全部镜像

4.4、容器命令
说明:有了镜像才可以创建容器,linux 下载一个centos 镜像进行学习

4.4.1、下载镜像(docker pull ***)

docker pull centos

4.4.2、新建容器并启动(docker run ***)

命令示范:docker run -it centos /bin/bash

docker run [可选参数] image

参数说明

--name="Name" 容器名字
-d 后台方式运行
-it 使用交互方式运行(-i -t),进入容器内容
-p (小p)指定容器的端口 -p 8080:8080
   -p ip:主机端口:容器端口
   -p 主机端口:容器端口 (常用的)
   -p 容器端口
-P (大p)随机指定端口

测试,启动并进入容器

[root@localhost /]# docker run -it centos /bin/bash
[root@d6c1042e0fca /]# ls -a  #查看容器内的centos,基础版本 很多命令不完善
.  ..  .dockerenv  bin	dev  etc  home	lib  lib64  lost+found	media  mnt  opt  proc  root  run  sbin	srv  sys  tmp  usr  var
[root@d6c1042e0fca /]# exit #退出容器

4.4.3、列出所有的容器(docker ps ***)

命令示范:docker ps -a

docker ps 命令
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q # 只显示容器的编号

[root@localhost /]# docker ps -a

CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                      PORTS     NAMES
d6c1042e0fca   centos        "/bin/bash"   3 minutes ago   Exited (0) 57 seconds ago             boring_khayyam
a94dc46269f9   hello-world   "/hello"      2 hours ago     Exited (0) 2 hours ago                tender_brahmagupta

[root@localhost /]# docker ps -a -n=1

CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
d6c1042e0fca   centos    "/bin/bash"   6 minutes ago   Exited (0) 4 minutes ago             boring_khayyam

[root@localhost /]# docker ps -a -q

d6c1042e0fca
a94dc46269f9

4.4.4、退出容器 exit
exit #直接容器停止并退出

键盘:ctrl + p + q # 容器不停止退出
[root@localhost /]# docker run -it centos /bin/bash
[root@af300afbb0e7 /]# [root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# ^C
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
af300afbb0e7   centos    "/bin/bash"   30 seconds ago   Up 29 seconds             friendly_antonelli
[root@localhost /]# 

4.4.5、删除容器 docker rm
命令示范:

docker rm a94dc46269f9
docker rm a94dc46269f9 d6c1042e0fca
docker rm -f $(docker ps -aq)

docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器,如果要强制的话 rm -f
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q|xargs docker rm # 删除所有容器
示例
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
af300afbb0e7   centos        "/bin/bash"   3 minutes ago    Up 3 minutes                          friendly_antonelli
d6c1042e0fca   centos        "/bin/bash"   12 minutes ago   Exited (0) 10 minutes ago             boring_khayyam
a94dc46269f9   hello-world   "/hello"      2 hours ago      Exited (0) 2 hours ago                tender_brahmagupta
[root@localhost /]# docker rm a94dc46269f9
a94dc46269f9
[root@localhost /]# docker rm d6c1042e0fca
d6c1042e0fca
[root@localhost /]# docker rm -f $(docker ps -aq)
af300afbb0e7

4.4.6、启动和停止容器的操作 docker start
命令示范:docker start 076536eb29ee

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

示例

[root@localhost /]# docker run -it centos /bin/bash

[root@076536eb29ee /]# exit

exit
[root@localhost /]# 
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
076536eb29ee   centos    "/bin/bash"   10 seconds ago   Exited (0) 8 seconds ago             hungry_poincare

[root@localhost /]# docker start 076536eb29ee
076536eb29ee

[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
076536eb29ee   centos    "/bin/bash"   32 seconds ago   Up 7 seconds             hungry_poincare

[root@localhost /]# docker stop 076536eb29ee
076536eb29ee

[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

4.6、常用其他命令(重要)
4.6.1、后台启动容器 docker run -d 镜像名
命令示范:docker run -d centos

命令 docker run -d 镜像名

[root@localhost /]# docker run -d centos
f09dbc1f166df65ba6776d90e0cb34048545cf1bbceb62fee3066ce6d1874992
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

问题,docker ps 发现centos 停止了

常见问题的坑,docker 容器使用后台运行,必须有一个前台进程,docker发现没有应用,就会自动停止

例如 Nginx 容器启动后,发现自己没有提供服务,就没有程序了

4.6.2、查看日志命令 docker logs

命令示范:docker logs -tf --tail 10  35d5f73579e4

[root@localhost /]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

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)

##显示日志
-tf #显示日志
–tail number #显示日志条数

#示例1

[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo wangjinzhi;sleep 1;done"
35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
35d5f73579e4   centos    "/bin/sh -c 'while t…"   2 seconds ago    Up 1 second              jovial_almeida
076536eb29ee   centos    "/bin/bash"              15 minutes ago   Up 6 minutes             hungry_poin

[root@localhost /]# docker logs -tf --tail 10  35d5f73579e4

2021-07-28T18:21:02.645813184Z wangjinzhi
2021-07-28T18:21:03.647878765Z wangjinzhi
2021-07-28T18:21:04.650559598Z wangjinzhi
2021-07-28T18:21:05.653227572Z wangjinzhi

4.6.3、查看容器中进程信息 docker top
命令示范:docker top 35d5f73579e4

docker top  容器ID
[root@localhost /]# docker top 35d5f73579e4
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                14653               14635               0                   02:19               ?                   00:00:00            /bin/sh -c while true;do echo wangjinzhi;sleep 1;done
root                15057               14653               0                   02:25               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

4.6.4、查看镜像源数据 docker inspect
命令示范:docker inspect 35d5f73579e4


```bash
docker inspect --help
docker inspect 容器的ID

[root@localhost /]# docker inspect 35d5f73579e4
[
    {
        "Id": "35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1",
        "Created": "2021-07-28T18:19:58.286901967Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo wangjinzhi;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 14653,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-07-28T18:19:58.482388499Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/hostname",
        "HostsPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/hosts",
        "LogPath": "/var/lib/docker/containers/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1/35d5f73579e4aaf4541dd3502869d5639beb33ced2b270f45a7734ce89c795a1-json.log",
        "Name": "/jovial_almeida",
        "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/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506-init/diff:/var/lib/docker/overlay2/c4de15aec86063d86e42db0dc670a509073e9539dac0035a768d0cd468209e7b/diff",
                "MergedDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/merged",
                "UpperDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/diff",
                "WorkDir": "/var/lib/docker/overlay2/2f78575e381cb5665208a87ce784d3ffc8b74abf09fb72861eb9462e8b3af506/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "35d5f73579e4",
            "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 wangjinzhi;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": "eb693203a0cf3f06fce8b45e88d3b7b4ba0de90aaa531dfaa8782c06d0323183",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/eb693203a0cf",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "0762dbc9fb45620b4d5ceb10e0db26f9cd842add29a4de80ef3928716d41dace",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "41fd4c179d4f2f8b60a71fbf7a549867bb58f66f875932a204cab292ff00d993",
                    "EndpointID": "0762dbc9fb45620b4d5ceb10e0db26f9cd842add29a4de80ef3928716d41dace",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

4.6.5、进入当前正在运行的容器 docker exec、attach
命令示范:

```bash
docker exec -it 076536eb29ee /bin/bash
docker attach  35d5f73579e4 

方式一:

docker exec -it  容器ID baseShell (  例如:  /bin/bash  ,  /bin/sh  )
示例
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
35d5f73579e4   centos    "/bin/sh -c 'while t…"   12 minutes ago   Up 12 minutes             jovial_almeida
076536eb29ee   centos    "/bin/bash"              27 minutes ago   Up 18 minutes             hungry_poincare
[root@localhost /]# docker exec -it 076536eb29ee /bin/bash

方式二:

docker attach 容器ID
[root@localhost /]# docker attach  35d5f73579e4 
只是进入正在运行的程序

docker exec #进入容器后开启新的终端,可以在里面操作
docker attach #进入容器正在执行的终端,不会启动新的进程
4.6.6、从容器拷贝文件到主机 docker cp
docker cp 容器id:容器内路径 目的的主机路径
注意:这是在主机操作的,相当于在主机拿docker容器的等下

命令示范:docker cp a15cfade1217:home/test.go /home

[root@localhost data]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
a15cfade1217   centos    "/bin/bash"   About a minute ago   Up About a minute             magical_faraday

#进入dockers容器内部

[root@localhost data]# docker attach a15cfade1217

#新建一个内部文件
[root@a15cfade1217 /]# cd home/
[root@a15cfade1217 home]# touch
touch: missing file operand
Try ‘touch --help’ for more information.
[root@a15cfade1217 home]# touch test.go
[root@a15cfade1217 home]# exit
exit

将文件拷贝出来到主机上
[root@localhost data]# docker cp a15cfade1217:home/test.go /home
[root@localhost data]# cd /home/
[root@localhost home]# ls -a
. … test.go

拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现自动挂载

五、docker安装nginx示例======
5.1、docker pull nginx
5.2、运行nginx镜像
[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08b152afcfae 6 days ago 133MB
hello-world latest d1165f221234 4 months ago 13.3kB
centos latest 300e315adb2f 7 months ago 209MB

运行nginx

[root@localhost ~]# docker run -d --name nginx01 -p:3344:80 nginx

-d 后台运行

–name 给容器命名

-p 宿主机端口:容器端口

343f94bb0154c910e2e42559c2c75edcc6b6180f66a22f6bba7503d60acde8d7
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
343f94bb0154   nginx     "/docker-entrypoint.…"   6 seconds ago   Up 6 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01

运行测试

[root@localhost ~]# 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>

六、可视化面板======
6.1、portainer (先用这个)
Docker 图形化管理工具
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
访问测试:http://192.168.3.50:9000/
在这里插入图片描述

6.2、Rancher (CI/CD再用)

七、docker commit 镜像======

7.1、类似于git的原理
docker commit # 提交容器成为一个新的副本
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名 :[tag]
7.2、实战测试
1、启动默认的tomcat
2、发现默认的Tomcat没有webapps应用
3、现在我自己拷贝进去基本的文件
4、将修改后的容器提交位新的镜像,以后就可以使用,自己的修改后的镜像
[root@localhost ~]# docker commit -a"wang" -m=“add webapps” ed3120d64792 tomcat02:1.0
sha256:853b9408d6f8d2ae090488d1dd1b05dbbfd232bb6ffc68d69a34b27410832b19
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 853b9408d6f8 6 seconds ago 678MB
tomcat 9.0 46cfbf1293b1 5 days ago 668MB
tomcat latest 46cfbf1293b1 5 days ago 668MB
nginx latest 08b152afcfae 6 days ago 133MB
portainer/portainer latest 580c0e4e98b0 4 months ago 79.1MB
5、保持docker容器的当前状态

八、docker容器数据卷(精髓)docker run -it -v ======
如果数据保存在容器中,那么我们容器删除,数据会丢失
需求:数据可以持久化,数据存储在本地
容器之间可以有一个数据共享技术,docker容器中产生的数据同步到本地
这就是卷技术,说白了就是目录的挂载,将容器的目录挂载到linux里面
容器的持久化和同步操作,容器间也可以数据共享,双向绑定

docker run -it -v 主机的目录:容器内部目录
使用 do容id
在这里插入图片描述

测试

主机
在这里插入图片描述

容器
在这里插入图片描述

总结:可以在本地修改很多文件的配置文件以及目录

8.1、实在测试安装mysql

mysql的数据持久化问题 /data/*

[root@localhost ceshi]# docker pull mysql:5.7

注意运行mysql的时候需要密码
Start a mysql server instance
Starting a MySQL instance is simple:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw(密码) -d mysql:tag

... where some-mysql is the name you want to assign to your container, my-secret-pw is the password to be set for the MySQL root user and tag is the tag specifying the MySQL version you want. See the list above for relevant tags.

-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
–name 容器名字

[root@localhost ceshi]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
1054fa1631ae5c9c0ae4ed6e5d20f5f1b63b20e56187ddefcb236bd4fa50e67f
[root@localhost ceshi]# 

本地测试
在这里插入图片描述

挂载目录文件
在这里插入图片描述

假设容器删除了,挂载到本地的数据卷,依旧不会丢失

九、docker 安装Gogs,dorne,drone-runner-docker

GOGS百度

dorne 命令

docker run -d\
  --volume=/var/lib/drone:/data \
  --env=DRONE_DEBUG=true\
  --env=DRONE_LOGS_TRACE=true\
  --env=DRONE_LOGS_DEBUG=true\
  --env=DRONE_LOGS_PRETTY=true\
  --env=DRONE_AGENTS_ENABLED=true \
  --env=DRONE_GIT_ALWAYS_AUTH=true \
  --env=DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \
  --env=DRONE_SERVER_HOST=192.168.10.251:10080 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_GOGS_SERVER=http://192.168.10.251:3000 \
  --env=DRONE_USER_CREATE=username:wangjinzhi,admin:true \
  --publish=10080:80 \
  --publish=10443:443 \
  --restart=always \
  --detach=false \
  --name=drone \
  drone/drone

drone-runner-ssh 命令

docker run -d \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=192.168.10.251:10080 \
  -e DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \
  -e DRONE_DEBUG=true \
  -p 10081:3000 \
  --restart always \
  --name ssh-runner \
  drone/drone-runner-ssh


drone-runner-docker 命令

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=192.168.10.251:10080 \
  -e DRONE_RPC_SECRET=bca6ae9c4bc3022eb59f19642167068b \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=docker-runner \
  -e DRONE_DEBUG=true \
  -p 10082:3000 \
  --restart always \
  --name docker-runner \
  drone/drone-runner-docker

10、Docker 命令修改:更新配置
docker container update --restart=always 容器名字

https://github.com/Tinywan/dnmp

11、使用docker注意事项(nginx)
例如nginx 访问的时候 docker里面是 var/wwwroot 的存放路径 指向 宿主机的路径 data/wwwroot 当在配置nginx的时候需要写的是 docker里面的 路径root /var/wwwroot

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值