一、线上安装
安装命令
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
二、离线安装
1、安装包官方地址:https://download.docker.com/linux/static/stable/x86_64/
2、解压
tar -zxvf docke.tgz
3、将解压出来的docker文件复制到 /usr/bin/ 目录下
cp docker/* /usr/bin/
4、创建docker.service文件
进入 /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 --selinux-enabled=false --insecure-registry=127.0.0.1
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
# 此处的–insecure-registry=127.0.0.1(此处改成你私服ip)设置是针对有搭建了自己私服Harbor时允许docker进行不安全的访问,否则访问将会被拒绝。
5、启动docker
# 给docker.service文件添加执行权限
chmod +x /etc/systemd/system/docker.service
# 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
# 启动
systemctl start docker
# 设置开机启动
systemctl enable docker.service
# 查看docker服务状态
[root@localhost system]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-06-28 00:54:47 PDT; 10s ago
Docs: https://docs.docker.com
Main PID: 45475 (dockerd)
CGroup: /system.slice/docker.service
├─45475 /usr/bin/dockerd --selinux-enabled=false --insecure-registry=10.1.20.150
└─45487 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.158519178-07:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd..." module=grpc
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.158525449-07:00" level=info msg="ClientConn switching balancer to "pick_first"" module=grpc
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.202943588-07:00" level=info msg="Loading containers: start."
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.021854086-07:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon...d IP address"
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.126281901-07:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.244251569-07:00" level=info msg="Loading containers: done."
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.264592112-07:00" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=overlay2 version=20.10.17
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.265027319-07:00" level=info msg="Daemon has completed initialization"
Jun 28 00:54:47 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.300116789-07:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
# 如上表示docker已安装成功
三、docker-compose安装
# docker-compose下载并放到/usr/local/bin/下面:
curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 下载好docker-compose的前提下,拷贝到指定位置
sudo cp docker-compose /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
docker-compose -v
# 最后使用 docker-compose -v 命令测试是否安装成功(如果提示“没有那个文件或目录”可以重启下服务器再试试)
安装原文链接:链接
四、使用问题
1、更换docker镜像
更换为阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
成功的话会有如下提示:
repo saved to /etc/yum.repos.d/docker-ce.repo
2、启动并开机自启
sudo systemctl start docker && sudo systemctl enable docker
3、检测是否安装docker成功,查看版本信息。
docker version
sudo docker run hello-world
4、常用快捷键
1.sudo systemctl start docker #启动
2.docker -v # 查看版本
3.docker search redis #搜索镜像
4.docker pull mysql:5.7 #下载版本为5.7的mysql镜像
5.docker images #查看镜像列表(docker images -a列出所有容器)
6.docker run #运行容器
7.systemctl restart docker #重启docker
8.docker stop/start tomcat #启动/停止容器
9.docker rm e1711171807f #删除容器ID 需要先停止容器
10.docker rmi 1b6b1fe7261e #删除镜像ID
11.docker ps -a #查看镜像
12.docker cp /ss/ddd dockername:/ss/dddd #文件拷贝 外面---->里面
13.docker设置自启动
1、使用命令docker ps -a查看所有的容器,找到要设置自启动的容器的ID或名称
2、使用命令docker update --restart=always <容器ID或名称>来设置容器在宿主机启动时自动启动。
5、修改端口映射
5.1、查找容器的CONTAINER ID
docker ps -a
5.2、找到容器目录(完整的id),并进入
docker inspect CONTAINER ID |grep Id
cd /var/lib/docker/containers/完整id
5.3、停止容器
docker sotp 完整id
5.4、停止docker
systemctl stop docker
5.5、在容器目录找到hostconfig.json 和 config.v2.json做修改
vi hostconfig.json
比如新增一个 容器内部9080端口到宿主机9080端口的映射:
在PortBindings下边添加以下内容,端口配置之间用英文字符逗号隔开
"1900/tcp":[{"HostIp":"","HostPort":"1900"}]
"PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"7379"}],"9080/tcp":[{"HostIp":"","HostPort":"9080"}]},
vi config.v2.json
查找ExposedPorts节点看是否包含容器原本的端口号9080,没有就添加
"ExposedPorts":{"1521/tcp":{},"26379/tcp":{},"3306/tcp":{},"6379/tcp":{},"7001/tcp":{},"9080/tcp":{}}
5.6、重启docker和容器
systemctl start docker
docker start [docker id]