docker讲解(前戏)
  pfl0iGEgXbv6 2023年11月13日 15 0

虚拟机镜像:

链接:https://pan.baidu.com/s/1N6Bed7r9Jyp3O6dRtdYKmQ?pwd=cs8o 提取码:cs8o

前期准备:

  • 关闭selinux
  • 查看状态
getenforce

临时关闭

setenforce 0

永久关闭

vi /etc/selinux/config

# 设置为disabled
SELINUX=disabled

防火墙

  • 查看防火墙状态
systemctl status firewalld

关闭

systemctl stop firewalld

关闭开机启动防火墙

systemctl disable firewalld

配置repo源:

curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum clean all && yum makecache

yum install -y docker-ce-23.0.6

docker讲解(前戏)_linux

docker讲解(前戏)_linux_02

设置开机启动

systemctl enable docker 

启动docker

systemctl start docker  

systemctl restart docker 

停止docker

systemctl stop docker  

其他

## 查看docker信息
docker version

## 查看docker信息
docker info

## docker-client
which docker

## docker daemon
ps -ef |grep docker

docker讲解(前戏)_linux_03

配置镜像加速

类似于pip源,以后在docker中下载镜像时,使用加速器,下载就会比较快。可以去这:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

sudo mkdir -p /etc/docker


sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://rk7qxobg.mirror.aliyuncs.com"
  ]
}
EOF



systemctl daemon-reload
systemctl restart docker 

docker讲解(前戏)_linux_04

docker pull ubuntu

下载相当快:

docker讲解(前戏)_linux_05

转发:

直接黏贴:

cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF


sysctl -p /etc/sysctl.d/docker.conf

dockerfile:

FROM 指定基础镜像,必须为第一个命令

格式:
	FROM <image>
	FROM <image>:<tag>
示例:
	FROM mysql:5.7
注意:
	tag是可选的,如果不使用tag时,会使用latest版本的基础镜像

MAINTAINER 镜像维护者的信息

格式:
	MAINTAINER <name>
示例:
	MAINTAINER char1es
    MAINTAINER char1es@live.com

ENV

格式:
    ENV <key> <value>
    ENV <key>=<value>
示例:
    ENV myName John
    ENV myCat=fluffy

COPY|ADD 添加本地文件到镜像中 app.py /data/www/info/app.py

格式:
	COPY <src>... <dest>
示例:
    ADD hom* /mydir/          # 添加所有以"hom"开头的文件
    ADD test relativeDir/     # 添加 "test" 到 $WORKDIR/relativeDir/
    ADD test /absoluteDir/    # 添加 "test" 到 /absoluteDir/
    
注意:针对压缩包使用ADD的话,会自动解压。

WORKDIR 工作目录

格式:
	WORKDIR /path/to/workdir
示例:
    WORKDIR /a  (这时工作目录为/a)
注意:
	通过WORKDIR设置工作目录后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行

RUN 构建镜像过程中执行命令

格式:
	RUN <command>
示例:
    RUN yum install nginx
    RUN pip install django
    RUN mkdir test && rm -rf /var/lib/unusedfiles
注意:
	RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache

CMD 构建容器后调用,也就是在容器启动时才进行调用

格式:
    CMD ["executable","param1","param2"] (执行可执行文件,优先)
    CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)
    CMD command param1 param2 (执行shell内部命令)
示例:
    CMD ["/usr/bin/wc","--help"]
    CMD ping www.baidu.com
注意:
	CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。

ENTRYPOINT 设置容器初始化命令,使其可执行化

格式:
    ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先)
    ENTRYPOINT command param1 param2 (shell内部命令)
示例:
    ENTRYPOINT ["/usr/bin/wc","--help"]
注意:
	ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令

EXPOSE 暴漏端口

格式:
    EXPOSE <port> [<port>...]
示例:
    EXPOSE 80 443
    EXPOSE 8080
    EXPOSE 11211/tcp 11211/udp
注意:
    就是一个端口的标识,实际开发时,没什么意义。因为端口的映射会在run命令时进行指定。

构建:

docker build -t char1es/web1:1.0 . -f Dockerfile
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   14   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   16   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   12   0   0 Docker
  nIt0XG0acU8j   2023年12月11日   15   0   0 linuxhtop