Docker常用命令&操作&下载加速

一、安装docker

1、检查内核版本,必须是3.10及以上
uname -r
2、安装docker
方式一:yum install docker
方式二:
	$ curl -fsSL get.docker.com -o get-docker.sh
	$ sudo sh get-docker.sh --mirror Aliyun
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker

二、常用命令&操作

1、镜像操作

操作命令说明
检索docker search 关键字 eg:docker search redis我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表docker images查看所有本地镜像
删除docker rmi image-id删除指定的本地镜像

2、容器操作

软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);

步骤:

1、搜索镜像
[root@localhost ~]# docker search tomcat
2、拉取镜像
[root@localhost ~]# docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
4、docker ps  
查看运行中的容器
5、 停止运行中的容器
docker stop  容器的id
6、查看所有的容器
docker ps -a
7、启动容器
docker start 容器id
8、删除一个容器
 docker rm 容器id
9、启动一个做了端口映射的tomcat
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs container-name/container-id

更多命令参看参考每一个镜像的文档

3、安装MySQL示例

docker pull mysql

错误的启动

[root@localhost ~]# docker run --name mysql01 -d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846

mysql退出了
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
42f09819908b        mysql               "docker-entrypoint.sh"   34 seconds ago      Exited (1) 33 seconds ago                            mysql01
538bde63e500        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       compassionate_
goldstine
c4f1ac60b3fc        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       lonely_fermi
81ec743a5271        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       sick_ramanujan


//错误日志
[root@localhost ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个

正确的启动

[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b874c56bec49        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01

做了端口映射

[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02

三、Docker镜像下载加速

1、 进入docker在本机的配置目录,

cd /etc/docker

2、 找到daemon.json文件,没有新建

vi daemon.json

# 添加阿里云代理
{
    "registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]    
}

3、执行重启docker命令:

service docker restart

四、Docker镜像制作

1、 通过dockerfile制作docker

FROM ubuntu:xenial

# 定义变量 # nginx端口默认值
ENV NGINX_PORT=8888 \  
     # fastdfs端口默认值
    FDFS_PORT=22122 \  
	# tracker/storage 数据和日志目录地址
	FDFS_PATH=/home/face/fdfs \  	
	#主机ip
	HOST_IP=49.233.163.26 \  
	#组名
	GROUP_NAME=group1  
	

# 更新数据源
WORKDIR /etc/apt
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> sources.list \
	&& echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> sources.list \
	&& apt-get update

# 安装依赖
RUN apt-get install make gcc libpcre3-dev zlib1g-dev --assume-yes bash vim net-tools
 
 # 创建目录
RUN mkdir -p /home/face/fdfs
 
WORKDIR /usr/local/src
#复制并解压缩各种源码
ADD fastdfs-6.06.tar.gz /usr/local/src 
ADD fastdfs-nginx-module-1.22.tar.gz /usr/local/src 
ADD	libfastcommon-1.0.43.tar.gz /usr/local/src 
ADD	nginx-1.17.9.tar.gz /usr/local/src
 
# 安装 libfastcommon
WORKDIR /usr/local/src/libfastcommon-1.0.43
RUN ./make.sh && ./make.sh install
 
# 安装 FastDFS / 修改fdfs配置文件
WORKDIR /usr/local/src/fastdfs-6.06/
RUN ./make.sh && ./make.sh install \
	&& cp /usr/local/src/fastdfs-6.06/conf/*  /etc/fdfs/ \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/storage.conf \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/tracker.conf \
	&& sed -i "s|/home/yuqing/fastdfs|${FDFS_PATH}|g" /etc/fdfs/client.conf  \
	&& sed -i "s|http.server_port = .*$|http.server_port=${NGINX_PORT}|g" /etc/fdfs/storage.conf \
	&& sed -i "s|group_name = .*$|group_name=${GROUP_NAME}|g"  /etc/fdfs/storage.conf

#防盗链功能 
#RUN sed -i "s|http.anti_steal.check_token = false |http.anti_steal.check_token=${CKECK_TOKEN}|g"  /etc/fdfs/http.conf \
#     && sed -i "s|FastDFS1234567890|${SECRET_KEY}|g"  /etc/fdfs/http.conf \
#	 && sed -i "s|/home/yuqing/fastdfs/conf/anti-steal.jpg|${CKECK_FAIL}|g"  /etc/fdfs/http.conf \ 
 
 
#配置fastdfs-nginx-module
RUN cp /usr/local/src/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf  /etc/fdfs/ \
    && sed -i "s|group_name=.*$|group_name=${GROUP_NAME}|g" /etc/fdfs/mod_fastdfs.conf \
	&& sed -i "s|url_have_group_name =.*$|url_have_group_name=true|g"  /etc/fdfs/mod_fastdfs.conf \
	&& sed -i "s|store_path0=.*$|store_path0=${FDFS_PATH}|g" /etc/fdfs/mod_fastdfs.conf 


#安装nginx
WORKDIR /usr/local/src/nginx-1.17.9
RUN ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.22/src/ \
	&& make && make install 

#nginx配置文件上传
ADD nginx.conf /usr/local/nginx/conf
RUN sed -i "s|listen.*$|listen ${NGINX_PORT};|g" /usr/local/nginx/conf/nginx.conf     

#启动命令
ADD start.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/start.sh"]

#暴漏端口 
WORKDIR /  
EXPOSE ${NGINX_PORT} ${FDFS_PORT} 23000

start.sh

#!/bin/sh
chmod 755 /etc/init.d/fdfs_trackerd
chmod 755 /etc/init.d/fdfs_storaged

sed -i "s|tracker_server = .*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/storage.conf
sed -i "s|tracker_server = .*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/client.conf
sed -i "s|tracker_server=.*$|tracker_server=$HOST_IP:$FDFS_PORT|g" /etc/fdfs/mod_fastdfs.conf

/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
/usr/local/nginx/sbin/nginx -g 'daemon off;'

dokcer-compose.xml

version: '3.1'
services:
  fastdfs:
    build: env
    tty: true
    # 该容器是否需要开机启动+自动重启
    restart: always
    container_name: fastdfs
    image: newland/fastdfs:6.06
    # 将本地目录映射到docker容器内的fastdfs数据存储目录
    volumes:
      - ./fdfs:/home/face/fdfs
    network_mode: host

2、构建过程

#开启执行权限
chmod +x start.sh
# 构建建启动容器,通过dokcer-compose文件
dokcer-compose up -d  
# 构建建镜像通过 dokcer run 启动
docker build -t newland/fdfs .
# -e 对应的环境变量,只对sh里面起作用
docker  run  --name  fdfs11 -d  -v /usr/local/docker/fastdfs4/fdfs:/home/face/fdfs -e HOST_IP=49.233.163.26   -p 8889:8888 -p 22122:22122 -p 23000:23000 newland/fdfs 
#进入容器命令
docker exec -it fdfs11 /bin/bash  
#查看环境变量
docker exec fdfs11 env  
#如果出现仓库镜像存在,需要卸载存在镜像
dokcer-compose down

3、镜像仓库

#远程仓库操作
# 修改tagh和仓库名一致
docker tag fdfs jeffreyliu007/fdfs  
#上传
docker push jeffreyliu007/fdfs
#拉取
docker pull jeffreyliu007/fdfs

#本地镜像操作
#保存到本地
docker save -o fdfs.tar newland/fdfs
#导入
docker load < fdfs.tar
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值