docker

docker

docker官网介绍

docker官网:https://www.docker.com/

文档介绍:https://docs.docker.com/reference/

image-20200917130313420

镜像仓库:https://hub.docker.com/

docker安装

镜像(image):docker镜像就相当于一个模板,通过模板创建容器

容器(container):就是运行的环境,通过镜像创建

仓库(repository):镜像存放的地方

查看linux系统配置:# cat /etc/os-release

1、清除旧的docker
sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine
2、安装docker依赖包
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 #阿里云库

成功截图:

image-20200917143621955

4、更新yum软件包索引

yum makecache fast

5、安装docker
yum install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
7、设置开机自启
systemctl enable docker
7、查看是否成功安装

docker version

image-20200917144523139

8、测试hello-world

docker run hello-world

image-20200917144910041

9、查看hello-world镜像

docker images

image-20200917145010627

 

 

10、卸载docker

删除依赖信息

yum remove docker-ce docker-ce-cli containerd.io

卸载资源

rm -rf /var/lib/docker
11、阿里云镜像加速

1、登录阿里云 找到容器镜像服务

image-20200917150251825

2、找到镜像加速器

image-20200917150826063

3、配置使用

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://9kl56hae.mirror.aliyuncs.com"] } EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

docker命令:

镜像

参考地址:https://docs.docker.com/reference/

1、查看镜像:
docker images

image-20200917160824408

docker images --help


-a, --all             Show all images (default hides intermediate images)  所有镜像    
-q, --quiet           Only show numeric IDs   只显示id

image-20200917161027550

2、搜索镜像
docker search mysql

image-20200917161452982

3、下载镜像

docker pull 镜像名 [tag版本]

# docker pull mysql 

Using default tag: latest             不写版本时 默认下载latest最新版本
latest: Pulling from library/mysql
d121f8d1c412: Pull complete            分层下载 docker images的核心  联合文件系统
f3cebc0b4691: Pull complete 
1862755a0b37: Pull complete 
489b44f3dbb4: Pull complete 
690874f836db: Pull complete 
baa8be383ffb: Pull complete 
55356608b4ac: Pull complete 
dd35ceccb6eb: Pull complete 
429b35712b19: Pull complete 
162d8291095c: Pull complete 
5e500ef7181b: Pull complete 
af7528e958b6: Pull complete 
Digest: sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808   防真伪 签名
Status: Downloaded newer image for mysql:latest   
docker.io/library/mysql:latest                 docker真实地址



docker pull mysql 等价于  docker pull docker.io/library/mysql:latest

# docker pull mysql:5.7


5.7: Pulling from library/mysql
d121f8d1c412: Already exists 
f3cebc0b4691: Already exists 
1862755a0b37: Already exists 
489b44f3dbb4: Already exists 
690874f836db: Already exists 
baa8be383ffb: Already exists 
55356608b4ac: Already exists 
277d8f888368: Pull complete  只下载新的
21f2da6feb67: Pull complete 
2c98f818bcb9: Pull complete 
031b0a770162: Pull complete 
Digest: sha256:14fd47ec8724954b63d1a236d2299b8da25c9bbb8eacc739bb88038d82da4919
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

image-20200917162917319

4、镜像删除
docker rmi -f 容器id                 删除单个容器
docker rmi -f 容器id  容器id          删除多个容器
docker rmi -f $(docker images -aq)   删除所有容器

image-20200917163413638

#  docker rmi  REPOSITORY:TAG 方式删除

 

image-20200925145302002

 

 

容器

1、运行容器
docker run 【可选参数】 image
#参数说明
--name="Name"  Name 容器名字  用来区分容器
-d             后台运行
-it            使用交互方式运行,可进入容器查看内容
-p             指定容器端口 -p 8080:8080
	-p 主机端口:主机端口(常用)
-P              随机指定端口


测试
#启动并进入容器
[root@MiWiFi-R4A-srv ~]#  docker run -it centos /bin/bash
[root@364002336de3 /]# 
2、退出命令
exit     #退出容器并关闭容器
ctrl+P+Q #退出容器不停止运行 
3、查看所有运行的容器
docker ps 
    #列出当前正在运行的容器
