docker的常用操作
一,查看本地centos的版本:
[root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
说明:架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/16/docker-chang-jian-cao-zuo-docker19036/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,image的操作
1,从docker hub下载一个centos镜像
[root@localhost ~]# docker pull centos:latest
说明:格式:docker pull 镜像名:TAG
Tag表示版本,有些镜像的版本显示latest,为最新版本docker pull 镜像名:TAG
2,列出已下载的image
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 weeks ago 237MB
3,查看一个镜象的详细信息
[root@localhost ~]# docker inspect 470671670cac
说明:470671670cac 是image 的id
4,从docker hub搜索image
[root@localhost ~]# docker search fedora
三,容器的操作
1,运行一个容器
[root@localhost ~]# docker run --name web1 -d 470671670cac
说明:
命令格式:docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像TD或镜像名:TAG
--name 指定容器名,可自定义,不指定自动命名
-i 以交互模式运行容器
-t 分配一个伪终端,即命令行,通常组合来使用
-p 指定映射端口,将主机端口映射到容器内的端口
-d 后台运行容器
-v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
2,列出当前有哪些容器在运行
[root@localhost ~]# docker ps -a
说明:-a 查看所有容器(运行中、未运行)
-q 只查看容器的ID
3,查看容器的元信息:
[root@localhost ~]# docker inspect dc9d7f437b12
4,查看一个容器的日志:
[root@localhost ~]# docker logs dc9d7f437b12
5,停止一个容器:
[root@localhost ~]# docker stop dc9d7f437b12
6,删除一个容器:
[root@localhost ~]# docker rm dc9d7f437b12
7,进入一个正在运行的容器
[root@localhost ~]# docker exec -it c67787d7ee86 /bin/bash [root@c67787d7ee86 /]# pwd /
说明:c67787d7ee86是容器的id
四,容器内不能正常上网的解决:
1,编辑daemon.json文件
[root@localhost liuhongdi]# more /etc/docker/daemon.json { "dns" : [ "114.114.114.114", "8.8.8.8" ] }
2,编辑sysctl.conf文件
[root@localhost liuhongdi]# more /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0
完成后:
[root@localhost liuhongdi]# sysctl -p
3,以上两项完成后,重启docker:
[root@localhost liuhongdi]# systemctl restart docker
五,如果需要修改网络接口数据,如何启动容器?
1,相关的命令:
以下两个命令均可
[root@localhost liuhongdi]# docker run --name web2 --cap-add=NET_ADMIN -d -i -t 470671670cac
[root@localhost liuhongdi]# docker run --name web2 --privileged -d -i -t 470671670cac
2,
说明:
大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。
3,
说明:--cap-add的范围:
[
CAP_CHOWN,CAP_DAC_READ_SEARCH,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_SETGID,CAP_SETUID,CAP_SETPCAP,CAP_LINUX_IMMUTABLE,CAP_NET_BIND_SERVICE,CAP_NET_BROADCAST,CAP_NET_ADMIN,CAP_NET_RAW,CAP_IPC_LOCK,CAP_IPC_OWNER,CAP_SYS_MODULE,CAP_SYS_RAWIO,CAP_SYS_CHROOT,CAP_SYS_PTRACE,CAP_SYS_PACCT,CAP_SYS_ADMIN,CAP_SYS_BOOT,CAP_SYS_NICE,CAP_SYS_RESOURCE,CAP_SYS_TIME,CAP_SYS_TTY_CONFIG,CAP_MKNOD,CAP_LEASE,CAP_AUDIT_WRITE,CAP_AUDIT_CONTROL,CAP_SETFCAP,CAP_MAC_OVERRIDE,CAP_MAC_ADMIN,CAP_SYSLOG,CAP_WAKE_ALARM,CAP_BLOCK_SUSPEND,]
privileged 就等于 –cap-add=ALL