docker基础使用命令

docker命令

帮助命令

docker version           # 显示版本信息
docker info				 #显示docker的系统信息,包括镜像和容器
docker	命令 --help	     #万能命令

镜像命令

docker images #查看镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        8 months ago        237MB
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB

#注释
REPOSITORY				#镜像库
 TAG					#镜像标签
 IMAGE ID				#镜像ID
 CREATED 				#创建时间
 SIZE					#镜像大小

#可选项
-a			#显示所有镜像
-q			#只显示ID

docker search 镜像名 #搜索镜像

NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9977                [OK]
mariadb                           MariaDB is a community-developed fork of MyS…   3653                [OK]

#可选项
--filter			#过滤信息

docker pull 镜像名 #下载镜像

Using default tag: latest								#默认下载最新版
latest: Pulling from library/mysql
d121f8d1c412: Pull complete								#分层下载
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 complete3
Digest: sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808		#签名信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest				#真实地址

#选择版本下载
docker pull 镜像名:版本号
如:docker pull mysql:5.7

docker rmi 删除命令

docker rmi -f 镜像ID					#根据镜像的id进行删除
docker rmi -f 镜像ID 镜像ID 镜像ID		#根据镜像的id进行删除,如果胡多个使用空格隔开
docker rmi -f 镜像名						#根据镜像的名字进行删除
docker rmi -f $(docker images -aq)		#根据查询出来的镜像ID进行递归删除

容器命令

说明:有了镜像才可以创建容器,我们以下载centos为例

docker pull centos

新建容器并启动

docker run [可选参数] 镜像名
#参数说明
--name="name"
-d                      #后台方式运行
-it                     #使用交互方式运行,进行容器查看内容
-p
		-p 主要端口:容器端口
		-p ip:主机端口:容器端口
		-p 容器端口
		容器端口
-P                      #随机指定端口

##测试
运行并进入容器
docker run -it 0d120b6ccaa8 /bin/bash
# 外部运行容器内的命令
docker exec -it integer redis-cli
后台启动
docker run -d --name nginx01 -p 8080:80 nginx
退出容器
exit					#容器停止并退出
ctrl + p + 	q			#容器不停止退出

列出所有正在运行的容器

docker ps		#列出正在运行的容器
可选参数
-a				#列出所有正在运行的容器,包括历史记录	
-n=#显示最近创建的容器
-q				#只显示容器编号
-aq				#显示所有容器编号

删除容器

docker  rm 容器ID					#根据容器id删除容器,不能删除正在运行的容器
docker rm -f 容器ID					#强制删除正在运行的容器
docker rm -f $(docker ps -aq)		#删除所有的容器

容器的启动和停止

docker start 容器ID				#启动容器
docker restart 容器ID			#重启容器
docker stop 容器ID				#停止容器
docker kill 容器ID				#强制停止容器,杀掉这个进程

常用的其它命令

后台启动容器

docker run -d  镜像名
#问题docker ps 查看所有运行的容器的时候发现停止了。	
#原因。是因为后台启动之后没有添加任何服务所以就停止了,也就是没有提供任何前台进程。

查看日志

docker logs -tf	容器ID							#显示日志
docker logs -tf --tail number  容器ID			#显示指定的日志数量,number是表示数量。如显示10条: docker logs -tf --tail 10 centos

查看容器中的进程信息

docker top 容器ID					#查看容器ID

查看镜像元数据

docker inspect 容器ID				#查看元数据

进入当前正在运行的容器

docker exec -it 容器ID /bin/bash							#进入容器,进入容器后打开一个新的终端。
docker  attach 容器ID										#进入容器,进入正在执行的终端,不会启动新进程。

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

docker cp 容器ID:/path /path						#从容器内质数据到主机上。

例子
docker cp  0d120b6ccaa8:/home/main.go /home				#从容器的home目录拷贝main.go这个文件到主要的home目录当中

查看cpu状态

命令
docker stats

运行结果
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
908e6357cbdc        nginx01             0.00%               1.418MiB / 1.795GiB   0.08%               4.24kB / 6.56kB     0B / 4.1kB          2
CONTAINER ID						#容器ID
NAME								#容器名字
MEM USAGE							#使用的内存
LIMIT 								#本机内存
MEM									#使用的百分比

启动多个端口号

#多端口启动
docker run -d --name es01 -p 9200:9200 -p 9300:9300 elasticsearch
#限制内存启动,更多设置请看docker官方文档的elasticSearch配置。网址:https://hub.docker.com/_/elasticsearch
dokcer run -d --name es02 -p 9200:9200 -p 9300:9300 -e ES_JAVA-OPTS "-Xms125m -Xmx512m"

提交一个自己的镜像

命令
docker commit -m="信息" -a="作者" 容器ID 目标镜像名:[tag]
例子
docker commit -m="新添测试文件" -a="WFY" 0d120b6ccaa8 myNginx:1.0.1

