官网下载地址:https://download.docker.com/linux/static/stable/x86_64/
官网文档地址:https://docs.docker.com/engine/install/binaries/
# 下载
tarball="docker-18.09.7.tgz"
wget -c https://download.docker.com/linux/static/stable/x86_64/${tarball}
# 解压
tar -zxvf ${tarball}
# 复制到/usr/bin
cp docker/* /usr/bin
# 上步中必须拷贝解压出的文件到/usr/bin目录下,而不是在/usr/bin下建立文件夹,然后再整个拷过来。我这里就犯了个错误,在usr/bin下建立个docker目录,运行时报异常。应该是这个目录没有PATH中定义
这里是基础配置,详细配置可使用指定配置文件来启动服务
[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
#添加文件权限并启动docker
chmod +x /etc/systemd/system/docker.service
#重载unit配置文件
systemctl daemon-reload
#启动docker
systemctl start docker
#设置开机自启
systemctl enable docker.service
# 状态
systemctl status docker
# 版本
docker -v
添加docker的镜像源
vi /etc/docker/daemon.json
内容如下:
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
镜像命令:
docker images //查看本地已经存在的镜像
docker search imageName //搜索网络上镜像
docker pull imageName:versionNum //从镜像源拉取镜像
docker rmi imageID //删除镜(根据ID)
docker rmi `docker images -q` //删除所有镜像 注意 ``是esc键下的字符
容器命令:
docker ps //查看正在运行的容器
docker ps -a //查看所有容器
docker ps -l //查看最后一次运行的容器
dokcer ps -f status=existed //查看停止的容
docker run -it --name=容器名称 镜像名称:标签 /bin/bash //交互式方式创建容器并进入容器
要退出当前 容器: exit
docker run -di --name=容器名称 镜像名称:标签 //守护式方式创建容器
以守护式方式创建容器后进入容器:docker exec -it 容器名称或ID /bin/bash
注意:直接以交互式创建容器并进入容器,exit后,容器结束 运行;以守护式创建容器,再进入容器,exit后,容器还是运行状态。
容器启动、停止
docker start 容器名称或id
docker stop 容器名称或id
文件拷贝
docker cp 需要拷贝的文件或目录 容器名称:容器目录 //拷贝宿主机文件到容器
docker cp 容器名称:容器目录 需要拷贝的文件或目录 //拷贝容器内文件到宿主机
创建容器时报异常:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"write /proc/self/attr/keycreate: permission denied\"": unknown.
需要执行setenforce 0 (临时使用,重启后消失)
将/etc/selinux
下的config
文件中的SELINUX
属性改为disabled
vi /etc/selinux/config
可以看到里面的属性为:enforcing
强制性的。将SELINUX
属性改为disabled
,保存退出:wq
,重启liunx
系统即可
文件拷贝
//从宿主机拷贝到容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录
//从容器拷贝到宿主机
docker cp 容器名称:需要拷贝的文件或目录 宿主机目录或文件
目录挂载
创建容器 添加-v参数,后边为 宿主机目录:容器目录
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=myCentos2 centos:latest
如果共享的是多级目录,可能出现权限不足的情况。这是因为系统的安全模块selinux把权限禁掉了。需要添加参数 --privileged=true来解决挂载的目录没有权限的问题
查看容器IP地址
docker inspect 容器名称(或ID)
也可直接执行下面的命令直接输出IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或ID)
删除容器
docker rm 容器名称(或ID)
运行中的窗口必须stop后才能删除,同理镜像也是删除不掉的。