docker相关使用

安装docker

CentOS 7上安装docker-ce,首先检查系统中是否已经安装过docker及相关依赖:

$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

通过仓库进行安装,安装所需的包:

$ sudo yum install yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

启用稳定版的仓库sudo yum-config-manager --enable docker-ce-stable,
禁用仓库sudo yum-config-manager --disable docker-ce-stable

安装docker-ce,sudo yum install docker-ce.如果出现key相关错误,可以重新安装一下,会使用下载的缓存,并提示导入指纹。

启动docker,sudo systemctl start docker

现在使用docker相关命令的话,需要sudo权限,可以将当前用户添加进入docker组,
sudo usermod -aG docker $USER
退出shell,重新进入就不需要sudo权限了

修改docker镜像为中国官方镜像sudo vim /etc/docker/daemon.json,添加以下内容
{"registry-mirrors":["https://registry.docker-cn.com"]}

修改镜像名字

sudo docker tag IMAGEID [docker.my.com:port/]NAME[:1.0.0]

如果需要上传到指定私有镜像, 需要指定域名ip, 版本号根据自己的需求进行添加.

上传镜像到私有仓库

需要将镜像改名, sudo docker tag IMAGEID docker.my.com:port/NAME[:1.0.0],

编辑sudo vim /etc/docker/daemon.json, 添加内容{"insecure-registries":["docker.my.com:port"]}, 如果之前已经有内容, 可以在已有内容后添加,, 然后添加"insecure-registries":["docker.my.com:port"], 重启sudo systemctl restart docker

上传sudo docker push docker.my.com:port/NAME:1.0.0, 需要指定版本号, 如果重命名时没有指定, 就使用默认的版本号.

~~

开机自启容器

在启动容器时需要使用--restart=always, 注意一定要把这个参数放在-d参数的后面, 不然容器会一直重启.
示例docker run -d --restart=always -p port:port -v /local_path:/docker_path --name name image_name~~

如果启动时没有指定--restart=always, 也可以使用更新命令docker update --restart=always name

复制docker中的内容

可以使用sudo docker ps -a查看是否有docker容器以及NAMES, 如果容器停止并删除了, 就不能复制内容.

sudo docker cp NAMES:/home/users/file ./

进入docker的shell

sudo docker exec -it NAMES /bin/bash, 和Linux的操作一样,
可以通过cat /etc/issue查看Linux发行版本, 默认进入是root权限.
使用cat /proc/version, 这样查到的是宿主机的系统.
uname -a查到的是容器的相关信息.

保存docker容器的修改

--privileged=true是严格模式启动容器, 需要修改容器文件, 在启动容器时启用
docker ps查看容器id, docker commit id name:version

删除仓库中上传的镜像

查看仓库中镜像信息
curl -X GET http://docker.my.com:port/v2/_catalog

查看Etag,

需要使用特殊的头Accept: application/vnd.docker.distribution.manifest.v2+json

curl -I -X HEAD http://docker.my.com:port/v2/镜像名/manifests/版本号

删除
curl -X DELETE http://docker.my.com:port/v2/镜像名/manifests/Etag的值

docker无法启动的问题

一般docker起不来是因为selinux的状态问题.

docker启动时报错Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)

修改sudo vim /etc/sysconfig/docker, 中的--selinux-enabled--selinux-enabled=false

如果需要, 可以修改/etc/selinux/configSELINUX的值为disabled., 不强求

docker启动容器报WARNING: IPv4 forwarding is disabled. Networking will not work.

编辑系统文件sudo vim /usr/lib/sysctl.d/00-system.conf, 在最后追加net.ipv4.ip_forward=1,
重启sudo systemctl restart network

原文地址:https://www.cnblogs.com/zzhaolei/p/11067952.html