一、docker卸载
1、如果已经启动,请先停止docker服务,执行命令:
systemctl stop docker
2、查看yum安装的docker包,执行命令:
yum list installed |grep docker
有yum的doker包的话卸载,执行命令
yum -y remove docker.x86_64 docker-client.x86_64 docker-common.x86_64
3、查看docker的rpm包执行命令:
rpm -qa |grep docker
4、删除docker目录
rm -rf /var/lib/docker (默认的目录)
二、安装docker
1、安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
2、为yum源添加docker仓库位置
yum-config-manager --add-repo /linux/centos/
执行这个命令后,CentOS 系统会下载指定 URL 的 .repo
文件,并将其内容添加到 YUM 的仓库配置中。这样,系统就可以通过 YUM 工具从这个新的仓库中搜索、安装和更新 Docker CE 相关的软件包了。
添加了 Docker CE 的仓库之后,通常还需要运行以下命令来使更改生效并安装 Docker CE:
sudo yum makecache fast
sudo yum install docker-ce docker-ce-cli
其中,makecache fast
命令用于更新 YUM 的缓存,以便它能获取到新添加仓库中的软件包信息。install
命令则用于安装 Docker CE 和相关的依赖包。
3、设置镜像源为阿里
yum-config-manager --add-repo /docker-ce/linux/centos/
4、安装docker
yum -y install docker-ce
-y会在安装的时候系统提示你输入y/n来确认
5、设置开机自动启动
systemctl enable docker
6、启动docker
systemctl start docker
7、停止docker
systemctl stop docker
8、修改dockers镜像的存放位置
mv /var/lib/docker /data/docker
9、建立软连接
ln -s /data/docker /var/lib/docker
ln
: 这是Linux中的链接命令,用于创建文件或目录的链接。-s
: 这是选项参数,表示创建的是软链接(symbolic link),也称为符号链接。软链接是一种特殊的文件,它包含了一个指向另一个文件或目录的路径名。/data/docker
: 这是源文件或目录的路径,也就是软链接所指向的目标。/var/lib/docker
: 这是在其中创建软链接的路径,也就是新的链接文件的位置。
所以,这个命令的作用是,在 /var/lib/docker
位置创建一个名为 docker
的软链接文件,该软链接指向 /data/docker
。这意味着,当你通过 /var/lib/docker
访问时,实际上会访问到 /data/docker
下的内容。
这样做的常见原因可能是为了将 Docker 的数据存储目录从默认位置 /var/lib/docker
更改为 /data/docker
,以满足特定的存储需求或者管理策略,而通过软链接,可以保持系统中其他依赖于 /var/lib/docker
路径的配置和工具无需修改就能继续正常工作。
三、docker 拉取命令
1、拉取java镜像
docker pull java
2、拉取sqlserver镜像
docker pull microsoft/mssql-server-linux # 拉取SqlServer镜像
docker run -p 1433:1433 --name mssql \ # run 运行容器 -p 将容器的1433端口映射到主机的1433端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /data/sqlserver:/var/opt/mssql \ # 挂载mssql文件夹到主机
-e ACCEPT_EULA=Y \ # 同意协议
-e MSSQL_SA_PASSWORD=mssql-MSSQL \ # 初始化sa密码
-u root \ # 指定容器为root运行
-d microsoft/mssql-server-linux # -d 后台运行
3、拉取mysql镜像
docker pull mysql #拉取 MySql
docker run -p 3306:3306 --name mysql \ # run 运行容器 -p 将容器的3306端口映射到主机的3306端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/mysql/log:/var/log/mysql \ # 将日志文件夹挂载到主机
-v /data/mysql/data:/var/lib/mysql \ # 将数据文件夹挂载到主机
-v /data/mysql/mysql-files:/var/lib/mysql-files \ # 将数据文件夹挂载到主机
-v /data/mysql/conf:/etc/mysql \ # 将配置文件夹挂在到主机
-e MYSQL_ROOT_PASSWORD=xiujingmysql. \ # 初始化root用户的密码
-d mysql # -d 后台运行
docker exec -it mysql /bin/bash # 进入Docker容器内部的bash
4、拉取mongodb镜像
docker pull mongo #拉取 mongodb
docker run -p 27017:27017 --name mongo \ # run 运行容器 -p 将容器的27017端口映射到主机的27017端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/mongodb/db:/data/db \ # 将数据文件夹挂载到主机
-v /data/mongodb/configdb:/data/configdb \ # 将数据库配置文件挂载到主机
-v /data/mongodb/initdb:/ # 通过//将更复杂的用户设置显式留给用户 当容器首次启动时它会执行/ 目录下的sh 和js脚本 。 以脚本字母顺序执行
-e MONGO_INITDB_ROOT_USERNAME=admin \ # 设置admin数据库账户名称 如果使用了此项,则不需要 --auth 参数
-e MONGO_INITDB_ROOT_PASSWORD=admin \ # 设置admin数据库账户密码 如果使用了此项,则不需要 --auth 参数 -d mongo \ #
-d 后台运行 --auth # --auth 需要密码才能访问容器服务
docker exec -it mongo mongo admin # 进入mongo
({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); #创建一个名为 admin,密码为 123456 的用户。
('admin', '123456') # 尝试使用上面创建的用户信息进行连接。
5、拉取redis镜像
docker pull redis #拉取 redis
docker run -p 6379:6379 --name redis \ # run 运行容器 -p 将容器的6379端口映射到主机的6379端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/redis:/data \ # 将数据文件夹挂载到主机
-d redis \ # -d 后台运行
redis-server --appendonly yes \ # 在容器执行redis-server启动命令,并打开redis持久化配置 --requirepass "123456" # 设置密码123456
6、拉取nginx镜像
docker pull nginx #拉取 nginx
docker run -p 80:80 -p 443:443 --name nginx -d nginx # 运行容器
docker container cp nginx:/etc/nginx /data/nginx/ #拷贝容器配置
docker rm -f nginx # 删除容器
7、拉取jenkins镜像
docker pull jenkins/jenkins:lts # 拉取 jenkins
docker run -p 8080:8080 -p 50000:50000 --name jenkins \ # run 运行容器 -p 将容器的8080,50000端口映射到主机的8080,50000端口 --name 容器运行的名字
--restart=always \ # 挂断自动重新启动
-u root \ # 运行的用户为root
-v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/jenkins_home:/var/jenkins_home \ # 将jenkins_home文件夹挂在到主机
-e JAVA_OPTS=-=Asia/Shanghai \ #设置jenkins运行环境时区
-d jenkins/jenkins:lts # -d 后台运行
8、拉取minio镜像
docker pull minio/minio # 拉取MinIO镜像
docker run -p 9000:9000 --name minio \ # run 运行容器 -p 将容器的9000,9000端口映射到主机的9000,9000端口 --name 容器运行的名
--restart=always \ # 挂断自动重新启动 -v /etc/localtime:/etc/localtime \ # 将主机本地时间夹挂在到容器
-v /data/minio/data:/data \ # 将data文件夹挂在到主机
-v /data/minio/config:/root/.minio \ # 将配置文件夹挂在到主机
-e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ # 设置MINIO_ACCESS_KEY的值
-e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ # 设置MINIO_SECRET_KEY值
-d minio/minio server /data # -d 后台运行 server /data 导出/data目录
四、docker常用命令
请注意!!! --name 请用被操作的镜像名替换
启动服务
systemctl start docker
设为开机自动启动
systemctl enable docker
停止服务
systemctl stop docker
重启服务
systemctl restart docker
列出镜像
docker images
删除镜像
dockker rmi --name
-f 强制删除
列出容器
docker ps
启动容器
docker start --name
停止容器
docker stop --nam
重启容器
docker restart --name
删除容器
docker rm --name
查看容器情况
docker stats -a
查看docker磁盘使用情况
docker system df
进入docker容器内部的bash
docker exec -it --name /bin/bash
复制文件到docker容器中
docker cp 主机文件 容器名称:容器路径
查看镜像日志
docker logs --name
删除容器
docker rm $(docker ps -a -q)
删除镜像
docker rmi $(docker images -a -q)
删除mysql|nginx|redis|jenkins非容器
docker rm -f `docker ps -a | grep -vE 'mysql|nginx|redis|jenkins' | awk '{print $1}'`
删除镜像none镜像
docker rmi -f `docker images | grep none | awk '{print $3}'`