docker学习笔记-基础理论、环境搭建、常用命令(一)

1、docker作用

a、搭建测试环境 再也不用抢分支了
b、搭建测试执行环境
c、搭建各类服务

2、docker和虚拟机的区别

docker无虚拟化内核,使用宿主机的内核

3、docker的关键技术

namespace:linux命名空间,隔离网络
Cgroups:限制和隔离进程资源(cpu、内存)
联合文件系统:隔离文件视图

4、docker安装

参考官方文档:https://docs.docker.com/install/linux/docker-ce/centos/
下面是 centos 上安装 docker 的命令示例过程

安装依赖

$ yum install -y yum-utils device-mapper-persistent-data lvm2

添加 docker 的yum镜像源,如果在国内,添加阿里云的镜像源

安装 docker 官方的镜像源

$ 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

安装指定版本的 docker 并且启动服务

安装 docker

$ yum install -y docker-ce

安装指定版本号的 docker,以下是 k8s 官方推荐的 docker 版本号 (此时,k8s 的版本号在 v1.16)

$ yum install -y docker-ce-18.06.2.ce
$ systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

$ systemctl start docker

docker 安装成功后,可以使用以下命令查看版本号

$ docker --version
Docker version 18.06.2-ce, build 6d37f41

查看更详细的版本号信息

$ docker version

查看docker的详细配置信息

$ docker info

5、镜像管理命令(举个:jenkins)

docker镜像的下载地址:https://hub.docker.com/

  • 1.docker pull {image_name} (拉取镜像)
docker pull jenkins/jenkins:lts
    1. docker push {image_name} (推送镜像)--需要先加个版本号 然后才能将镜像推送到私有仓库(ps:目前不清楚怎么创建私有仓库 todo...)
docker push jenkins/jenkins:1.0 
    1. docker images (查看当前机器的所有镜像)