-a  #列出当前正在运行的容器+历史运行的容器
-p  #只显示容器的id
4、删除容器
docker rm 容器id          #删除指定容器  不能删除正在运行的容器, rm -f强制删除
docker rm  -f $(docker ps -aq) #删除所有容器
5、启动 停止 重启 容器
docker start   容器id 
docker restart 容器id
docker stop    容器id
docker kill    容器id   #强制停止当前容器

其他命令

后台运行
docker run -d # 后台运行命令  在前台必须有一个进程,不然无法运行 会自动杀死
查看日志
docker logs -tf  容器id           #查看所有日志
docker logs -tf --tail 10 容器id  #查看十条日志
查看容器中进程信息
docker top 容器id


[root@MiWiFi-R4A-srv ~]# docker top 88ad49298200
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22751               22735               0                   04:54               ?                   00:00:00            /bin/bash
查看容器原信息
命令:
 docker inspect 容器id


[root@MiWiFi-R4A-srv ~]# docker inspect 88ad49298200
[
    {
        "Id": "88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc",
        "Created": "2020-09-17T08:54:37.806023362Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 22751,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-09-17T08:54:38.148480809Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
        "ResolvConfPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/hostname",
        "HostsPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/hosts",
        "LogPath": "/var/lib/docker/containers/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc/88ad49298200220d096597a3f1f8e8abc796271cdb04d120dffbcd4e9fd4a1dc-json.log",
        "Name": "/charming_gould",
        "RestartCount": 0,
        "Driver": "devicemapper",
        "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,
            "Capabilities": null,
            "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": {
                "DeviceId": "27",
                "DeviceName": "docker-253:0-431582-94433450c6f551351a4373fdcf2c1ac6470f3915483c2845cb893ded046093e8",
                "DeviceSize": "10737418240"
            },
            "Name": "devicemapper"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "88ad49298200",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20200809",
                "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": "ec68d24408fb7209f9b4bcda28f6ba9ee4b086dbc8d911ef0b148b3a436700d1",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/ec68d24408fb",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "d27c20775e76bc7d513652c52fabe4083b81a3a3b0e3da5b7fae55ba1062f1b2",
            "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": "083dcd542372f2ac8c5fe888c2950edc253f0ce05a15e6e41531c52f81d7ce61",
                    "EndpointID": "d27c20775e76bc7d513652c52fabe4083b81a3a3b0e3da5b7fae55ba1062f1b2",
                    "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
                }
            }
        }
    }
进入当前正在运行的容器
方式一:进入当前容器
# docker exec -it 容器id /bin/bash

测试
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
51c69d615b7d        centos              "/bin/bash"         25 seconds ago      Up 23 seconds                           hardcore_brattain
[root@MiWiFi-R4A-srv ~]# docker exec -it  51c69d615b7d /bin/bash
[root@51c69d615b7d /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

方式二:

# docker attach 容器id

进入容器执行命令


区别:
docker exec -it 容器id /bin/bash   进入容器开启一个新的终端,可以在里边操作(常用)
ocker attach 容器id                进入容器中正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机

从容器/home文件夹中拷贝/text.java到本机home文件夹下

# docker cp 容器id:/home/text.java /home

 

[root@MiWiFi-R4A-srv ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
51c69d615b7d        centos              "/bin/bash"         4 minutes ago       Up 4 minutes                            hardcore_brattain
[root@MiWiFi-R4A-srv ~]# docker attach 51c69d615b7d
[root@51c69d615b7d /]# ll
bash: ll: command not found
[root@51c69d615b7d /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@51c69d615b7d /]# cd /home/
[root@51c69d615b7d home]# ll
bash: ll: command not found
[root@51c69d615b7d home]# ls
[root@51c69d615b7d home]# touch text.java
[root@51c69d615b7d home]# ls
text.java
[root@51c69d615b7d home]# read escape sequence
[root@MiWiFi-R4A-srv ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
51c69d615b7d        centos              "/bin/bash"         18 minutes ago      Up 18 minutes                           hardcore_brattain
[root@MiWiFi-R4A-srv ~]# docker cp 51c69d615b7d:/home/text.java /home
[root@MiWiFi-R4A-srv ~]# cd /home/
[root@MiWiFi-R4A-srv home]# ls
text.java

image-20200918113734818

命令小节

image-20200918115023095

image-20200918115046269

image-20200918115122895

访问docker配置的容器

image-20200918154806850

 

 

 

posted @   大旭4521  阅读(145)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示