1. 启动容器并获取镜像
docker run -d -p 80:80 httpd #后台启动一个httpd的服务
docker ps -a # 查看
2. 删除容器
删除所有的容器
docker rm -f `docker ps -qa`
批量删除已关闭
docker rm -v $(docker ps -aq -f status=exited)
删除指定容器
docker rm -f 容器ID/name
3. 基于centos6.9开启一个容器,取名test,
docker run -it --name "test" centos:6.9
4. 将test容器制作为一个镜像
docker commit test wzj/centos:6.9
5. 制作带有centos7.5+vim+net-tools+iproute+sshd的镜像
1. 启动并进入一个新容器
docker run -it --name "tests" centos:7.5.1804
2. 使用ftp优化yum源, ftp的路径不要错了
mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
3. 安装ssh
yum install -y vim net-tools iproute openssh-*
4. 启动ssh
yum install -y sed
mkdir /var/run/sshd
echo 'UseDNS no' >> /etc/ssh/sshd_config
sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
echo 'root:123456' | chpasswd
/usr/bin/ssh-keygen -A
/usr/sbin/sshd -D
以上操作做完后会一直不退出, 按住以下键退至宿主机并不关闭容器
ctrl p q
5. 基于这个容器制作镜像
docker commit tests wzj/centos7_sshd:v2
6. dockerfile的应用
我们发现, 安装完ssh的容器制作的镜像还是很大, 使用dockerfile, 记录操作步骤, 就可以了
vim dockerfile
FROM centos:7.5.1804
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub/centos7\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN yum install net-tools* -y
RUN yum install iproute-* -y
RUN mkdir /var/run/sshd
RUN echo 'UseDNS no' >> /etc/ssh/sshd_config
RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
RUN echo 'root:123456' | chpasswd
RUN /usr/bin/ssh-keygen -A
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
这样运行dockerfile就可以搭建好容器环境了
docker build -t "oldguo/centos7_sshd:v3" /opt/dockerfile
7. 数据卷的使用(持久化)
7.1 首先利用dockerfile起一个容器并安装运行Redis
创建一个dockfile目录,将宿主机的Redis安装目录压缩放到这里,
dockerfile文件放这里, Redis配置文件放这里
mkdir -p /opt/dockfile/redis3
tar -cvf redis-3.2.10.tar redis-3.2.10
redis的配置文件
vim redis.conf
port 6379
logfile /test/redis.log
dir /test/
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync always
requirepass 123
写dockerfile
vim dockerfile
FROM centos:7.5.1804
VOLUME ["/test"]
COPY redis-3.2.10.tar /data/
COPY redis.conf /test/
RUN tar -xf /data/redis-3.2.10.tar -C /data/
EXPOSE 6379
CMD ["/data/redis-3.2.10/src/redis-server","/test/redis.conf"]
运行docker, 后面有一个点不能少, 代表dockerfile就在当前目录下
docker build -t "wzj/centos_redis:v1" .
运行装好Redis的容器
docker run -d -p 16380:6379 -v /opt/Registry:/var/lib/registry wzj/centos_redis:v1
查看数据所在目录
docker inspect 容器ID/容器名
这里面的Mounts下面的Source值为路径,cd进去就可以了
7. 容器管理
容器的类型
工具类:会进入到容器中, 例如要使用vim
docker run -it --name="test_vim" 3fe2fe0dab2e /bin/bash
服务类:只需要后台启一个服务就行,不用进入容器,例如开启一个nginx服务
docker run -d -p 8080:80 --name="discuz" nginx:1.14
查看所有容器 docker ps -a
关闭一个容器 docker stop centos6.9
强制关闭一个容器 docker kill nginx
启动一个关闭了的容器 docker start -i centos6.9
重启一个容器 docker restart centos6.9
进入启动的容器: docker attach 容器ID/name
查看容器的详细信息 docker inspect 容器ID/name
查看容器中运行的进程信息 docker top 容器ID/name
8. 制作私有Registry仓库
1.配置私有仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/Registry:/var/lib/registry registry
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.100:5000"]
}
systemctl restart docker
2. 制作本地镜像并push
docker tag nginx 10.0.0.100:5000/oldguo/nginx:v1
docker images
docker push 10.0.0.100:5000/oldguo/nginx:v1
3. 异地进行pull镜像
docker pull 10.0.0.100:5000/oldguo/nginx:v1