docker安装及常用命令
docker安装及常用命令

docker安装及常用命令

docker和docker-compose安装

1.安装docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.设置开机启动docker

systemctl enable docker

3.查看是否启动

docker ps -a
等同于:::
docker container ls -a

=>>>

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

说明没有启动

4.启动docker

systemctl start docker
[root@instance-06qq0w7c ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

5.centos阿里镜像加速器

  1. 安装/升级Docker客户端

推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce

  1. 配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

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

6.测试一下

sudo docker run hello-world

如下即成功:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

7.安装docker-compose

curl -L https://get.daocloud.io/docker/compose/release/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

有问题的话试一下这个下载:

curl -L "https://get.daocloud.io/docker/compose/releases/download/v1.25.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

8.docker-compose测试

docker-compose -v

命令

1.基本命令

sudo docker --version  # Docker版本
docker  # 查看到Docker客户端的所有命令选项
docker command --help  # 更深入的了解指定的Docker命令使用方法
eg:docker contanier --help

也可以去查看文档,更直观

1.容器相关命令

1.载入镜像
docker pull 镜像名
2.使用镜像启动(新建)一个容器
docker run command 镜像名
eg: docker run -it ubunu bash
3.查看容器列表
docker container ls -a
4.启动容器
docker container start 容器名字/容器ID
5.停止容器
docker container stop 容器名字
6.连接容器
docker exec -it 容器名字 /bin/sh
7.查看日志
docker logs 容器名字
8.删除容器 
docker container rm 容器名

2.镜像相关的命令

1.搜索镜像
- 在hub.docker.com搜索你要的镜像,然后根据页面提示,下载命令格式
- 也可以使用docker search命令
    docker search ubuntu

2.下载镜像
docker pull 镜像名
eg: docker pull ubuntu:18.04

3.查看镜像列表
dockers images ls

4.删除镜像
docker images rm 镜像名

5.删除hello-world镜像

3.从容器内拷贝内容到主机上

docker cp 容器id:容器内路径 目的主机地址
eg:sudo docker cp 20eb68f932b9:/test.py /home/lemon/docker_test/

docker cp 主机地址 目的地容器id:容器内路径

4.容器数据卷(volume)

# 1.容器关闭再打开,数据不受影响
# 2.容器删除,数据丢失

# 3.如何容器数据持久化存储?————将容器内数据同步到本地(宿主机)
docker run -it -v 宿主机目录:容器内目录
sudo docker run --name ubuntu -it -v /home/lemon/docker_test/ubuntu:/home ubuntu bash
# 获取容器/镜像的源数据(查看)
docker inpect 容器id(名)/镜像id
eg:sudo docker inspect ubuntu
主要看"Binds"字段:::
"Binds": [
                "/home/lemon/docker_test/ubuntu:/home"
            ]

上述代码第3:

两侧目录同步

上述代码第4:

[lemon@iZbp159egvvktszc82dr5xZ ubuntu]$ sudo docker inspect ubuntu
[
    {
        "Id": "5736985f32b7242d64e59104f0bbc701b5b051e897bb8c05bc32385f4fbdaf73",
        "Created": "2022-04-18T14:57:39.22315383Z",
        "Path": "bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 7392,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-18T14:57:40.24184103Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1",
        "ResolvConfPath": "/var/lib/docker/containers/5736985f32b7242d64e59104f0bbc701b5b051e897bb8c05bc32385f4fbdaf73/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/5736985f32b7242d64e59104f0bbc701b5b051e897bb8c05bc32385f4fbdaf73/hostname",
        "HostsPath": "/var/lib/docker/containers/5736985f32b7242d64e59104f0bbc701b5b051e897bb8c05bc32385f4fbdaf73/hosts",
        "LogPath": "",
        "Name": "/ubuntu",
        "RestartCount": 0,
        "Driver": "overlay2",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/home/lemon/docker_test/ubuntu:/home"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "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/187aac8eac08a46fd7989a8b07d29912b571223bac9fa4a8f04cbb5b81de6635-init/diff:/var/lib/docker/overlay2/2face3fa0ecfebc18ba13858c9ac96877e73b4695d4dba332b11173932858418/diff",
                "MergedDir": "/var/lib/docker/overlay2/187aac8eac08a46fd7989a8b07d29912b571223bac9fa4a8f04cbb5b81de6635/merged",
                "UpperDir": "/var/lib/docker/overlay2/187aac8eac08a46fd7989a8b07d29912b571223bac9fa4a8f04cbb5b81de6635/diff",
                "WorkDir": "/var/lib/docker/overlay2/187aac8eac08a46fd7989a8b07d29912b571223bac9fa4a8f04cbb5b81de6635/work"
            }
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/lemon/docker_test/ubuntu",
                "Destination": "/home",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "5736985f32b7",
            "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": [
                "bash"
            ],
            "Image": "ubuntu",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "05035f3c73eeaa64a27c0f39e13b2b00665817a1f0e5f6e0c43cfc26b1827d4d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/05035f3c73ee",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "88250e98e8d9a163e0e566d0b30ec4a43ca130a36223725a71632061e1326c87",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.4",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:04",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "fa013d46d568a0cc82480164817953ccb38d822e60778e403be35e2a3da09f38",
                    "EndpointID": "88250e98e8d9a163e0e566d0b30ec4a43ca130a36223725a71632061e1326c87",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04"
                }
            }
        }
    }
]

5.具名挂载和匿名挂载

  • 匿名挂载:-v容器内路径(挂载时不指定外部宿主机路径)
    概念:挂载时没有对外部数据文件命名

  • eg:sudo docker run --name mysql -d -P -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 mysql:5.7
[lemon@iZbp159egvvktszc82dr5xZ ~]$ sudo docker volume ls
DRIVER              VOLUME NAME
local               1539d0ebc0afcc67c55b9e7b6b86c527296a3610ae70482b479fe1d88500963c
  • 具名挂载:-v 卷名:容器内路径

  • eg:sudo docker run --name mysql -d -P -v mysql-conf:/etc/mysql/conf.d -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 mysql:5.7
  • # 不指定外部宿主机路径,查看:
    sudo docker volume inspect mysql-conf

发表回复

您的电子邮箱地址不会被公开。