容器数据卷

使用数据卷

方式一:
docker run -v 主机目录:容器内目录
例子:
docker run -d --name nginx02 -p 8080:80 -v /home/nginx:/home nginx

匿名挂载和具名挂载

docker run -d --name -p -v 挂载名:容器绝对路径 镜像名										#具名挂载。*注:挂载名可以任意取
docker run -d --name -p -v 容器绝对路径 镜像名											#匿名挂载

举例:
docker run -d --name nginx02 -p 6379:6379 -v concreteness_name:/etc/nginx/ nginx		#具名挂载
docker run -d --name nginx02 -p 6379:6379 -v /etc/nginx/ nginx							#匿名挂载

docker run 挂载名:容器绝对路径:ro 镜像名													#具名挂载。设置只读,只有宿主机可以写
docker run 容器绝对路径:rw 镜像名															#匿名挂载。设置可读可写

docker volume ls																		#查看卷情况
docker volume inspect 卷名																#查看卷挂载的具体信息,如路径。
docker run --name 容器名02  volumes-from 容器名01 镜像名									#共用相同的地址空间
例子:
docker run -d -it --name centos02 volumes-from centos01 centos

方式二:请看DockerFile

DockerFile

注意:所有的指令都必须大写,指令都必须大写,指令都必须大写!重要事情说三遍

常用指令

FROM						#基础镜像,所有的基础从这里开始构建。
MAINTAINER					#镜像是谁写的,是由谁负责的。留姓名和邮箱
RUN							#镜像构建的时候运行的指令
ADD							#运行的步骤,添加内容,如nginx压缩包
WORKDIR						#指定工作目录
VOLUME						#挂载的目录
EXPOSE						#对外暴露的端口
CMD							#指定容器启动的时候要运行的命令,只有最后一个会生效,可以被替代。
ENTRYPOINT					#指定容器启动的时候要运行的命令,可以追加命令
ONBUILD						#当构建一个被继承DockerFile这个时候运行ONBUILD的指令,是一个触发指令
COPY						#类似于ADD,将我们的文件拷贝到镜像中
ENV							#构建的时候设置环境变量

镜像

docker build -f 文件的路径(相对路径) -t 镜像名:[tag] .					#构建一个镜像

#镜像制作例子,请使用vim输入如下内容,并保存,名字任意。我这边命为docker_mycentos,不用写后缀名,不用写后缀名,不用写后缀名。
FROM centos
MAINTAINER wfy<1279632200@qq.com>
ENV MYPATH /home
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
#运行
docker build -f dockerFilePath -t mycentos:1.0 .

docker history 镜像名												#查看一个镜像是如何构建的
#例子
docker history mycentos:1.0

docker网络

查看IP地址

#命令
ip addr				#查看IP地址
#结果
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo							#127.0.0.1/8本机回环地址
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:12:49:6e brd ff:ff:ff:ff:ff:ff
    inet 172.19.168.5/20 brd 172.19.175.255 scope global dynamic eth0  		#172.19.168.5/20阿里去内网地址
       valid_lft 295582304sec preferred_lft 295582304sec
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:79:e2:ff:ba brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0				#172.17.0.1/16 docker0地址
       valid_lft forever preferred_lft forever

查看docker网络IP地址

docker exec -it 669f29dcdbf7 ip addr					#查看容器IP

自定义网络(容器互联)

网络模式

bridge:桥接 docker(默认)
none:不使用网络
host:与宿主机共享网络
container:容器网络连通(使用少)

查看所有的docker网络

docker network ls				#查看所有的docker网络

创建网络

#创建一个子网是192.168.0.0/16 网关为192.168.0.1的桥接网络。默认为桥接网络可不写--driver bridge
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

#结果:
[root@iZuf641lw91pvk8p7qobq2Z ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
51055b5b7cb15a9935ab8b595469ab4b172f8d24be7902a30841f9b22f099d0c
[root@iZuf641lw91pvk8p7qobq2Z ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
0f3e8454cfde        bridge              bridge              local
469712d567e7        host                host                local
`51055b5b7cb1        mynet               bridge              local`
782eda3f838a        none                null                local

#查看网络详细信息
[root@iZuf641lw91pvk8p7qobq2Z ~]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "51055b5b7cb15a9935ab8b595469ab4b172f8d24be7902a30841f9b22f099d0c",
        "Created": "2020-09-27T12:06:33.517949952+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

使用创建好的网络

docker run --net 网络名 镜像名					#启动一个镜像使用我们自己创建的网络

例子:
docker run -d -P --name nginx01 --net mynet nginx

使用优点:做到网络之间的相互隔离。如mysql集群单独建立一个网络,redis单独建立一个网络等。

网络互通

docker network connect 网络名 容器名

例子:
docker network connect mynet nginx01

想要详细了解docker可以观看狂神说docker的视频,地址:狂神说docker

知识来自积累,不断学习才能进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值