Skip to main content
 Web开发网 » 站长学院 » 浏览器插件

Docker基础教程

2021年11月10日6220百度已收录

Docker基础教程

Docker基础教程  Docker教程 第1张

安装Docker管理Docker虚拟机DaoCloud镜像加速器镜像容器镜像发布一,安装Docker

安装docker

环境:centos7.x

首先更新yum sudo yum -y update

然后执行安装命令 sudo yum install -y docker

Docker 默认的位置: /var/lib/docker

二、管理Docker虚拟机

(1)管理Docker虚拟机命令

启动Docker

sudo systemctl start docker

重启Docker

sudo systemctl restart docker

关闭Docker

sudo systemctl stop docker

(2)一图读懂Docker命令

Docker基础教程  Docker教程 第2张

(3)给当前用户赋予执行docker命令权限

# 创建docker用户组

1.sudo groupadd docker

# 将当前用户添加到docker组中

2. sudo gpasswd -a ${user} docker

# 重启docker进程

3.sudo systemctl restart docker

4.重新登录shell

三、DaoCloud镜像加速器

1.DaoCloud官网地址

2.配置DaoCloud

2.1 shell下执行命令:

curl -sSL

2.2 执行完上述命令后,多了个逗号,打开/etc/docker/daemon.json文件,去掉“,”;

Docker基础教程  Docker教程 第3张

2.3重启docker

sudo systemctl restart docker

四、镜像

1.在线安装镜像

从dockerhub上搜索镜像并在线安装。

dockerhub地址: /

在线 安装镜像,不需要注册

推送自己的镜像到dockerhub,需要注册用户

案例:在线安装java镜像

step1: 搜索java镜像

docker search java

Docker基础教程  Docker教程 第4张

step2:从dockerhub拉去并安装java镜像

docker pull docker.io/java

2,镜像相关基础命令

(1)查看所有安装的镜像

docker images

(2)修改docker镜像名称

docker tag oldname newname

docker tag docker.io/java java

(3)备份镜像

镜像导出

docker save java> /home/java.tar.gz

镜像导入

docker load < /home/java.tar.gz

(4)删除镜像

docker rmi 镜像名称或镜像id

(5)查看镜像依赖

docker history imageid

3,编写Dockerfile

3.1,执行hellowold-dockerfile

3.2,Dockerfile语法梳理及最佳实践

FROM

选取base image

FROM scratch

scratch表示不依赖任何image,从头制作.

LABEL

镜像作者信息

LABEL maintainer="gy@qq.com"

LABEL version="1.0"

LABEL description="this is description"

RUN

执行命令并创建新的Image Layer

Docker基础教程  Docker教程 第5张

WORKDIR

设定当前工作目录,类似于 cd命令

WORKDIR /root 如果没有会自动创建root

WORKDIR demo

RUN pwd 输出结果/root/demo

ADD and COPY

将本地文件添加到docker image中

ADD

ADD hello / 将hello文件添加到根目录

ADD test.tar.gz / 添加到根目录并解压

WORKDIR /root ADD hello test/ 添加到/root/test中

COPY

WORKDIR /root COPY hello test/

ADD与COPY区别

ADD除了COPY还可以对tar.gz解压缩

ENV

存储和网络

VOLUME

EXPOSE

Shell和Exec

shell:将要运行的命令作为shell脚本执行

Docker基础教程  Docker教程 第6张

CMD

设置容器启动后默认执行的命令和参数如果docker run指定了其它命令,CMD命令会被忽略如果定义了多个CMD,只有最后一个会执行ENTRYPOINT

设置容器启动时运行的命令让容器以应用程序或者服务的形式运行不会被忽略,一定会执行3.3Dockerfile学习资料

Dockerfile在github上的代码库

/

Dockerfile reference

/

五、容器

1.容器基础命令

启动容器: docker run

docker run -it --name 容器名称 镜像名称 bash

docker run -it -p 9000:8080 -p 9001:8888 --name 容器名称 镜像名称 bash

docker run -it -v /home/project:/soft --privileged --name 容器名称 镜像名称 bash

-it:代表交互式运行,进入docker环境

--name代表容器名称

-p 9000:8000 将宿主机9000端口映射到docker容器的800端口

-v 将宿主机/home/project映射到容器的/soft目录

--privileged 代表docker拥有操作宿主机文件的最高权限

查看正在运行的容器

docker container ls -a

docker ps -a

案例:启动docker容器,并在容器中创建文件,将文件映射到宿主机中。

sudo docker run -it -p 9000:8080 -v /usr/gy/docker:/soft --privileged --name myjava docker.io/java bash

cd /soft

touch hello.txt

echo "hello">hello.txt

结果: 宿主机的/usr/gy/docker中有文件hello.txt

退出容器 exit

暂停容器 docker pause myjava

恢复容器运行 docker unpause myjava

停止容器 docker stop myjava

重新启动容器 docker start -i myjava

删除容器

可以使用"docker rm 容器id"来删除一个终止状态的容器;若要删除一个运行 中的容器,需要加-f参数

sudo docker rm -f 8023be72d98f

删除所有容器

docker rm $(docker container ls -al)

删除所有退出的容器

docker rm $(docker container ls -f "status=exited" -q)

2.基于容器创建新的镜像

方法一:docker container commit containerName newImageName

简写:docker commit containerName newImageName

案例:基于centos容器创建新的镜像

step1:启动centos容器 docker run -it centos

step2: 改变容器的内容

安装vim yum install -y vim

step3:将改变后的容器,重新编译成image

Docker基础教程  Docker教程 第7张

step4: docker commit jovial_mcnulty gy/centos-vim

Docker基础教程  Docker教程 第8张

方法二、Dockerfile

案例:基于centos容器创建新的镜像

在宿主机上执行以下命令:

1,创建并进入目录 /usr/gy/docker/docker-centos-vim

2,创建并编写Dockfile文件

vi Dockerfile

#基于docker.io/centos镜像构建

FROM docker.io/centos

#运行安装vim命令

RUN yum install -y vim

3,运行命令

docker build -t gy/centos-vim-new .

-t:代表生成的镜像名称

. 点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点

问题:镜像是只读的为什么能安装vim?

答案:镜像在运行过程中会生成一个临时容器,将vim安装到临时容器中,最后将临时容器转成新的镜像同时临时容器被删除

六、镜像发布

镜像上传到dockerhub注意点:镜像名字: dockerhub-用户名/镜像名称,否则出现无权限提示

Docker基础教程  Docker教程 第9张

step1:docker login

登录dockerhub

step2: docker push imagename

step3: 验证:

方法一:登录dockerhub网站,找到提交的镜像

方法二:删除本地的镜像,重新拉去dockerhub上新提交的镜像

dockerfiledockerhub与github关联,dockerhub自动克隆gihhub上的仓库并自动构建镜像

搭建私有dockerhubregistry:

Docker基础教程  Docker教程 第10张

step1:找一台服务器启动registry

docker run -d -p 5000:5000 --restart always --name registry registry:2

step2:本地打包镜像 docker build -t ip:5000/imagename[:tag]

注意: 必须是registry所在服务器的ip:5000/imagename:tag

step3:编辑/etc/docker/daemon.json

添加内容: {"insecure-registries":["registry-ip:5000"]}

step4:编辑 /lib/systemd/system/docker.service

添加内容:

Docker基础教程  Docker教程 第11张

step5:重启docker

sudo systemctl restart docker

step6: docker push rgistry-ip:5000/imagename

验证:

/

评论列表暂无评论
发表评论
微信