安装部署
vim /etc/yum.repos.d/docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
vim CentOS-Base.repo
%s/$releasever/7/g
[root@server1 ~]# yum install docker-ce -y
[root@server1 ~]# systemctl enable --now docker
[root@server1 ~]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@server1 ~]# sysctl --system
[root@server1 ~]# ip addr
[root@server1 ~]# docker search yakexi007
[root@server1 ~]# docker pull yakexi007/game2048
[root@server1 ~]# docker images
[root@server1 ~]# docker history yakexi007/game2048:latest #查看默认监听端口
[root@server1 ~]# docker run -d --name game -p 80:80 yakexi007/game2048
映射容器的端口到宿主机
docker ps #查看运行的容器
docker ps -a #查看所有容器
docker tag yakexi007/game2048:latest game2048:latest #改名
docker rmi yakexi007/game2048 #删除
共享宿主机的内核
docker pull busybox
docker run -it busybox
ctrl+d退出容器后资源会被释放,重新进入容器:
docker ps -a
docker start 42407e24e1b5 #数字为容器id
docker start 42407e24e1b5
docker container attach 42407e24e1b5
ctrl+pq退出 不会释放资源
删除已经退出的容器
docker rm 42407e24e1b5 dfa20765d14e
-f #强行删除
docker run -it --rm busybox #退出自动回收
docker run -it --name demo busybox
docker ps -a
docker commit -m "add files" demo demo:v1
docker images
docker history demo:v1
docker history busybox:latest
docker rm dem #删除容器
docker rmi demo:v1 #删除镜像
mkdir docker
cd docker/
vim Dockerfile
FROM busybox
RUN touch file2
RUN mkdir westos
docker build -t demo:v1 .
docker history demo:v1
docker rmi demo:v1
cd docker
vim Dockerfile
FROM busybox
RUN touch file1
COPY index.html /
[root@server1 docker]# vim index.html
[root@server1 docker]# docker build -t demo:v1 .
[root@server1 docker]# docker run -it --rm demo:v1
自动解压
[root@server1 docker]# tar zcf test.tar.gz /etc #生成压缩包
[root@server1 docker]# vim Dockerfile
FROM busybox
RUN touch file1
COPY index.html /
ADD test.tar.gz /mnt
[root@server1 docker]# docker build -t demo:v2 .
ENV变量
[root@server1 docker]# vim Dockerfile
ENV HOSTNAME server1
[root@server1 docker]# docker build -t demo:v3 .
[root@server1 docker]# docker run -it --rm demo:v3
端口
[root@server1 docker]# vim Dockerfile
EXPOSE 80
[root@server1 docker]# docker build -t demo:v4 .
[root@server1 docker]# docker history demo:v4
[root@server1 docker]# docker load -i nginx.tar
[root@server1 docker]# docker images
[root@server1 docker]# docker history nginx:latest
[root@server1 docker]# docker run -d --name demo -P nginx
VOLUME 卷
[root@server1 docker]# vim Dockerfile
VOLUME ["/data"]
[root@server1 docker]# docker build -t demo:v5 .
[root@server1 docker]# docker history demo:v5
[root@server1 docker]# docker run -it --name demo demo:v5
/ # cd /data/
/data # touch kkk
/data # ctrl + pq 退出
[root@server1 docker]# docker inspect demo
[root@server1 docker]# cd /var/lib/docker/volumes/67f6593c1b4f5f083b9493fbc9d21802f668587c1434c6bbd1a259c4a213f557/_data
[root@server1 _data]# ls
[root@server1 _data]# rm -rf kkk
[root@server1 _data]# cp /etc/passwd .
[root@server1 _data]# docker attach demo
/data # ls
[root@server1 _data]# docker rm demo
[root@server1 _data]# docker volume ls
[root@server1 _data]# docker volume prune
[root@server1 _data]# cd /var/lib/docker/volumes/
root@server1 volumes]# ls
删除卷之后之前的路径就不存在了
CMD
[root@server1 docker]# vim Dockerfile
CMD echo "hello world"
[root@server1 docker]# docker build -t demo:v6 .
[root@server1 docker]# vim Dockerfile
CMD echo "hello $HOSTNAME"
[root@server1 docker]# docker build -t demo:v7 .
[root@server1 docker]# docker run --rm demo:v7
也可以这样编辑
CMD ["/bin/sh", "-c" , "echo hello $HOSTNAME"]
输出为 hello server1
或者
[root@server1 docker]# vim Dockerfile
ENTRYPOINT ["echo", "hello"]
CMD ["world"]
[root@server1 docker]# docker build -t demo:v8 .
[root@server1 docker]# docker run --rm demo:v8
[root@server1 docker]# docker run --rm demo:v8 aaa
ENTRYPOINT不能覆盖 CMD可以覆盖命令
删除不用的镜像
[root@server1 docker]# docker rmi `docker images | grep demo | awk '{print $1":"$2}'`