[root@VM_0_4_centos ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/jenkins/jenkins   1.0                 22b8b9a84dbe        9 days ago          568 MB
    - REPOSITORY:仓库    docker.io/jenkins/jenkins:镜像存放地址/镜像名称
    - TAG:镜像版本号  不加版本号默认会加最新的版本号 latest
    - IMAGE ID:镜像ID  全球唯一
    - CREATED:镜像制作时间
    - SIZE:镜像所占的磁盘时间
    1. docker rmi {image_name} (删除当前机器的一个镜像)
    1. docker tag {source_images_name:tag your_image_name:tag} 为一个镜像打tag
[root@VM_0_4_centos ~]# docker tag  docker.io/jenkins/jenkins:lts  docker.io/jenkins/jenkins:1.0

[root@VM_0_4_centos ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/jenkins/jenkins   1.0                 22b8b9a84dbe        9 days ago          568 MB
docker.io/jenkins/jenkins   lts                 22b8b9a84dbe        9 days ago          568 MB
    1. docker save jenkins > jenkins.tar (将当前机器上镜像保存到tar包) 没有网络的情况下会使用到
[root@VM_0_4_centos ~]# docker save docker.io/jenkins/jenkins > jenkins.tar
[root@VM_0_4_centos ~]# ll
总用量 565880
-rw-r--r-- 1 root root 579456512 11月 30 10:24 jenkins.tar
    1. docker load < jenkins.tar (将镜像下载到另外的机器)没有网络的情况下会使用到
[root@VM_0_4_centos ~]# docker load < jenkins.tar 
Loaded image: docker.io/jenkins/jenkins:lts
    1. docker 修改镜像名称
[root@VM_0_4_centos ~]# docker tag  docker.io/jenkins/jenkins:lts  sandrajenkins
[root@VM_0_4_centos ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
sandrajenkins               latest              22b8b9a84dbe        9 days ago          568 MB
docker.io/jenkins/jenkins   1.0                 22b8b9a84dbe        9 days ago          568 MB
docker.io/jenkins/jenkins   lts                 22b8b9a84dbe        9 days ago          568 MB
  • 踩坑:删除镜像 需要先删除tag
[root@VM_0_4_centos ~]# docker rmi 22b8b9a84dbe
Error response from daemon: conflict: unable to delete 22b8b9a84dbe (must be forced) - image is referenced in multiple repositories
[root@VM_0_4_centos ~]# docker rmi docker.io/jenkins/jenkins:1.0
Untagged: docker.io/jenkins/jenkins:1.0

6、容器的管理命令

    1. docker run --name={your_name} --d {image_name} (运行容器)
      参数:
      • --name 指定容器名称 sandrajenkins
      • -d 后台运行
      • -port 指定端口映射规则 -p 8080(本机端口):8080(容器端口) -p 50000:50000
      • --network 指定容器运行的网络模式 待补充
      • -v 指定需要挂载的数据卷 容器不会持久化数据所以需要挂载(文件映射,宿主机的目录发送变化则容器的目录会发生变化)
      • -env 指定需要传递给容器的环境变量 待补充
      • 镜像名称 sandrajenkins
[root@VM_0_4_centos jenkins]# docker run --name  sandrajenkins -d -p 8080:8080 -p 50000:50000   sandrajenkins
9a0fa36a1857b75d4bdfe7e28f986d055b7b63c4a676ae0820e9eeb772dd6e71
    1. docker ps -s -a {查看当前所有容器}
[root@VM_0_4_centos jenkins]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
9a0fa36a1857        sandrajenkins       "/sbin/tini -- /us..."   7 minutes ago       Up 7 minutes        0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   sandrajenkins
CONTAINER ID:容器的唯一标识
IMAGE :容器是通过哪个镜像启动的
COMMAND:启动名称
CREATED :容器创建时间
STATUS :当前状态
PORTS :端口号
NAMES:容器的名称

[root@VM_0_4_centos jenkins]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES               SIZE
9a0fa36a1857        sandrajenkins       "/sbin/tini -- /us..."   10 minutes ago      Up 10 minutes       0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   sandrajenkins       2.42 MB (virtual 570 MB)
SIZE:容器所占的磁盘空间  2.42 MB (virtual 570 MB-> 镜像大小)

[root@VM_0_4_centos jenkins]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
9a0fa36a1857        sandrajenkins       "/sbin/tini -- /us..."   13 minutes ago      Up 13 minutes       0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   sandrajenkins

    1. docker stop {container_name} (停止容器)
[root@VM_0_4_centos jenkins]# docker stop 9a0fa36a1857
9a0fa36a1857

[root@VM_0_4_centos jenkins]# docker stop sandrajenkins
sandrajenkins
    1. docker kill (container_name) {杀死容器}
[root@VM_0_4_centos jenkins]# docker kill 9a0fa36a1857
9a0fa36a1857
    1. docker rm -f {container_name} (删除容器) 需要先停止才能删除
[root@VM_0_4_centos jenkins]# docker rm -f sandrajenkins
sandrajenkins
    1. docker restart {container_name} (重启容器)
[root@VM_0_4_centos jenkins]# docker restart 9a0fa36a1857
9a0fa36a1857

[root@VM_0_4_centos jenkins]# docker restart sandrajenkins
sandrajenkins

7、查询信息相关命令

    1. docker logs -f {容器名称} (查看容器日志)
[root@VM_0_4_centos jenkins]# docker logs -f sandrajenkins 
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2019-11-30 04:01:28.690+0000 [id=1] INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @618ms to org.eclipse.jetty.util.log.JavaUtilLog
2019-11-30 04:01:28.875+0000 [id=1] INFO    winstone.Logger#logInternal: Beginning extraction from war file
2019-11-30 04:01:30.285+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2019-11-30 04:01:30.380+0000 [id=1] INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.z-SNAPSHOT; built: 2019-05-02T00:04:53.875Z; git: e1bc35120a6617ee3df052294e433f3a25ce7097; jvm 1.8.0_232-b09
2019-11-30 04:01:30.716+0000 [id=1] INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2019-11-30 04:01:30.786+0000 [id=1] INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2019-11-30 04:01:30.786+0000 [id=1] INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2019-11-30 04:01:30.792+0000 [id=1] INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms
Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2019-11-30 04:01:31.471+0000 [id=1] INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@53499d85{Jenkins v2.190.3,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
2019-11-30 04:01:31.514+0000 [id=1] INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@302c971f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2019-11-30 04:01:31.514+0000 [id=1] INFO    org.eclipse.jetty.server.Server#doStart: Started @3443ms
2019-11-30 04:01:31.516+0000 [id=20]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine v4.0 running: controlPort=disabled
2019-11-30 04:01:32.974+0000 [id=27]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2019-11-30 04:01:33.043+0000 [id=25]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2019-11-30 04:01:34.813+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2019-11-30 04:01:34.824+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2019-11-30 04:01:34.871+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2019-11-30 04:01:35.878+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2019-11-30 04:01:35.937+0000 [id=41]    INFO    hudson.model.AsyncPeriodicWork$1#run: Started Download metadata
2019-11-30 04:01:35.978+0000 [id=41]    INFO    hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2019-11-30 04:01:37.199+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#prepareRefresh: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@16869b76: display name [Root WebApplicationContext]; startup date [Sat Nov 30 04:01:37 UTC 2019]; root of context hierarchy
2019-11-30 04:01:37.199+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#obtainFreshBeanFactory: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@16869b76]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1ce688fd
2019-11-30 04:01:37.215+0000 [id=25]    INFO    o.s.b.f.s.DefaultListableBeanFactory#preInstantiateSingletons: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1ce688fd: defining beans [authenticationManager]; root of factory hierarchy
2019-11-30 04:01:37.452+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#prepareRefresh: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@512cef0f: display name [Root WebApplicationContext]; startup date [Sat Nov 30 04:01:37 UTC 2019]; root of context hierarchy
2019-11-30 04:01:37.453+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#obtainFreshBeanFactory: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@512cef0f]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1b6cd3c6
2019-11-30 04:01:37.453+0000 [id=25]    INFO    o.s.b.f.s.DefaultListableBeanFactory#preInstantiateSingletons: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1b6cd3c6: defining beans [filter,legacy]; root of factory hierarchy
2019-11-30 04:01:37.825+0000 [id=25]    INFO    jenkins.install.SetupWizard#init: 
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
a10041557c8a40e3bf41f44988799d43
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
    1. docker info (查看docker服务的信息)
[root@VM_0_4_centos jenkins]# docker info
Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 3
Server Version: 1.13.1
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version:  (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 9c3c5f853ebf0ffac0d087e94daef462133b69c7 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  WARNING: You're not using the default seccomp profile
  Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-957.21.3.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.701 GiB
Name: VM_0_4_centos
ID: X5DL:YS5M:QDPL:H665:FPT7:PAOU:N7ZK:RR25:IHH4:3THZ:2S52:MXS2
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
    1. docker inspect {容器名称} (查看容器的元数据)
[root@VM_0_4_centos jenkins]# docker inspect sandrajenkins
[
    {
        "Id": "6181f0aab75e39107e6e1e35093b265bb22141966d5dac795255a1c8e5218b1b",
        "Created": "2019-11-30T04:01:27.718420678Z",
        "Path": "/sbin/tini",
        "Args": [
            "--",
            "/usr/local/bin/jenkins.sh"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 30012,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-11-30T04:01:28.042010247Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:22b8b9a84dbe855962512a090bd80087584626b645f77e0cfd69398f10ad6eda",
        "ResolvConfPath": "/var/lib/docker/containers/6181f0aab75e39107e6e1e35093b265bb22141966d5dac795255a1c8e5218b1b/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/6181f0aab75e39107e6e1e35093b265bb22141966d5dac795255a1c8e5218b1b/hostname",
        "HostsPath": "/var/lib/docker/containers/6181f0aab75e39107e6e1e35093b265bb22141966d5dac795255a1c8e5218b1b/hosts",
        "LogPath": "",
        "Name": "/sandrajenkins",
        "RestartCount": 0,
        "Driver": "overlay2",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {
                "50000/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "50000"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "docker-runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": -1,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Name": "overlay2",
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/4915f385b4296250f062e6fc4c8f5d810481d42d73ceedbec12a62ec5a0e6ba3-init/diff:/var/lib/docker/overlay2/24b281d90ad227bea57249fdf1825777f91172c4e898c8fa97c42390555b21de/diff:/var/lib/docker/overlay2/b543fabb295340447dd4c8e7cd5eed7ec94206f612cb8885082f700089f91464/diff:/var/lib/docker/overlay2/26c4a625a359fb0d7ee8767dd818eb9245865f275ff273f3324d8ecccd014951/diff:/var/lib/docker/overlay2/0b9600575fea72430e46e695d2a322b0c386eae29c6f982d6b19a8c861ceb570/diff:/var/lib/docker/overlay2/dad8df63591123025fa6f4c45b8a554f5424c6a7668d5266f47b37de9221682a/diff:/var/lib/docker/overlay2/88b5275e82a7daacfc89ad0648737fab235f3cd0d65669c11ee610901c8857ef/diff:/var/lib/docker/overlay2/960eafffcafbd912a2f1b7def238b8c48e1de914c65ea1ad9900e798e506b77b/diff:/var/lib/docker/overlay2/3bfb23cbe887cadbe4f899f88eeb453c7a94bea6f7edb7d926c2e16d3b41a359/diff:/var/lib/docker/overlay2/ed85098f0c828e26e4a45eb762c9c3ec408d70e608cfaf96f5308dbccd35f6b2/diff:/var/lib/docker/overlay2/81d46f1b7cec18bd1fd17308ee6c5a5fb390f0e14211b23c6136ff89a59d4113/diff:/var/lib/docker/overlay2/3792b5e076cb2cd3fbe82e08235e013b89be08f5fe0057de8ce87422cbaeb802/diff:/var/lib/docker/overlay2/a178f65f381fa9436a1746d478a31f9d0e48fb929d5246e02c46d23b5de00336/diff:/var/lib/docker/overlay2/40d54e01a114fc28544c627829e52de1e42cd1af0ed452293dce133703dc6726/diff:/var/lib/docker/overlay2/6462b53ff17e6db9ba16337fc3ff51ba0007388a42d2000e497420cf7948af1b/diff:/var/lib/docker/overlay2/07694669566b1224fa9016dcf5a0c8b1ac48f082cf81c97ccd0dbb8051d9d777/diff:/var/lib/docker/overlay2/9190d964377768e482b100aa710e540a7c1b6c14ebc912b31db43d726b453dcc/diff:/var/lib/docker/overlay2/d12b3fb262dff96089f6b15a5678493f006ac7f3acc06cf4e1424d1429a9f1d2/diff:/var/lib/docker/overlay2/5ff3d3f513bb2ae2cef660ee426d62ac984b1a7b79d0a7543c46f8d7a4800e8d/diff",
                "MergedDir": "/var/lib/docker/overlay2/4915f385b4296250f062e6fc4c8f5d810481d42d73ceedbec12a62ec5a0e6ba3/merged",
                "UpperDir": "/var/lib/docker/overlay2/4915f385b4296250f062e6fc4c8f5d810481d42d73ceedbec12a62ec5a0e6ba3/diff",
                "WorkDir": "/var/lib/docker/overlay2/4915f385b4296250f062e6fc4c8f5d810481d42d73ceedbec12a62ec5a0e6ba3/work"
            }
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "e98649401bdba44a16c1075ab876433962afa8502e40a16f0c9e11d7c7576d01",
                "Source": "/var/lib/docker/volumes/e98649401bdba44a16c1075ab876433962afa8502e40a16f0c9e11d7c7576d01/_data",
                "Destination": "/var/jenkins_home",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "6181f0aab75e",
            "Domainname": "",
            "User": "jenkins",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "50000/tcp": {},
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=C.UTF-8",
                "JAVA_HOME=/usr/local/openjdk-8",
                "JAVA_VERSION=8u232",
                "JAVA_BASE_URL=https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_",
                "JAVA_URL_VERSION=8u232b09",
                "JENKINS_HOME=/var/jenkins_home",
                "JENKINS_SLAVE_AGENT_PORT=50000",
                "REF=/usr/share/jenkins/ref",
                "JENKINS_VERSION=2.190.3",
                "JENKINS_UC=https://updates.jenkins.io",
                "JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental",
                "JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals",
                "COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log"
            ],
            "Cmd": null,
            "Image": "sandrajenkins",
            "Volumes": {
                "/var/jenkins_home": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "/sbin/tini",
                "--",
                "/usr/local/bin/jenkins.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "8920f8d25472111fdb7b2f4d7d482ee06bc06075b8a48afc86fce201d4b717a4",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "50000/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "50000"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/8920f8d25472",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "50743c3b65849410316f64bf7584b0a267056bada59c66d6e663b24fe2670ccd",
            "Gateway": "172.18.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.18.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:12:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "4852b86324ccb7d865d991bae4480fc9509e909e063c782efbc279ab0cc23781",
                    "EndpointID": "50743c3b65849410316f64bf7584b0a267056bada59c66d6e663b24fe2670ccd",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:02"
                }
            }
        }
    }
]


7、与docker容器的交互命令

    1. docker exec -it {容器名称} bash 进入容器,exec的意思是在容器中运行一个命令。 如果是bash 并且指定了-it 就会打开容器的shell 交互
[root@VM_0_4_centos jenkins]# docker  exec  -it sandrajenkins bash
jenkins@6181f0aab75e:/$ ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

    1. docker cp {host_path} /{host_file_name} {container name}:{container_path} 把宿主机上的一个文件copy到容器中
[root@VM_0_4_centos jenkins_home]# docker cp start.sh sandrajenkins:/var/jenkins_home
  • 3、容器内操作
[root@VM_0_4_centos ~]# docker exec sandrajenkins  echo "hi"
hi
[root@VM_0_4_centos ~]# docker exec sandrajenkins  ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=1 ttl=47 time=9.30 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=2 ttl=47 time=9.28 ms

踩坑1:docker挂了怎么解决?

image.png

踩坑2: docker容器删不掉怎么办?
参考:https://cloud.tencent.com/developer/article/1386135

环境搭建部分也可参考:https://juejin.im/post/5dd72b16e51d45351409073d

你可能感兴趣的:(docker学习笔记-基础理论、环境搭建、常用命令(一))