docker學(xué)習(xí)筆記-基礎(chǔ)理論、環(huán)境搭建、常用命令(一)

1、docker作用

a、搭建測(cè)試環(huán)境 再也不用搶分支了
b、搭建測(cè)試執(zhí)行環(huán)境
c、搭建各類服務(wù)

2、docker和虛擬機(jī)的區(qū)別

docker無(wú)虛擬化內(nèi)核,使用宿主機(jī)的內(nèi)核

3、docker的關(guān)鍵技術(shù)

namespace:linux命名空間,隔離網(wǎng)絡(luò)
Cgroups:限制和隔離進(jìn)程資源(cpu、內(nèi)存)
聯(lián)合文件系統(tǒng):隔離文件視圖

4、docker安裝

參考官方文檔:https://docs.docker.com/install/linux/docker-ce/centos/
下面是 centos 上安裝 docker 的命令示例過(guò)程

安裝依賴

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

添加 docker 的yum鏡像源,如果在國(guó)內(nèi),添加阿里云的鏡像源

安裝 docker 官方的鏡像源

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

如果在國(guó)內(nèi),安裝阿里云的鏡像

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

安裝指定版本的 docker 并且啟動(dòng)服務(wù)

安裝 docker

$ yum install -y docker-ce

安裝指定版本號(hào)的 docker,以下是 k8s 官方推薦的 docker 版本號(hào) (此時(shí),k8s 的版本號(hào)在 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 安裝成功后,可以使用以下命令查看版本號(hào)

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

查看更詳細(xì)的版本號(hào)信息

$ docker version

查看docker的詳細(xì)配置信息

$ docker info

5、鏡像管理命令(舉個(gè)??:jenkins)

docker鏡像的下載地址:https://hub.docker.com/

  • 1.docker pull {image_name} (拉取鏡像)
docker pull jenkins/jenkins:lts
    1. docker push {image_name} (推送鏡像)--需要先加個(gè)版本號(hào) 然后才能將鏡像推送到私有倉(cāng)庫(kù)(ps:目前不清楚怎么創(chuàng)建私有倉(cāng)庫(kù) todo...)
docker push jenkins/jenkins:1.0 
    1. docker images (查看當(dāng)前機(jī)器的所有鏡像)
[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:倉(cāng)庫(kù)    docker.io/jenkins/jenkins:鏡像存放地址/鏡像名稱
    - TAG:鏡像版本號(hào)  不加版本號(hào)默認(rèn)會(huì)加最新的版本號(hào) latest
    - IMAGE ID:鏡像ID  全球唯一
    - CREATED:鏡像制作時(shí)間
    - SIZE:鏡像所占的磁盤時(shí)間
    1. docker rmi {image_name} (刪除當(dāng)前機(jī)器的一個(gè)鏡像)
    1. docker tag {source_images_name:tag your_image_name:tag} 為一個(gè)鏡像打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 (將當(dāng)前機(jī)器上鏡像保存到tar包) 沒(méi)有網(wǎng)絡(luò)的情況下會(huì)使用到
[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 (將鏡像下載到另外的機(jī)器)沒(méi)有網(wǎng)絡(luò)的情況下會(huì)使用到
[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} (運(yùn)行容器)
      參數(shù):
      • --name 指定容器名稱 sandrajenkins
      • -d 后臺(tái)運(yùn)行
      • -port 指定端口映射規(guī)則 -p 8080(本機(jī)端口):8080(容器端口) -p 50000:50000
      • --network 指定容器運(yùn)行的網(wǎng)絡(luò)模式 待補(bǔ)充
      • -v 指定需要掛載的數(shù)據(jù)卷 容器不會(huì)持久化數(shù)據(jù)所以需要掛載(文件映射,宿主機(jī)的目錄發(fā)送變化則容器的目錄會(huì)發(fā)生變化)
      • -env 指定需要傳遞給容器的環(huán)境變量 待補(bǔ)充
      • 鏡像名稱 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 {查看當(dāng)前所有容器}
[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:容器的唯一標(biāo)識(shí)
IMAGE :容器是通過(guò)哪個(gè)鏡像啟動(dòng)的
COMMAND:啟動(dòng)名稱
CREATED :容器創(chuàng)建時(shí)間
STATUS :當(dāng)前狀態(tài)
PORTS :端口號(hào)
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、查詢信息相關(guān)命令

    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服務(wù)的信息)
[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 {容器名稱} (查看容器的元數(shù)據(jù))
[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 進(jìn)入容器,exec的意思是在容器中運(yùn)行一個(gè)命令。 如果是bash 并且指定了-it 就會(huì)打開(kāi)容器的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} 把宿主機(jī)上的一個(gè)文件copy到容器中
[root@VM_0_4_centos jenkins_home]# docker cp start.sh sandrajenkins:/var/jenkins_home
  • 3、容器內(nèi)操作
[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

環(huán)境搭建部分也可參考:https://juejin.im/post/5dd72b16e51d45351409073d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容