docker基础
目录
容器运行常见报错以及解决办法
容器运行参数解析
Netstat命令
dhclient命令
容器运行常见报错以及解决办法
1.出现Error response from daemon: Conflict,The container name “***” is already in use
解决方法:
(1)给容器换一个名字, 比如说 docker run -it --name=mycentos2 centos:7 /bin/bash, 可以解决问题.
(2)将原来的容器删除
查询当前容器:docker container ls -all
删除当前容器(删除前先停止运行docker stop ewrfdgfdfs(containerid)):
再docker container rm mycentos(container ID也可)
如果想要再次使用,使用则docker restart 镜像名
注(查看容器的一系列命令):
docker ps 不带参数
显示全部容器,和总文件大小 docker ps -a -s
显示最近创建的容器 docker ps -l docker ps -a -l
显示最近创建的 2 个容器 docker ps -n 2
显示完整的镜像ID docker ps --no-trunc
只显示镜像ID docker ps -q
2. run容器时,端口被占用
解决方法:
先netstat -tnalp 查看运行程序及端口(点击这跳至netstat解析)
然后kill 进程号
如kill 2354
### 容器运行参数解析
使用docker最简单的方式就是docker run了。想要运行什么服务,就run相应的镜像。
以下的内容基于Linux环境
docker run也支持简单的自定义参数,比如这个镜像以什么方式运行,要不要分配网络端口、存储空间之类的。如果要用好docker至少要熟练最简单的参数设置方法。
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用OPTIONS说明:
-d: 后台运行容器,并返回容器ID;
不加这一个默认直接进入容器,之后如果退出则会连着容器一起挂起(暂停运行)。
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
同时使用it之后,你就可以进入到这个容器里面,就像在一台新的Linux主机中了。
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
非常常用,从容器外访问容器内服务的主要方式。
--name="nginx-lb": 为容器指定一个名称;
-m :设置容器使用内存最大值;
-e username="ritchie": 设置环境变量;
--volume , -v: 绑定一个卷
格式为主机目录:容器目录,这条命令也是非常有用的,如果不绑定目录,那么在删除容器的时候,里面的所有数据也一起删除了。但如果使用了挂载卷的话,直接存在宿主机对应文件夹中,下次开启容器还能直接使用。通常用于存一些配置文件、数据什么的。
实例1.
docker run --name mynginx -p 8080:80 -v /data:/data -d nginx:latest、
说明1:
docker run:启动一个容器。
--name mynginx:将容器命名为mynginx。
-p 8080:80:将容器的 80 端口映射到主机的 8080 端口
-v /data:/data:将主机的目录 /data 映射到容器的 /data
-d:以后台模式启动。
nginx:latest:镜像来源:nginx:latest
实例2.
docker run -it nginx:latest /bin/bash
root@b8573233d675:/#
说明2:
docker run:启动一个容器。
-it:以交互模式启动(进入容器中)
nginx:latest:镜像来源:nginx:latest
/bin/bash:进入容器后要执行的命令,这里是打开终端。
root@b8573233d675:/# :已经进入了容器里面的终端,用户名变化。
学会了docker run命令,就足以运行大部分docker服务。
实例3:
使用wordPres镜像创建一个容器
说明3.
docker run --name wordpress
-e WORDPRESS_DB_HOST=47.97.69.160:3306
-e WORDPRESS_DB_USER=root
-e WORDPRESS_DB_PASSWORD=a1b2c3
-e WORDPRESS_DB_NAME=wordpress
-p 8080:80
-v /root/wordpress/config:/var/www/html
-d wordpress\
Netstat命令
Netstat(network statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况
参数解析:
netstat -tanlp 列出tcp以及进程名进程号 禁用反向域名解析,加快查询速度
默认情况下 netstat 会通过反向域名解析查找每个 IP 地址对应的主机名,会降低查找速度。
-
netstat -nat n选项可以禁用此行为,并且用户 ID 和端口号也优先使用数字显示
-
netstat -ntl 只列出监听中的连接 -l选项可以只列出正在监听的连接(不能和 a 选项同时使用)
-
netstat -ntlp 获取进程名、进程号以及用户 ID
-p 选项可以查看进程信息(此时 netstat 应尽量运行在 root 权限之下,否则不能得到运行在 root 权限下的进程名) -
netstat -r 显示路由信息 使用 -r 选项打印内核路由信息,与 route 命令输出一样。
5 . netstat -i 网络接口信息 -i 选项可以输出网络接口设备的统计信息,结合上 -e 选项,等于 ifconfig 命令的输出
- netstat -s 获取网络协议的统计信息 -s选项可以输出针对不同网络协议的统计信息,包括 Ip、Icmp、Tcp 和 Udp 等。
dhclient eth命令
dhclient命令功能:用于动态主机配置协议
命令:
dhclient eth0获取IP地址,
然后运行ifconfig eth0
1.---在指定网络接口上发出DHCP请求 dhclient eth0
docker命令补充
docker ps #容器的查看
docker stop 2946f38aa078 #通过容器的id号来停止一个运行的容器
docker ps -a #查看所有的历史容器
docker start 2946f38aa078 #重启启动之前被关闭的容器服务
docker rm 2946f38aa078 #删除一个容器,前提是stop此容器
docker exec -it 2946f38aa078 #/bin/bash #进入容器
docker search pikachu 搜索pikachu相关镜像,再从中选择星星最多的