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

 

posted @ 2020-02-16 22:41  刘宏缔的架构森林  阅读(351)  评论(0编辑  收藏  举报