专栏首页咸鱼的进阶学习之路Docker快速上手指北(一)【技术创作101训练营】
原创

Docker快速上手指北(一)【技术创作101训练营】

本文以视频教程 https://www.bilibili.com/video/BV1og4y1q7M4 为基础,忽略部分基础原理,保留操作过程代码和结果截图,旨在对docker镜像和容器基本命令提供可快速上手并有可操作性的练习指南。

Docker的常用命令

image-20200908230617754.png

帮助命令

docker version						# 显示docker的版本信息
docker info							# 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help(man docker 命令) # 帮助命令

帮助文档的地址:https://docs.docker.com/engine/reference/commandline/docker/

镜像命令

docker images 查看所有本地的主机上的镜像

[root@VM_0_13_centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB

# 解释
REPOSITORY	镜像的仓库源(镜像名)
TAG			镜像的标签
IMAGE ID	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小

# 可选项
  -a, --all             # 列出所有镜像
  -q, --quiet           # 只显示镜像的id

docker search 搜索镜像

[root@VM_0_13_centos ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9942                [OK]              
mariadb                           MariaDB is a community-developed fork of MyS…   3636                [OK]

# 可选项,通过收藏来过滤
--filter=STARS=3000		# 搜索出来的镜像就是STARS大于3000的

docker pull 下载镜像

# 下载镜像  docker pull 镜像名[:tag]
[root@VM_0_13_centos ~]# docker pull mysql
Using default tag: latest	# 如果不写tag,默认就是 latest
latest: Pulling from library/mysql
bf5952930446: Pull complete	# 分层下载,docker images的核心 联合文件系统
8254623a9871: Pull complete
938e3e06dac4: Pull complete
ea28ebf28884: Pull complete
f3cef38785c2: Pull complete
894f9792565a: Pull complete
1d8a57523420: Pull complete
6c676912929f: Pull complete
3cdd8ff735c9: Pull complete
4c70cbe51682: Pull complete
e21cf0cb4dc3: Pull complete
28c36cd3abcc: Pull complete
Digest: sha256:6ded54eb1e5d048d8310321ba7b92587e9eadc83b519165b70bbe47e4046e76a	# 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest	# 真实地址

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

# 指定版本下载
[root@VM_0_13_centos ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
bf5952930446: Already exists
8254623a9871: Already exists
938e3e06dac4: Already exists
ea28ebf28884: Already exists
f3cef38785c2: Already exists
894f9792565a: Already exists
1d8a57523420: Already exists
5f09bf1d31c1: Pull complete
1591b28581e8: Pull complete
96ef942f7603: Pull complete
2e009731422e: Pull complete
Digest: sha256:1a83136153b238b659b0887ceb4e08275473af1eab2e67de4c22b37c5f4130cd
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
image-20200908185602038.png

docker rmi 删除镜像

[root@VM_0_13_centos ssh]# docker rmi -f 镜像id/镜像名称	# 删除指定镜像
[root@VM_0_13_centos ssh]# docker rmi -f 镜像id/镜像名称 镜像id/镜像名称 镜像id/镜像名称 # 删除多个镜像 
[root@VM_0_13_centos ssh]# docker rmi -f $(docker iamges -aq) # 删除全部的镜像
[root@VM_0_13_centos ssh]# docker images -a -q|xargs docker rmi # 删除所有的镜像

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像才测试学习(套娃?hhhhh)

docker pull centos

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name"	容器名字	tomcat01 tomcat02,用来区分容器
-d				后台方式启动
-it				使用交互方式运行,进入容器查看内容
-p				指定容器的端口 -p 8080:8080
	-p	ip:主机端口:容器端口
	-p	主机端口:容器端口	(常用)
	-p	容器端口
	容器端口
-P				随机指定端口

# 测试,启动并进入容器 (套娃?hhhhh)
[root@VM_0_13_centos /]# docker run -it centos /bin/bash
[root@5e7d1cb8ec28 /]# ls	# 查看容器内的centos,基础版本,很多命令都是不完善的!
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

# 从容器中退回主机
[root@4d6cf194f179 /]# exit
exit
[root@VM_0_13_centos /]# ls
bin   dev   lib         media  proc  sbin  tmp
boot  etc   lib64       mnt    root  srv   usr
data  home  lost+found  opt    run   sys   var
[root@VM_0_13_centos /]#

列出所有的运行的容器

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

[root@VM_0_13_centos /]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@VM_0_13_centos /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
  PORTS               NAMES
4d6cf194f179        centos              "/bin/bash"         2 minutes ago       Exited (0) About a minute ago                       priceless_napier
5e7d1cb8ec28        centos              "/bin/bash"         6 minutes ago       Exited (127) 2 minutes ago                          busy_sinoussi
05ce294f9ba1        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                              nostalgic_poitras
4ac5474112ad        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                              wonderful_tesla
6256c499dc85        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                              intelligent_volhard

退出容器

exit	# 直接容器停止并退出
Ctrl + P + Q	# 容器不停止退出

删除容器

docker rm 容器id					# 删除指定的容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)	# 删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器

启动和停止容器

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

常用的其他命令(日志、进程、元数据)

后台启动容器

# 命令 docker run -d 镜像名!
[root@VM_0_13_centos /]# docker run -d centos

# 问题docker ps,发现 centos 停止了

# 常见的坑,docker 容器使用后台进行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

docker logs -f -t --tail 容器,没有日志

# 自己编写一段shell脚本
[root@VM_0_13_centos /]# docker run -d centos /bin/sh -c "while true;do echo yushuo;sleep 1;done"

CONTAINER ID        IMAGE 
d209eedceec2        centos

# 显示日志
 -tf				# 显示日志 -t 显示时间戳 -f 显示接下来的log信息
 --tail n			# 要显示的日志条数
 [root@VM_0_13_centos /]# docker logs  -tf --tail 10 d209eedceec2
2020-09-08T13:37:52.434663412Z yushuo
2020-09-08T13:37:53.436735983Z yushuo

查看容器中进程信息

(类似linux中:ps命令)

# 命令
docker top 容器id

[root@VM_0_13_centos /]# docker top d209eedceec2
UID                 PID                 PPID                C                   STIME               TTY   
root                11564               11548               0                   20:59               pts/0 
root                31362               11564               0                   22:19               pts/0 

查看镜像的元数据

# 命令
docker inspect 容器id

#测试
[root@VM_0_13_centos /]# docker inspect d209eedceec2
[
    {
        "Id": "d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab",
        "Created": "2020-09-08T12:59:04.0332043Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo yushuo;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 11564,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-09-08T12:59:04.358426426Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
        "ResolvConfPath": "/var/lib/docker/containers/d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab/hostname",
        "HostsPath": "/var/lib/docker/containers/d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab/hosts",
        "LogPath": "/var/lib/docker/containers/d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab/d209eedceec2367f2df149c2f0a8161347e60298727a70e3aea3fb6b1ea3f3ab-json.log",
        "Name": "/peaceful_shamir",
        "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,
            "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": {
                "LowerDir": "/var/lib/docker/overlay2/8283ec51aadb12bb2833db9657734d64dd3f132073bc5299d2eb4f7d1ed99a36-init/diff:/var/lib/docker/overlay2/7711d01c217dc0e6e48097163cfbed122113fa2ee94b35f9e0af3334cde350e2/diff",
                "MergedDir": "/var/lib/docker/overlay2/8283ec51aadb12bb2833db9657734d64dd3f132073bc5299d2eb4f7d1ed99a36/merged",
                "UpperDir": "/var/lib/docker/overlay2/8283ec51aadb12bb2833db9657734d64dd3f132073bc5299d2eb4f7d1ed99a36/diff",
                "WorkDir": "/var/lib/docker/overlay2/8283ec51aadb12bb2833db9657734d64dd3f132073bc5299d2eb4f7d1ed99a36/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "d209eedceec2",
            "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/sh",
                "-c",
                "while true;do echo yushuo;sleep 1;done"
            ],
            "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": "50f7730df4984bc750da43cced49ed17b7b6b7a7bf49fd2448a3ffac25b5d38d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/50f7730df498",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "03cde5e54624ee1b838b6699a32050b97adc86eb771c50bbcd5c890cb2a826d1",
            "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": "db15aa787815809de73afa7b29a531e84d429455c1b9cb549ae74da3282ed6e3",
                    "EndpointID": "03cde5e54624ee1b838b6699a32050b97adc86eb771c50bbcd5c890cb2a826d1",
                    "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
                }
            }
        }
    }
]

