docker容器方面
以下内容整理自通过 Desktop 学 Docker 也太简单了 (qq.com)
由于docker以前学习区块链的时候有所了解,所以环境部署就不说了,主要介绍一下docker以及其命令。
首先什么是docker?
它把系统的所有文件封装成一个镜像,镜像跑起来作为容器,它可以在一台机器上跑多个容器,每个容器都有独立的操作系统环境,比如文件系统、网络端口等,在容器内跑各种服务。这样整个环境都保存在这个镜像里,部署多个实例只要通过这个镜像跑多个容器就行。
Docker 提供了 Docker Hub 镜像仓库,可以把本地镜像 push 到仓库或者从仓库 pull 镜像到本地。
docker有关命令
收集自(Docker 命令大全 | 菜鸟教程 (runoob.com)) 只留下几个个人觉得用的多的。
docker run :创建一个新的容器并运行一个命令
实例
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/#
Docker start/stop/restart 命令
实例 启动已被停止的容器myrunoob
docker start myrunoob
停止运行中的容器myrunoob
docker stop myrunoob
重启容器myrunoob
docker restart myrunoob
Docker kill 命令
docker kill :杀掉一个运行中的容器。
实例
杀掉运行中的容器mynginx
runoob@runoob:~$ docker kill mynginx
Docker rm 命令
实例
强制删除容器 db01、db02:
docker rm -f db01 db02
移除容器 nginx01 对容器 db01 的连接,连接名 db:
docker rm -l db
删除容器 nginx01, 并删除容器挂载的数据卷:
docker rm -v nginx01
删除所有已经停止的容器:
docker rm $(docker ps -a -q)
Docker create 命令
docker create :创建一个新的容器但不启动它
用法同 docker run
docker ps命令
列出所有在运行的命令
Docker images 命令
docker images : 列出本地镜像。
这个一般在根据id删除镜像里面用的比较多来着 。
语法 docker images [OPTIONS] [REPOSITORY[:TAG]] OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
刷题方面
今天的Leetcode每日一题难度较小。是一个字符串相加的题。详细如下:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger),
也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123"
输出:"134"
示例 2:
输入:num1 = "456", num2 = "77"
输出:"533"
示例 3:
输入:num1 = "0", num2 = "0"
输出:"0"
选择使用go语言进行解题。由于对go语言不算熟悉。所以开始是直接使用强制转化类型,想将字符串转换为int类型(想多了)。
然后失败以后,大概猜到要进行按位加操作。刚开始第一次写的代码是这样的
func addStrings(num1 string, num2 string) string {
var x,y int
var ans=""
var add=0
x=len(num1)-1
y=len(num2)-1
for x>=0||y>=0 {
var a,b int
if x>=0{
a=int(num1[x]-'0')
}
if y>=0{
b=int(num2[y]-'0')
}
result :=a+b+add
add = result / 10
ans = strconv.Itoa(result%10) + ans
x=x-1
y=y-1
}
return ans
}
结果有一种样例没法通过(即a=1,b=9)此时add=1,ans=0.最后输出的是0而不是答案10。 想要解决这个问题也挺简单的,最后加一个条件判断即可。
if add > 0 {
ans = strconv.Itoa(add) + ans
}
最后,不得不提的是,初始化,用:=比较简单,乐。 比如这样val1:= int(24)
整体的解决思路很简单,稍微写一下关于strconv.Itoa的知识
以下内容摘抄自Golang strconv.Itoa()用法及代码示例 - 纯净天空 (vimsky.com)
Go 语言提供内置支持,以通过 strconv 包实现与基本数据类型的字符串表示之间的转换。这个包提供了一个 Itoa() 函数,它相当于 FormatInt(int64(x), 10)。或者换句话说,Itoa() 函数在基数为 10 时返回 x 的字符串表示。要访问 Itoa() 函数,您需要在程序中借助 import 关键字导入 strconv 包。(简而言之,go提供从int转换成字符串的操作)
用法:
func Itoa(x int) string 参数:该函数接受一个 int 类型的参数,即 x。
返回值:此函数返回一个表示 x 的字符串。
范例1:
// Golang program to illustrate
// strconv.Itoa() Function
package main
import (
"fmt"
"strconv"
)
func main() {
// Finding a string representation of
// the given value when the base is 10
// Using Itoa() function
val1:= int(24)
res1:= strconv.Itoa(val1)
fmt.Printf("Result 1:%v", res1)
fmt.Printf("\nType 1:%T", res1)
val2:= int(-21)
res2:= strconv.Itoa(val2)
fmt.Printf("\nResult 2:%v", res2)
fmt.Printf("\nType 2:%T", res2)
}
输出:
Result 1:24
Type 1:string
Result 2:-21
Type 2:string
未解决问题
虚拟机如何连接内网
首先知道连接不上的原理了解桥接,nat,主机三个模式。 主机连接wifi时,虚拟机VMware如何连接网络_主机连wifi创建vmware虚拟机_LS_learner的博客-CSDN博客)
一张抽象的画(
看完以后个人感觉连接不上的原因是,我按照VM虚拟机如何在局域网内相互访问_vm虚拟机局域网访问___walden的博客-CSDN博客这个配置教程走,但是却没有输入内网的ip地址。
看到一篇写的挺好的解决方法,放这以防忘记(VmWare网络配置,只此一篇就够了 - 个人文章 - SegmentFault 思否)
我好像找到了为啥本地访问不了虚拟机的原因了,悲。