docker安装与常用命令

文章附有docker下载安装包文件

一、docker安装(通过yum安装)

1、下载关于Docker的依赖环境

yum -y install yum-utils device-mapper-persistent-datalvm2

使用yum工具下载
yum是软件包管理工具
通过 执行 man yum
可以查看yum的帮助信息

2设置下载Docker的镜像源

依赖环境下载完毕以后,设置下载的镜像源,如果不设置,会默认去Docker的官方下载,但是官方的服务器在国外,下载会比较缓慢,设置下载国内的镜像源(镜像就是英文单词image)


###使用国内的阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

输入以上代码 回车,如下图所示:

3、安装docker

###首先,下面这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度

yum makecache fast

###提高安装速度以后,安装docker相关的。(docker-ce 社区版 而ee是企业版)

yum install docker-ce docker-ce-cli containerd.io

4、启动

4.1 启动Docker服务

systemctl start docker

4.2 设置开机自动启动

systemctl enable docker

二、docker安装(通过本地docker安装包)

cd /usr/local/src
tar -zxvf docker-24.0.2.tgz
cp docker/* /usr/bin/

验证是否安装成功,执行docker info命令

docker info
vi /usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

#启动docker

systemctl start docker

#设置开机自启动

systemctl enable docker

三、Dockerfile编写&&镜像构建说明

1、前提

编写Dockerfile最好一个项目对应一个目录,不要把多个Dockerfile放在一起,因为根据Dockerfile构建镜像的时候,只会找名为Dockerfile的文件来构建。

2、Dockerfile内容

1、FROM

这个指的是以什么为基础镜像构建,因为Dockerfile都是构建后端的包,而后端的jar包需要jdk才能启动,所以此处指定使用openjdk:11为基础镜像。

2、WORKDIR&&ADD

如果没有指定WORKDIR,那么默认的添加构建到镜像中的路径为根目录/。

此处则是把与Dockerfile同一目录下的 system-4.0.0.jar与application-test.yml放到镜像中的根目录下

ADD system-4.0.0.jar anquandun-test.jar

ADD application-test.yml .

如果指定了WORKDIR,如图,则WORKDIR /home/sn以后的ADD命令都是将文件放置在了容器中的/home/sn这个目录里下。

3、ENTRYPOINT

如图,此参数则是关于docker容器启动以后,java的jar包的启动命令。

编写完成后,保存退出。

3、构建镜像

在Dockerfile所在的目录。

###构建镜像命令

docker build -t <镜像名>:<tag> .

例:

docker build -t ck-master:1.0 .

此时就将构建一个名为ck-mastertag1.0的镜像。

注意,tag后面空一格有一个点“.”,千万不能缺少了。

四、docker常用命令

1、一键重启所有容器

docker restart $(docker ps -a -q)

2、启动所有停止的容器

docker ps -a | grep Exited | awk '{print $1}' |xargs docker start

3、docker清理

3.1、清除所有没有容器引用的镜像(慎用)

docker system prune -a

 参数:-a : 清除所有没有容器引用的镜像时,使用 docker system prune -a (慎用)-f  or --force    

 强制清除,不会出现提示,使用docker system prune -f(慎用)--filter :          

 用来限制要保留的镜像的范围,例如:只清除超过创建时间超过24小时的镜像(docker image prune -a --filter "until=24h")

3.2、删除所有已经停止的容器

docker rm $(docker ps -a|grep Exited |awk '{print $1}')docker rm $(docker ps -qf status=exited)

3.3、删除所有未打标签的镜像

docker rmi $(docker images -q -f dangling=true)

3.4、删除所有无用的volume

docker volume rm $(docker volume ls -qf dangling=true)

4、docker更换存储目录

4.1、查看默认储存位置 "Docker Root Dir"(此时已改,所以是自定义的路径),默认是/var/lib/docker

docker info

4.2、关闭docker服务

#先关闭所有在运行的容器

docker stop $(docker ps -a -q)

 #关闭docker服务

systemctl stop docker.service       

4.3、在目的盘创建新的文件夹,并移动原来的镜像和容器

mkdir /home/chenjian/docker_data

cd /home/chenjian/docker_data

cp -r /var/lib/docker .

4.4、修改docker的配置文件,指定新存储位置。并设置阿里云镜像加速

具体registry-mirrors请百度查询获取

sudo vim /etc/docker/daemon.json #没有就创建

#添加内容如下

​
{

"data-root": "/home/chenjian/docker_data",

"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]

}

​

4.5、加载配置文件,重启服务

sudo systemctl daemon-reload

sudo systemctl restart docker

4.6、此时除了mysq之外的容器都能启动

mysql如果不能启动,则给迁移过去的目录赋权777

chmod -R 777 XXXX

5、让普通用户能执行docker

默认情况下,docker只能由root用户执行命令操作。

修改/var/run/docker.sock用户权限为root用户,docker组,然后将普通用户添加进docker组,这样普通用户就可以操作docker命令,具体命令如下:

5.1、添加docker用户组

groupadd docker

5.2、添加用户进docker组

gpasswd -a 用户名 docker

5.3、更新用户组

newgrp docker

5.4、重启docker

systemctl restart docker

6、镜像导出与导入

6.1、导出

语法:docker save -o  XXXX.tar  <镜像名>:<tag>  <镜像名>:<tag> ...

其中XXXX.tar可自定义,为导出的镜像,可以把多个镜像导出为一个tar文件。

6.2、导入

docker load -i  XXXX.tar

其中XXXX.tar为需要导入的镜像包文件。

7、容器设置开机启动

###查看 Docker 容器是否设置了自动拉起

docker inspect --format='{{ .HostConfig.RestartPolicy.Name }}' <容器名称或ID>

###设置容器开机自启动

docker update --restart always <容器ID或名称>

8、虚悬镜像解释

当已经有一个名为mysql:1.0的镜像的时候,此时又制作了一个一模一样的mysql:1.0镜像,那么此时就会形成虚悬镜像,如下图所示,最初的mysql:1.0镜像的tag则会变成<none>。

所以尽量避免镜像的名称与tag一模一样。

9、动态加载docker配置文件

当/etc/docker/daemon.json文件被修改了后,执行

systemctl reload docker来加载。

此时就不需要重启docker,造成运行中的容器被迫停止了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

振宇i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值