进入当前正在进行的容器

# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

# 命令【方式1】
docker exec -it 容器id bashShell

# 测试
[root@VM_0_13_centos /]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d209eedceec2        centos              "/bin/sh -c 'while t…"   2 hours ago         Up 2 hours
               peaceful_shamir
[root@VM_0_13_centos /]# docker exec -it d209eedceec2 /
bin/bash
[root@d209eedceec2 /]# ls
bin  home   lost+found  opt   run   sys  var
dev  lib    media       proc  sbin  tmp
etc  lib64  mnt         root  srv   usr
[root@d209eedceec2 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:59 pts/0    00:00:01 /bin/sh
root      5603     0  0 14:32 pts/1    00:00:00 /bin/ba
root      5663     1  0 14:33 pts/0    00:00:00 /usr/bi
root      5664  5603  0 14:33 pts/1    00:00:00 ps -ef

# 命令【方式2】
docker attach 容器id

# 测试
[root@VM_0_13_centos /]# docker attach d209eedceec2
yushuo
yushuo
# 进入正在执行当前的代码

# docker exec	# 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach	# 进入容器正在执行的终端,不会启动新的进程!

docker run、exec和attach使用和区别: https://blog.csdn.net/MePlusPlus/article/details/92822329 docker run;创建和启动一个新的容器实例,操作对象是镜像,选项较多,如果你要创建和启动一个容器,只能用run; docker exec: 在已运行的容器中,执行命令,操作对象是容器,如果你要进入已运行的容器,并且执行命令,用exec; docker attach: 同样操作的是已运行的容器,可以将本机标准输入(键盘输入)输到容器中,也可以将容器的输出显示在本机的屏幕上,如果你想查看容器运行过程中产生的标准输入输出,用attach;

从容器内拷贝文件到主机上

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

# 进入docker容器内部
[root@VM_0_13_centos /]# docker run -it centos /bin/bash
[root@d0b9dbc42b33 /]# cd /home
[root@d0b9dbc42b33 home]# ll
bash: ll: command not found
[root@d0b9dbc42b33 home]# ls
# 在容器内新建一个文件
[root@d0b9dbc42b33 home]# touch test.java
[root@d0b9dbc42b33 home]# ls
test.java
[root@d0b9dbc42b33 home]# ls -l
total 0
-rw-r--r-- 1 root root 0 Sep  8 14:50 test.java
[root@d0b9dbc42b33 home]# exit
exit
[root@VM_0_13_centos /]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
[root@VM_0_13_centos /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS
d0b9dbc42b33        centos              "/bin/bash"         About a minute ago   Exited (0) 9 seconds 
# 将这文件拷贝出来到主机
[root@VM_0_13_centos /]# docker cp d0b9dbc42b33:/home/test.java /home
[root@VM_0_13_centos /]# cd /home
[root@VM_0_13_centos home]# ls
test.java

# 拷贝是一个手动过程,未来我们使用 -v 数据卷的技术,可以实现 自动同步 容器内/home 主机/home

小结

Child commands:https://docs.docker.com/engine/reference/commandline/docker/

Command

Description

Attach local standard input, output, and error streams to a running container

Build an image from a Dockerfile

Manage builds

Manage checkpoints

Create a new image from a container’s changes

Manage Docker configs

Manage containers

Manage contexts

Copy files/folders between a container and the local filesystem

Create a new container

Inspect changes to files or directories on a container’s filesystem

Get real time events from the server

Run a command in a running container

Export a container’s filesystem as a tar archive

Show the history of an image

Manage images

List images

Import the contents from a tarball to create a filesystem image

Display system-wide information

Return low-level information on Docker objects

Kill one or more running containers

Load an image from a tar archive or STDIN

Log in to a Docker registry

Log out from a Docker registry

Fetch the logs of a container

Manage Docker image manifests and manifest lists

Manage networks

Manage Swarm nodes

Pause all processes within one or more containers

Manage plugins

List port mappings or a specific mapping for the container

List containers

Pull an image or a repository from a registry

Push an image or a repository to a registry

Rename a container

Restart one or more containers

Remove one or more containers

Remove one or more images

Run a command in a new container

Save one or more images to a tar archive (streamed to STDOUT by default)

Search the Docker Hub for images

Manage Docker secrets

Manage services

Manage Docker stacks

Start one or more stopped containers

Display a live stream of container(s) resource usage statistics

Stop one or more running containers

Manage Swarm

Manage Docker

Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Display the running processes of a container

Manage trust on Docker images

Unpause all processes within one or more containers

Update configuration of one or more containers

Show the Docker version information

Manage volumes

Block until one or more containers stop, then print their exit codes

docker的命令是十分多的,上面我们学习的那些都是最常用的容器和镜像的命令,之后我们还会学习很多命令!

Docker镜像讲解

commit镜像

docker commit 提交容器成为一个新的副本

# 命令和git命令类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

实战测试

# 1、启动一个默认的tomcat
# 2、发现这个默认的tomcat 是没有webapps应用的,镜像的原因,官方的镜像默认是 webapps 下面是没有文件的!
# 3、我自己拷贝进去了基本的文件
# 4、将我们操作过的容器通过commit提交为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像
image-20200914231716873.png

学习方式说明:理解概念,但是一定要实践,最后实践和理论相结合一次搞定这个知识

如果你想保存当前容器的状态,就可以通过commit来提交,获得一个镜像,
就好比我们以前学习vm时候,快照!

【扩展】关于可视化管理

  • 以portainer为例

什么portainer?

Docker图形化界面管理工作!提供一个后台面板供我们操作!(先打开云服务器安全组)

$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

访问测试:外网ip:8080 http://ip:9000/

通过它来访问:

image-20200910223535253.png

这里目前选择管理本地

image-20200910223737922.png

进入之后的面板:

image-20200910223942473.png

点击local进入详细管理面板:

image-20200910224027921.png

可视化面板我们平时不会经常使用,大家可以自己测试玩玩即可!

到了这里我们算是入门了Docker!

【后续待更新】

容器数据卷

DockerFile

Docker 网络

Docker Compose

Docker Swarm

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第七章 Docker三剑客

    DOCKER技术在推出后掀起了一阵容器化技术的热潮,容器化使得服务的部署变得极其简易,这为微服务和分布式计算提供了很大的便利。

    Librant
  • docker(容器常用命令)

    崔笑颜
  • 小白学Docker之Compose

    承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之...

    糊糊糊糊糊了
  • docker swarm 集群安装Visualizer

    对于docker swarm集群的监控来说,这个东西是比较容易入手的一个监控系统,而且比较简单,不是特别的复杂

    bboysoul
  • Docker容器入门

    为什么要看docker 从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是《Docker在...

    用户1154259
  • Docker 实践答疑

    shipyard提供了管理界面管理各种docker资源。 项目地址:https://github.com/shipyard/shipyard。 安装方法:

    飞奔去旅行
  • Docker如何搭建Zookeeper、Kafka集群?

    可以使用腾讯云服务器 https://cloud.tencent.com/product/cvm ,相对来讲比较便宜。

    云上云
  • docker常用操作

    启动镜像nginx并:1.指定容器名称(sunshine-nginx-test);2.后台运行(-d);3.指定端口绑定(-p)

    CS逍遥剑仙
  • %99的人都不知道的Docker技巧:优雅的终止容器

    如上的各种场景中,都要求打包在容器中的应用程序能够被优雅的终止(也即gracefully shutdown),这种gracefully shutdown的方式,...

    心莱科技雪雁
  • 迁移 Docker 容器储存位置

    本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

    soulteary

扫码关注云+社区

领取腾讯云代金券