直接开干。
uname -r
查看内核版本是否3.10或者以上。确认无误后,删除现有的docker
sudo yum remove docker docker-common docker-selinux docker-engine
安装docker库有关的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
也可以添加官方的源
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce –showduplicates | sort -r
查看后安装
sudo yum install docker-ce
安装成功后开启自启和启动
systemctl start docker
systemctl enable docker
是否成功可以查看命令来看
docker version
搜索镜像httpd nginx
docker search httpd
docker search nginx
查看本地镜像
docker images
下载到本地
docker pull httpd
docker pull nginx
运行后自动结束
docker run ubuntu echo “hello world”
查看运行状态
docker ps -a
docker top ubuntu docker stats ubuntu docker inspect ubuntu
列出所有容器 ID docker ps -aq
停止所有容器 docker stop $(docker ps -aq)
停止单个容器 docker stop 要停止的容器名
删除所有容器 docker rm $(docker ps -aq) 删除单个容器 docker rm 要删除的容器名
删除所有的镜像 docker rmi $(docker images -q)
查看网络模式 docker network ls
查看某个模式 比如bridge docker network inspect bridge
创建一个新的桥接网络docker network create –driver bridge –subnet=172.18.129.0/24 –gateway=172.18.129.1 mynet
删除刚才建立的网络 docker network rm mynet
docker run -d -p 8009:80 –name apache httpd
以进程方式启动-d 本地8009端口映射到镜像80 以命名为apache名字
udp端口的话 比如8888:8888/udp 这样写就可以了。
-it 是交互模式 在交互模式下退出直接exit
要是进程模式-d启动的,通过过docker ps -a 看name ,docker stop name停止掉。
运行中的容器进入方式 docker exec -it name /bin/bash
比如进了容器后,发现vi等编辑器都没。只能自己安装了
centos为例进入,yum.repo.d下更改下yum的源 毕竟centos8死了
通过sed命令
sed -i ‘s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-*
sed -i ‘s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g’ /etc/yum.repos.d/CentOS-*
yum install vi wget net-tools
其他操作系统都差不多。
docker commit name 保存的docker镜像 容器更新好后执行exit推出后commit保存下,其中name可以docker ps -a可以查到然后后面保存的自己定义的tag都可以。
docker logs name来可以查看输出的内容 name可以ps -a查看
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。这个也可以通过ps -a可以看到
更改dns
echo “$(sed ‘s/192.168.1.1/192.168.1.254/g’ /etc/resolv.conf)” > /etc/resolv.conf
其他sed 技巧
在使用DockerFile制作nginx镜像时,需要修改nginx.conf的配置,通过 sed命令可实现对镜像中文件的修改。
一、通过指定行号修改
- 在指定行号后增加内容:
RUN sed -i -e '行号a内容' 文件路径
- 替换指定行号的内容:
RUN sed -i -e '行号c内容' 文件路径
- 在指定行号前增加内容:
RUN sed -i -e '行号i内容' 文件路径
二、通过匹配内容进行修改
- 匹配行前修改:
RUN sed -i '/要匹配的内容/a修改后的内容' 文件路径
- 匹配行后修改:
RUN sed -i '/要匹配的内容/i修改后的内容' 文件路径
- 替换匹配行:
RUN sed -i '/要匹配的内容/c替换后的内容' 文件路径
补充:
在sed条件中是不认识变量取值的,所以要想它能够识别变量,就是把’单引号’变成”双引号”。
sed '/$x/d' test
sed "/$x/d/" test
容器迁移
迁移容器三步骤(前两步都是在原服务器上,第三步有了tar包就要去目的地服务器上运行了):
1.docker commit [容器ID] [新的容器的名称]:[容器TAG,可省略不写] -- 将容器打包成镜像(包括容器内所有文件和已安装的软件)
2.docker save -o [tar的位置,若省略不写的就在C盘的user目录下][新镜像的名称.tar] [原镜像的名称] -- 将镜像打成tar包
3.docker load -i [tar包的绝对路径] -- 将tar包打成镜像
有了镜像后就可以构建容器了!
使用登录docker hub
docker login
输入id和密码 切记不要输入邮箱
退出 docker logout
docker tag ubuntu:18.04 username/ubuntu:18.04
docker image ls
docker push username/ubuntu:18.04
删除容器了才能删除images
查看容器状态
docker ps -a
删除所有退出的容器
docker rm $(docker ps -a -q)
docker images
docker rmi centos/yum