docker安装与使用
1、安装docker
1.1在线安装docker
1、使用 yum 命令在线安装
yum install docker:版本
2、查看docker版本
docker -v
3、启动与停止docker
启动 docker:systemctl start docker
停止 docker:systemctl stop docker
重启 docker:systemctl restart docker
查看 docker 状态:systemctl status docker
开机启动:systemctl enable docker
查看 docker 概要信息:docker info
查看 docker 帮助文档:docker --help
4、使用ustc镜像
编辑该文件:vi /etc/docker/daemon.json // 如果该文件不存在就手动创建,在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
注意:一定要重启 docker 服务,如果重启 docker 后无法加速,可以重新启动 OS
1.1.1docker替换国内源
1、安装所需的软件包。yum-utils 提供了 yum-config-manager 实用程序,并且 devicemapper 存储驱动需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、使用下列命令设置 stable 镜像仓库。您始终需要使用 stable 镜像仓库,即使您还需要通过 edge 或 testing 镜像仓库安装构建也是如此。这里给出的阿里云镜像源站。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新 yum 软件包索引。
sudo yum makecache fast
4、安装最新版本的 Docker CE
sudo yum install -y docker-ce
5、启动 Docker
sudo systemctl start docker
6、验证是否正确安装了 docker
docker version
1.2离线安装docker
1.从官方下载Docker安装包并上传至虚拟机
2.解压安装包
tar -zxvf docker-19.03.5.tgz
3.将解压出来的docker文件内容移动到 /usr/bin/ 目录下
cp docker/* /usr/bin/
4.将docker注册为service服务
vim /etc/systemd/system/docker.service
将下列配置加到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
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
5、启动docker
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload #重载unit配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启
6、验证
systemctl status docker #查看Docker状态
docker -v #查看Docker版本
7、卸载离线docker(先停掉docker systemctl stop docker)
- 删除/var/bin/docker
- 删除/var/lib/docker
- 删除/usr/bin/docker
Tips:
①忽略证书配置
ExecStart=/usr/bin/dockerd --insecure-registry Docker仓库IP:Docker端口号
②启动容器报错:
/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.
解决:
ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc
2、docker相关命令
1、查看docker版本
docker -v
2、搜索镜像
docker search 镜像名称:版本
3、拉取镜像
docker pull 镜像名称:版本
4、删除镜像
docker rmi 镜像名称或镜像id
5、镜像备份与恢复
#备份镜像为文件
docker save 文件名称.tar 镜像名称或id
#恢复镜像
docker load -i 文件名称.tar
#容器保存为镜像
docker commit 容器名称 新的镜像名称
6、创建容器
创建容器常用的参数说明:
创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置。
-d:在 run 后面加上-d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-e:表示传递环境变量
例如:
docker run -di -p 9876:9876 -v /root/namesrv/logs:/root/logs -v /root/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
7、启动与停止容器
#启动容器
docker start 容器名称或id
#停止容器
docker stop 容器名称或id
#重启容器
docker restart 容器名称或id
#查看正在运行容器
docker ps
#查看所有容器
docker ps -a
#查看所有容器id
docker ps -a -q
#查看最后一次运行的容器:
docker ps –l
#查看停止的容器:
docker ps -f status=exited
#查看容器详细信息(虚拟ip,版本等)
docker inspect 容器名称或id
#已启动容器设置docker重启容器自动重启
docker update --restart=always 容器id或容器名
8、文件拷贝
- 拷贝文件到容器内
docker cp 需要拷贝的文件或目录 容器名称:容器目录 - 也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
9、目录挂载
创建容器 添加-v 参数 后边为 宿主机目录:容器目录
10、删除容器(删除前需先停止)
docker rm 容器名称或id
11、进入与退出容器
#进入容器
docker exec -it 容器名称 bash
#退出容器
exit
12、查看容器启动日志
docker logs -f 容器名称或id
3.docker启动springboot的jar程序
3.1在jar的同级目录创建Dockerfile文件
修改jar包名称authentication和springboot程序端口9050
文件保存为utf-8格式
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY authentication.jar app.jar
EXPOSE 9050
ENTRYPOINT ["java", "-jar", "app.jar"]
3.2在jar和Dockerfile的同级目录下执行
#创建镜像(authentication为镜像名称),后面的点不要删!
docker build -t authentication .
#创建并运行容器
docker run --name authentication -d -p 9050:9050 authentication:latest --restart=always
4.查看容器挂载目录
docker inspect 容器名称或容器id | grep Mounts -A 20