Docker

发布时间:2024年01月15日

1.docker部署安装

安装Docker

本安装教程参考Docker官方文档,地址如下:

https://docs.docker.com/engine/install/centos/

1.1.卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

1.2.配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源(阿里云):

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

1.3.安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.4.启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

2.配置镜像加速

这里以阿里云镜像加速为例。

2.1.注册阿里云账号

首先访问阿里云网站:

阿里云-计算,为了无法计算的价值

注册一个账号。

2.2.开通镜像服务

在首页的产品中,找到阿里云的容器镜像服务

点击后进入控制台:

首次可能需要选择立刻开通,然后进入控制台。

2.3.配置镜像加速

找到镜像工具下的镜像加速器

页面向下滚动,即可找到配置的文档说明:

具体命令如下:

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

3.docker命令

3.1.docker run 命令参数

docker run -d  --name mysql -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123 mysql
-d 容器后台运行
-p 配置端口映射 宿主机:容器端口
端口映射说明:我们可以直接访问宿主机的ip,但是不能直接访问容器,因此需要宿主机和容器做映射
-e 环境配置
-v html:/usr/share/nginx/html  挂载数据卷 这里是将html数据卷挂载到宿主机的/usr/share/nginx/html目录
mysql 指定使用的镜像名

docker run 运行做了这些

3.2.镜像命令

docker images 查看镜像
docker  rmi  删除镜像
docker pull  拉取镜像
docker push  推送镜像
docker build  打包成镜像

3.3.容器命令

docker run   创建并运行容器,如果没有此镜像将会自动拉取
docker stop  后跟容器名 停止容器
docker start  后跟容器名 仅启动容器
docker ps      查看启动的容器,-a参数查看所用容器
docker rm      后跟容器名  删除容器,-f参数强制删除所有容器
docker logs    后跟容器名 打印容器日志 -f参数持续输出
docker exec    进入容器   
例子:docker exec -it mysql bash  
参数说明:-it 添加可输入终端  mysql 容器名 bash 以bash命令行交互         

3.4.docker挂载

3.4.1.新加卷并挂载

docker volume create  创建数据卷
docker volume rm      删除指定数据卷
docker volume inspect 查看数据卷
docker volume prune  清除数据卷

docker run 命令在创建容器运行容器的同时 通过-v参数完成挂载
参数:-v html:/usr/share/nginx/html  挂载数据卷 这里是将html数据卷挂载到容器的/usr/share/nginx/html
这里会将宿主机与新加卷对应的目录设置在默认的位置

3.4.2.目录挂载 🥝

docker inspect 容器名 查看容器详细信息

上述图片的Source 对应的是宿主机目录与容器内目录对应的目录,也就是html新加卷对应的宿主机目录位置,Destination对应的是html新加卷对应的容器目录位置

docker run -d 
--name mysql \
-p 3306:3306\ 
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
这里使用的是目录挂载,优点在于容器迁移的时候可以保证必要的数据不会丢失
在docker run 容器的时候即使没有声明挂载,命令也会默认进行一个挂载,这种默认的卷名字一般比较复杂

4.自定义镜像

maven项目打成jar包所需的依赖

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.3</version>
                <!--这里写上main方法所在类的路径从java包开始写起-->
                <configuration>
                    <mainClass>com.duhong.MainApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

5.容器网络互联

docker run 可以通过 -network 指定自定义网络

6.问题解决

启动容器时出现以下错误

Error response from daemon: driver failed programming external connectivity on endpoint dockerdemo2 (2c59b8326774a5f6e809454e9ccf0186631f43b420b9c017e3c95ffb75426270): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6006 -j DNAT --to-destination 172.18.0.3:6006 ! -i br-0330239e3bfd: iptables: No chain/target/match by that name.

(exit status 1))

systemctl restart docker  #重启docker
docker start dockerdemo2

文章来源:https://blog.csdn.net/weixin_53333436/article/details/135583012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。