Centos7 docker常用指令
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上
一、docker的安装及卸载
1.查看当前系统内核版本:
[root@docker ~]# uname -r 3.10.0-514.el7.x86_64
2.安装docker
[root@docker ~]# yum -y install docker-io
3.启动 Docker 后台服务
[root@docker ~]# systemctl start docker.service
4.镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是阿里的镜像地址:
在/etc/docker/daemon.json文件中添加如下内容.
{ "registry-mirrors": ["https://wghlmi3i.mirror.aliyuncs.com"] }
或者使用如下地址
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
或者在添加更改数据目录
# cat /etc/docker/daemon.json { "data-root": "/data/docker-data", "registry-mirrors": ["http://hub-mirror.c.163.com"] } [root@sentry-system sentry]#
修改保存后重启 Docker 以使配置生效,至此,docker安装完成!!!
5.卸载docker
列出你安装过的包
[root@docker ~]# yum list installed | grep docker docker.x86_64 2:1.13.1-53.git774336d.el7.centos @extras docker-client.x86_64 2:1.13.1-53.git774336d.el7.centos @extras docker-common.x86_64 2:1.13.1-53.git774336d.el7.centos @extras
6.删除软件包
[root@docker ~]# yum -y remove docker.x86_64 [root@docker ~]# yum -y remove docker-client.x86_64 [root@docker ~]# yum -y remove docker-common.x86_64
二、docker 常用指令整理
1.获取一个新的镜像
[root@docker ~]# docker pull [镜像名称]
2.列出镜像列表
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB docker.io/nginx latest b175e7467d66 2 weeks ago 109 MB docker.io/centos latest e934aafc2206 2 weeks ago 199 MB docker.io/mysql latest 5195076672a7 6 weeks ago 371 MB
各个选项说明:
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像的标签
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
3.查找镜像
我们也可以使用 docker search 命令来从 Docker Hub 网站来搜索镜像
[root@docker ~]# docker search nginx INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/nginx Official build of Nginx. 8341 [OK] docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1325 [OK] docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 547 [OK] docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 356 [OK] docker.io docker.io/kong Open-source Microservice & API Management ... 182
4.docker run指令:
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。
参数说明: -d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到我们使用的主机上。 -t:在新容器内指定一个伪终端或终端。 -i:允许你对容器内的标准输入 (STDIN) 进行交互 -p:绑定指定端口
实例:
docker run -p 80:80 \ -v $PWD/nginx/html:/usr/share/nginx/html \ -v $PWD/nginx/conf:/etc/nginx \ -v $PWD/nginx/logs:/var/log/nginx \ --rm --name nginx -d nginx:latest
以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.8.0 /bin/bash
以后台模式启动一个容器
docker run -P -d --rm registry.cn-hangzhou.aliyuncs.com/choerodon-tools/javabase:0.8.0
5.docker exec :在运行的容器中执行命令
OPTIONS说明:
-
-d :分离模式: 在后台运行
-
-i :即使没有附加也保持STDIN 打开
-
-t :分配一个伪终端
实例:
docker exec -it 775c7c9ee1e1 /bin/bash #其中775c7c9ee1e1 为容器ID号
使用root用户进入容器
docker exec -it -u root 8a151d800768 bash
6. docker logs [ID或者名字] 可以查看容器内部的标准输出
# docker logs 353e6c82b2fc # docker logs -f 353e6c82b2fc -f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。
7. 停止WEB应用容器
#docker stop cid|names
8. 移除WEB应用容器
#docker rm CID|NAMES
9. 查询最后一次创建的容器
#docker ps -l
10.docker commit :从容器创建一个新的镜像。
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
提交变更,类似于git的commit,只提交变化的部分
docker commit 2ee8517b15cf test/oracle
也可以像git一样指定更加详细的提交信息.
# docker commit -a "saneri" -m "my dev oracle" 5cbe0fdb46a6 dev_p2p/oracle:latest
11.docker ps : 列出容器
语法
docker ps [OPTIONS]
OPTIONS说明:
-
-a :显示所有的容器,包括未运行的。
-
-f :根据条件过滤显示的内容。
-
--format :指定返回值的模板文件。
-
-l :显示最近创建的容器。
-
-n :列出最近创建的n个容器。
-
--no-trunc :不截断输出。
-
-q :静默模式,只显示容器编号。
-
-s :显示总的文件大小。
12.docker inspect : 获取容器/镜像的元数据
语法: docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS说明:
-
-f :指定返回值的模板文件。
-
-s :显示总的文件大小。
-
--type :为指定类型返回JSON。
实例:获取镜像tomcat的元信息# docker inspect tomcat
[ { "Id": "168ee1a88f2e4870067c1224693b846e4c086172b69e3a387afebbd641b53335", "Created": "2020-04-15T14:39:07.096022083Z", "Path": "catalina.sh" #获取容器的ip地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称 # docker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat_test 172.17.0.2
#或者这样写,获取容器使用的网桥
[root@localhost ~]# docker inspect -f {{.HostConfig.NetworkMode}} 262b42fb0c9f
redis_default
13.docker cp :用于容器与主机之间的数据拷贝.
语法:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH OPTIONS说明: -L :保持源目标中的链接
实例:
1.将主机/home/www目录拷贝到容器96f7f14e99ab的/www目录下
docker cp /home/www 96f7f14e99ab:/www/
2.将主机/home/www 目录拷贝到容器96f7f14e99ab中,目录重命名为www
docker cp /home/www 96f7f14e99ab:/www
3.将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
docker cp 96f7f14e99ab:/www /tmp/
14、docker update
当你 docker run 了之后却发现里面有一些参数并不是你想要的状态比如你设置的 nginx 容器 cpu 或者内存太小,这个时候你就可以使用 docker update 去修改这些参数。
# docker update nginx --cpus 2
15、docker diff
当你运行了一个容器,但是你不知道容器里修改了哪一些文件的时候可以使用这个命令,比如:
# docker diff 38c59255bf6e C /etc A /etc/localtime C /var C /var/lib A /var/lib/registry
16、docker stats
这个是 docker 内置的监控命令,当你想要查看当前主机下所有容器占用内存和 cpu 的情况的时候就可以使用这个命令。
# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 1c5ade04e7f9 redis 0.08% 17.53MiB / 47.01GiB 0.04% 10.9GB / 37GB 0B / 0B 4 afe6d4ebe409 kafka-exporter 0.09% 16.91MiB / 47.01GiB 0.04% 1.97GB / 1.53GB 752MB / 0B 23 f0c7c01a9c34 kafka-docker_zookeeper 0.01% 308.8MiB / 47.01GiB 0.64% 20.2MB / 12.2MB 971MB / 3.29MB 28 da8c5008955f kafka-docker_kafka-manager 0.08% 393.2MiB / 47.01GiB 0.82% 1.56MB / 2.61MB 1.14GB / 0B 60 c8d51c583c49 kafka-docker_kafka 1.63% 1.256GiB / 47.01GiB 2.67% 30.4GB / 48.9GB 22.3GB / 5.77GB
17、docker port # 显示容器的端口映射
# docker port 20259bdab9ef 9000/tcp -> 0.0.0.0:30090
18、docker top # 显示容器的进程信息
# docker top 20259bdab9ef UID PID PPID C STIME TTY TIME CMD root 13441 13419 0 10:10 ? 00:00:38 minio server /data
三、Docker删除容器与镜像
1.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
如果想要删除所有container的话再加一个指令:
docker rm $(docker ps -a -q)
查看当前有些什么images
docker images
删除images,通过image的id来指定删除谁
docker rmi <image id>
想要删除untagged images,也就是那些id为的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要删除全部image的话
docker rmi $(docker images -q)
强制删除全部image的话
docker rmi -f $(docker images -q)
强制停止及删除容器
# docker rm -f container_name
# docker rm $(docker stop container_name)
# docker kill --signal=SIGKILL container_name
docker redis 启动时添加密码认证:
#前台启动 docker run --name redis-6379 -p 6379:6379 redis:v001 --requirepass yourpassword #后台启动 #docker run -d --name redis-6379 -p 6379:6379 redis:v001 --requirepass cb7be6c52LG
#docer文件copy # docker cp 7881dc4205b6:/usr/local/redis/conf/redis.conf . # docker cp redis.conf 7881dc4205b6:/usr/local/redis/conf/redis.conf